Skip to content

Private cloud

Objetivos

  1. Entender os conceitos básicos de Private Cloud.
  2. Aprofundar conceitos sobre redes virtuais SDN.

Pré-requisitos:

  1. Terminar de Ler o capítulo (Juju)[https://juju.is/docs/juju/juju-client]
  2. Realizar a leitura sobre o Openstack. [https://www.openstack.org/].
  3. Realizar a leitura sobre o Openstack. [Jackson et al - Cap. 1 até Cap. 5]
Info

DIVISÃO DO ROTEIRO O Roteiro é dividido em 2 partes principais.

  • Criando a Infraestrutura (Nuvem privada Openstack) siga este Link:
  • Uso da Infraestrutura: Aplicacoes nas VMs da Nuvem Openstack

Criando a Infraestrutura (Nuvem VM) - Servidor Virtual Privado (VPS)

Nesse roteiro vamos instalar um conjunto de aplicações denominado Openstack que vai permitir distribuirmos virtual machines usando os nós disponíveis no kit.

Até o momento usamos o mass para orquestrar o bare metal e o juju para cuidar do deployment de aplicacoes (exemplo grafana e prometheus). E agora vamos utilizar o Openstack para criar VMs e distribuir os serviços em todas as máquinas kit com maior eficiencia.

Confira se os seus recursos fisicos seguem a tabela abaixo, volte ao dashboard do MAAS e crie as Tags conforme descrito

Node name Tag(s) CPUs NICs RAM_minima Disks Storage
node1.maas controller 2 1 12.0 1 80.0
node2.maas reserva 2 1 24.0 1 80.0
node3.maas compute 2 1 32.0 1 80.0
node4.maas compute 2 1 32.0 1 80.0
node4.maas compute 2 1 32.0 1 80.0

Implantação do OpenStack:

  • Siga o passo a passo do Link abaixo, porém não não instale nada no server2 que deve estar reservado(alocado), altere o que for necessário para utilizar o Node server 1 como controller, o node server 2 como Reserva e os nodes server 3,4 e 5 como compute (onde o Openstack será instalado).
  • Rode 1 comando por vez e siga o status para ver se a implantação está correndo como o esperado
  • $ watch -n 2 -c "juju status --color"

(Implantação do OpenStack)[https://docs.openstack.org/project-deploy-guide/charm-deployment-guide/latest/install-openstack.html#openstack-release]

Warning

Provavelmente ocorreu um erro no deploy. ??? Conceito importante: Ao contrário do Ansible, Juju necessita de uma máquina exclusiva para controlar todo o deploy. Essa máquina é alocada automaticamente durante o bootstrap e controlará todo o deploy. Logo você precisa fazer o bootstrap de um novo controlador no server1.

  • Vocês já sabem o que fazer agora: utilizar o comando abaixo para ficar de olho no status do Juju:
  • $ watch -n 2 -c "juju status --color"

Resultados finais e próximos passos

Depois que todos os aplicativos foram implantados e as relações entre eles foram adicionadas, precisamos esperar a saída do status juju se estabilizar. Os resultados finais devem ser desprovidos de quaisquer mensagens de erro. Um exemplo de saída (incluindo relações) para uma implantação de nuvem bem-sucedida é fornecido (aqui)[https://docs.openstack.org/project-deploy-guide/charm-deployment-guide/latest/install-openstack-juju-status.html#install-openstack-juju-status] .

Você implantou o OpenStack com sucesso usando Juju e MAAS. O próximo passo é tornar a nuvem funcional para os usuários. Isso envolverá a configuração de redes, imagens e um ambiente de usuário.

Info

Dica para abrir o cofre (Git do Vault)[https://opendev.org/openstack/charm-vault/src/branch/stable/1.8/src/README.md#post-deployment-tasks] * Instalando o cli do Vault e configurando-o: * $ sudo snap install vault * $ export VAULT_ADDR="http://<IP of vault unit>:8200" * Gerando : * $ vault operator init -key-shares=5 -key-threshold=3 * Vocês receberão 5 Unseal Keys e 1 Initial Root Token. Copie e reserve. * Removendo o selo, repita a operação com 3 keys diferentes: * $ vault operator unseal <Unseal Key> * Autorizando o charm (esse passo precisa ser feito em 50 minutos): * $ export VAULT_TOKEN=<Initial Root Token> * $ vault token create -ttl=50m * anote o token gerado pelo comando, * juju run vault/leader authorize-charm token=token * Agora você tem 50 minutos para descobrir na documentacao como fazer para gerar o TLS do vault (2 comandos)

Configurando o Openstack

Chegou a hora de configurar o serviço que controla as VMs (Nova), os volumes de disco (Cinder) e a estrutura de rede virtual (Neutron). O primeiro passo é carregar as variáveis de ambiente e autenticar (Keystone) no sistema.

Ainda, montaremos o nosso servidor de imagens (Glance), que utiliza o Object Storage (Ceph) para armazenamento. O sistema ainda conta com um dashboard (Horizon), um cluster de banco de dados (Mysql Inno Cluster) e um servidor de filas (RabbitMQ) como apoio.

Usando como base a página do no site, temos a documentação abaixo do roteiro 3 LEIA O DOCUMENTO INTEIRO ANTES DE INICIAR OS COMANDOS.

Acesse o Horizon (dashboard) como administrador, e mantenha ele aberto durante todo o setup do openstack (para ver as mudanças acontecendo!)

Dica

O Domain name é : admin_domain

Exercise

CheckPoint-1

  1. De um print das Telas abaixo:
  2. Do Status do JUJU
  3. Do Dashboard do MAAS com as máquinas.
  4. Da aba compute overview no OpenStack.
  5. Da aba compute instances no OpenStack.
  6. Da aba network topology no OpenStack.

Pense na estrutura de rede do seu KIT (Altere os Ips dos exemplos de comandos caso necessário)

  • Prestem muita atenção nos passos! Não copie e cole comandos sem verificar os argumentos. Começe a partir da seção Install the OpenStack clients
  • Instale o client do Openstack no maas via snap.
  • Carregue as credenciais em openrc:
  • $ source openstack-base/openrc
  • Dica se o erro abaixo ocorrer:
  • ERROR option provided but not defined: --unit Using Keystone v3 API ERROR option provided but not defined: --unit ERROR option provided but not defined: --unit
  • Faça ajustes nos seguintes arquivos "openrcv3_domain,openrcv3_project,openrc" trocando todas ocorrências de "juju run" por " "juju exec";
  • Após fazer esse ajustes rode novamente o comando source.
  • $ openstack service list
  • Faça pequenos ajustes na rede:
    • $ juju config neutron-api enable-ml2-dns="true"
    • $ juju config neutron-api-plugin-ovn dns-servers="X.X.0.1"
  • Importe a imagem do Ubuntu Jammy. Você precisará procurar esta imagem.
  • Configure a rede externa. Usar uma faixa de alocação entre X.X.7.0 e X.X.8.255.

A partir de agora você criara uma rede interna na sua núvem privada, use os valores dados abaixo.

  • Crie a rede interna e o roteador. Usar a subnet 192.169.0.0/24. Não use DNS.
  • Analise o comando:
    • $ openstack flavor create --help
  • Crie os flavors (instance type) - SEM ephemeral disk:
    • m1.tiny: 1 vcpu/1Gb RAM/20Gb disk
    • m1.small: 1 vcpus/2Gb RAM/20Gb disk
    • m1.medium: 2 vcpus/4Gb RAM/20Gb disk
    • m1.large: 4 vcpus/8Gb RAM/20Gb disk
  • Importe (upload) um key-pair, usando public key (id_rsa.pub) do próprio MaaS.
  • Acesse o Horizon (dashboard) como administrador:
  • Adicione a liberação do SSH e ALL ICMP no security group default.
  • Verifique se a topologia de rede faz sentido. Ela deve ser semelhante ao projeto da sua rede física, porém com mais um nível dentro. Essa rede não existe fisicamente, é tudo virtual.
  • Dispare uma instância m1.tiny com o nome client e sem Novo Volume.
  • Aloque um floating IP para a instância.
  • Teste a conexão SSH! Em caso de erro, volte e verifique se as etapas anteriores estão corretas.

Exercise

CheckPoint-2

  1. De um print das Telas abaixo:
  2. Do Dashboard do MAAS com as máquinas.
  3. Da aba compute overview no OpenStack.
  4. Da aba compute instances no OpenStack.
  5. Da aba network topology no OpenStack.
  6. Enumere as diferencas encontradas entre os prints das telas no Checkpoint1 e o Checkpoint-2.
  7. Explique como cada recurso foi criado.

Escalando os nós

Vamos adicionar o openstack no cluster como nó de computing e block storage.

  • Verfique no Dashboard do MaaS se ainda há uma máquina disponível (máquina que reservamos/allocated). Faça o release da máquina que está ALLOCATED (cuidado para não errar!)
  • Instale o hypervisor, realizando o deploy na máquina: $ juju add-unit nova-compute
  • Anote o número da máquina adicionada no status e instale o block storage: $ juju add-unit --to <machine-id> ceph-osd

Exercise

CheckPoint-3

  1. Faça um desenho de como é a sua arquitetura de rede, desde a sua conexão com o Insper até a instância alocada.

Uso da Infraestrutura:

Tarefa: Levantar a aplicação -> 2 instancias com Wordpress como aplicacao, 1 instancia com banco de dados MySQL e 1 instancia com Nginx em cima das maquinas virtuais do Openstack.

Note que agora você irá utilizar pequenas partes da maquina fisica, virtualizando suas maquinas, do mesmo modo que é feito em uma nuvem.

TOPOLOGIA:

Imagem-Topologia

Exercise

  1. Escreva um relatório dos passos utilizados.(pode ser digitado no word!!!!!!!)
  2. Anexe fotos e/ou diagramas contendo: arquitetura de rede da sua infraestrutura dentro do Dashboard do Openstack
  3. Lista de VMs utilizadas com nome e IPs alocados,
  4. Print do Dashboard do Wordpress conectado via máquina Nginx/LB.
  5. 4 Prints, cada um demonstrando em qual server(maquina fisica) cada instancia foi alocado pelo OpenStack.