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 instale nada no server2 que deve estar reservado(alocado), altere os comandos que forem necessários 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 tenha CALMA!!! 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 guarde as hashs geradas.
-
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 -> LINK SOMENTE para referencia: link¶
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 o link de referência, e a documentação oficial para consulta, abaixo do roteiro 3 (LEIA O DOCUMENTO INTEIRO ANTES DE INICIAR OS COMANDOS).¶
Passo-1: Criar arquivo opnerc¶
Passo-2: 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.
Passo-3: 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.
- Instale o client do Openstack no maas via snap.
-
Carregue as credenciais em openrc:
-
$ source openrc
-
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="172.16.0.1"
-
Importe a imagem do Ubuntu Jammy. Você precisará procurar esta imagem.
- Configure a rede externa. Usar uma faixa de alocação entre 172.16.7.0 e 172.16.8.255
Passo-4: 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.
Passo-5: Escalando os nós¶
No OpenStack, escalar os nós de configuração é essencial para melhorar a capacidade, a resiliência e o desempenho dos serviços em um ambiente de nuvem. Ao adicionar novos nós de computing e block storage, a infraestrutura ganha flexibilidade para lidar com o aumento de carga e a demanda por recursos.
Benefícios da Escala dos Nós de Configuração Aumento de Capacidade de Processamento: Ao escalar os nós de computing, é possível executar mais instâncias de máquinas virtuais (VMs) simultaneamente, o que permite atender a mais usuários e aplicações. Esse aumento de capacidade é fundamental para garantir o atendimento à demanda, especialmente em ambientes que precisam se adaptar rapidamente a flutuações de uso.
Alta Disponibilidade e Tolerância a Falhas: A distribuição de serviços críticos, como computing e block storage, em múltiplos nós contribui para uma arquitetura mais robusta. Com mais nós, falhas em uma máquina têm impacto reduzido no sistema geral, uma vez que as cargas podem ser automaticamente redirecionadas para outros nós ativos.
Melhoria de Desempenho e Latência Reduzida: Com mais nós de armazenamento e computação, os dados e os processos estão fisicamente mais próximos dos recursos e das VMs que os utilizam, reduzindo latências de acesso e melhorando a eficiência geral do sistema.
Escalabilidade Horizontal: Em vez de aumentar a capacidade de uma única máquina (escalabilidade vertical), adicionar novos nós permite uma escalabilidade horizontal, que é mais econômica e eficiente em termos de recursos, além de ser mais fácil de gerenciar. OpenStack é ideal para esse tipo de escalabilidade, pois os serviços de orquestração como Nova e Ceph distribuem automaticamente as cargas entre os novos nós.
Nesse caso, poderíamos integrar todos os dispositivos NUC disponíveis no laboratório de redes (todos os Kits da sala) ao nosso ambiente MaaS, expandindo a infraestrutura do OpenStack. Com isso, cada NUC se tornaria um nó adicional na infraestrutura, ampliando os recursos de computação e armazenamento de maneira eficiente e escalável. Dessa forma, o MaaS gerenciaria todos os NUCs, e o OpenStack utilizaria esses nós para distribuir a carga, proporcionando maior capacidade e resiliência ao sistema.
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.