Private cloud¶
Objetivos
- Entender os conceitos básicos de Private Cloud.
- Aprofundar conceitos sobre redes virtuais SDN.
Pré-requisitos:
- Terminar de Ler o capítulo (Juju)[https://juju.is/docs/juju/juju-client]
- Realizar a leitura sobre o Openstack. [https://www.openstack.org/].
- 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
- De um print das Telas abaixo:
- Do Status do JUJU
- Do Dashboard do MAAS com as máquinas.
- Da aba compute overview no OpenStack.
- Da aba compute instances no OpenStack.
- 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
- De um print das Telas abaixo:
- Do Dashboard do MAAS com as máquinas.
- Da aba compute overview no OpenStack.
- Da aba compute instances no OpenStack.
- Da aba network topology no OpenStack.
- Enumere as diferencas encontradas entre os prints das telas no Checkpoint1 e o Checkpoint-2.
- 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
- 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:
Exercise
- Escreva um relatório dos passos utilizados.(pode ser digitado no word!!!!!!!)
- Anexe fotos e/ou diagramas contendo: arquitetura de rede da sua infraestrutura dentro do Dashboard do Openstack
- Lista de VMs utilizadas com nome e IPs alocados,
- Print do Dashboard do Wordpress conectado via máquina Nginx/LB.
- 4 Prints, cada um demonstrando em qual server(maquina fisica) cada instancia foi alocado pelo OpenStack.