Nebulosa aberta. Notas curtas

Nebulosa aberta. Notas curtas

Olá a todos. Este artigo foi escrito para quem ainda está dividido entre a escolha de plataformas de virtualização e depois de ler o artigo da série “Instalamos o proxmox e no geral está tudo bem, 6 anos de uptime sem interrupção”. Mas depois de instalar uma ou outra solução pronta para uso, surge a pergunta: como posso corrigir isso aqui, para que o monitoramento seja mais compreensível, e aqui, para controlar os backups…. E aí chega a hora e você percebe que quer algo mais funcional, ou quer que tudo dentro do seu sistema fique claro, e não essa caixa preta, ou quer usar algo mais do que um hipervisor e um monte de máquinas virtuais. Este artigo conterá algumas reflexões e práticas baseadas na plataforma Opennebula - eu a escolhi porque. não exige recursos e a arquitetura não é tão complexa.

E assim, como vemos, muitos provedores de nuvem trabalham em kvm e fazem conexões externas para controlar máquinas. É claro que grandes hosters escrevem suas próprias estruturas para infraestrutura em nuvem, o mesmo YANDEX, por exemplo. Alguém usa openstack e faz uma conexão com base nisso - SELECTEL, MAIL.RU. Mas se você tem hardware próprio e uma pequena equipe de especialistas, geralmente escolhe algo pronto - VMWARE, HYPER-V, existem licenças gratuitas e pagas, mas não é disso que estamos falando agora. Vamos falar sobre entusiastas - são aqueles que não têm medo de oferecer e experimentar algo novo, apesar do fato de a empresa ter deixado claro: “Quem fará a manutenção depois de você”, “Vamos colocar isso em produção mais tarde ? Apavorante." Mas você pode primeiro aplicar essas soluções em uma bancada de testes e, se todos gostarem, poderá levantar a questão de um maior desenvolvimento e uso em ambientes mais sérios.

Também aqui está um link para o relatório www.youtube.com/watch?v=47Mht_uoX3A de um participante ativo no desenvolvimento desta plataforma.

Talvez neste artigo algo seja supérfluo e já compreensível para um especialista experiente e, em alguns casos, não descreverei tudo porque comandos e descrições semelhantes estão disponíveis na Internet. Esta é apenas a minha experiência com esta plataforma. Espero que os participantes ativos acrescentem nos comentários o que poderia ser feito melhor e quais erros cometi. Todas as ações ocorreram em um home stand composto por 3 PCs com características distintas. Além disso, não indiquei especificamente como esse software funciona e como instalá-lo. Não, apenas experiência administrativa e os problemas que encontrei. Talvez isso seja útil para alguém de sua escolha.

Então vamos começar. Como administrador de sistema, os seguintes pontos são importantes para mim, sem os quais dificilmente usarei esta solução.

1. Repetibilidade da instalação

Existem muitas instruções para instalar o opennebula, não deve haver problemas. De versão para versão, aparecem novos recursos que nem sempre funcionarão ao passar de versão para versão.

2. Monitoramento

Monitoraremos o próprio nó, kvm e opennebula. Felizmente, já está pronto. Existem muitas opções de monitoramento de hosts Linux, o mesmo Zabbix ou exportador de nós - quem preferir - no momento eu defino como monitoramento de métricas do sistema (temperatura onde pode ser medida, consistência do array de discos), através do zabbix , e quanto às aplicações através do exportador Prometheus. Para monitoramento kvm, por exemplo, você pode pegar o projeto github.com/zhangjianweibj/prometheus-libvirt-exporter.git e configurá-lo para rodar via systemd, funciona muito bem e mostra métricas kvm, há também um painel pronto grafana.com/grafana/dashboards/12538.

Por exemplo, aqui está meu arquivo:

/etc/systemd/system/libvirtd_exporter.service
[Unit]
Description=Node Exporter

[Service]
User=node_exporter
ExecStart=/usr/sbin/prometheus-libvirt-exporter --web.listen-address=":9101"

[Install]
WantedBy=multi-user.target

E então temos 1 exportador, precisamos de um segundo para monitorar o próprio opennebula, usei este github.com/kvaps/opennebula-exporter/blob/master/opennebula_exporter

Pode ser adicionado ao normal node_exportador para monitorar o sistema o seguinte.

No arquivo node_exporter alteramos o início assim:

ExecStart=/usr/sbin/node_exporter --web.listen-address=":9102" --collector.textfile.directory=/var/lib/opennebula_exporter/textfile_collector

Crie um diretório mkdir -p /var/lib/opennebula_exporter

script bash apresentado acima, primeiro verificamos o trabalho através do console, se mostra o que precisamos (se der erro, instale o xmlstarlet), copie-o para /usr/local/bin/opennebula_exporter.sh

Adicione uma tarefa cron para cada minuto:

*/1 * * * * (/usr/local/bin/opennebula_exporter.sh > /var/lib/opennebula_exporter/textfile_collector/opennebula.prom)

As métricas começaram a aparecer, você pode pegá-las como um prometheus e construir gráficos e fazer alertas. No Grafana você pode desenhar, por exemplo, um painel tão simples.

Nebulosa aberta. Notas curtas

(está claro que aqui eu comprometo demais CPU, RAM)

Para quem ama e usa o Zabbix, existe github.com/OpenNebula/addon-zabbix

No que diz respeito ao monitoramento, o principal é que ele exista. Claro, você pode, além disso, usar as ferramentas integradas de monitoramento de máquinas virtuais e fazer upload de dados para faturamento, aqui cada um tem sua visão, ainda não comecei a trabalhar nisso mais de perto.

Ainda não comecei a registrar. A opção mais simples é adicionar td-agent para analisar o diretório /var/lib/one com expressões regulares. Por exemplo, o arquivo sunstone.log corresponde ao regexp nginx e outros arquivos que mostram o histórico de acesso à plataforma - qual a vantagem disso? Bem, por exemplo, podemos rastrear explicitamente o número de “Erro, erro” e rastrear rapidamente onde e em que nível há um mau funcionamento.

3. Cópias de segurança

Existem também projetos concluídos pagos - por exemplo, setembro wiki.sepsoftware.com/wiki/index.php/4_4_3_Tigon:OpenNebula_Backup. Aqui devemos entender que simplesmente fazer backup de uma imagem de máquina não é a mesma coisa neste caso, pois nossas máquinas virtuais devem funcionar com integração total (o mesmo arquivo de contexto que descreve as configurações de rede, nome da VM e configurações personalizadas para suas aplicações) . Portanto, aqui decidimos o que e como faremos o backup. Em alguns casos é melhor fazer cópias do que está na própria VM. E talvez você só precise fazer backup de um disco de uma determinada máquina.

Por exemplo, determinamos que todas as máquinas iniciam com imagens persistentes, portanto, após a leitura docs.opennebula.io/5.12/operation/vm_management/img_guide.html

Isso significa que primeiro podemos fazer upload da imagem da nossa VM:

onevm disk-saveas 74 3 prom.qcow2
Image ID: 77

Смотрим, под каким именем он сохранился

oneimage show 77
/var/lib/one//datastores/100/f9503161fe180658125a9b32433bf6e8
   
И далее копируем куда нам необходимо. Конечно, так себе способ. Просто хотел показать, что используя инструменты opennebula можно строить подобные решения.

Também encontrei na Internet relatório interessante e há mais um projeto tão aberto, mas há armazenamento apenas para qcow2.

Mas como todos sabemos, mais cedo ou mais tarde chega um momento em que você quer backups incrementais, aqui é mais difícil e talvez a gestão aloque dinheiro para uma solução paga, ou vá por outro caminho e entenda que aqui estamos apenas cortando recursos, e fazer backups no nível do aplicativo e adicionar vários novos nós e máquinas virtuais - sim, aqui estou dizendo que usar a nuvem apenas para lançar clusters de aplicativos e lançar o banco de dados em outra plataforma ou usar uma já pronta do fornecedor, se possível.

4. Facilidade de uso

Neste parágrafo descreverei os problemas que encontrei. Por exemplo, de acordo com imagens, como sabemos, existe persistente - quando esta imagem é montada em uma VM, todos os dados são gravados nesta imagem. E se não for persistente, a imagem será copiada para o armazenamento e os dados serão gravados no que foi copiado da imagem de origem - é assim que os modelos de modelo funcionam. Eu repetidamente causei problemas para mim mesmo ao esquecer de especificar persistente e a imagem de 200 GB foi copiada, o problema é que esse procedimento certamente não pode ser cancelado, você tem que ir até o nó e encerrar o processo “cp” atual.

Uma das desvantagens importantes é que você não pode cancelar ações simplesmente usando a interface gráfica. Ou melhor, você vai cancelá-los e ver que nada acontece e vai reiniciá-los, cancelá-los e de fato já haverá 2 cp processos que copiam a imagem.

E então se trata de entender por que o opennebula numera cada nova instância com um novo id, por exemplo, no mesmo proxmox criou uma vm com id 101, excluiu, depois você cria novamente e id 101. No opennebula isso não vai acontecer, cada nova instância será criada com um novo id e isso tem sua própria lógica - por exemplo, limpeza de dados antigos ou instalações malsucedidas.

O mesmo se aplica ao armazenamento; acima de tudo, esta plataforma visa o armazenamento centralizado. Existem complementos para uso local, mas não é disso que estamos falando neste caso. Acho que no futuro alguém escreverá um artigo sobre como conseguiu usar o armazenamento local em nós e usá-lo com sucesso na produção.

5. Máxima simplicidade

É claro que quanto mais você avança, menos pessoas irão entendê-lo.

Nas condições do meu estande - 3 nós com armazenamento NFS - tudo funciona bem. Mas se realizarmos experimentos envolvendo queda de energia, por exemplo, ao executar um snapshot e desligar a energia do nó, salvamos as configurações no banco de dados de que existe um snapshot, mas na verdade não existe (bem, todos nós entendemos que nós inicialmente escrevi o banco de dados sobre esta ação em sql , mas a operação em si não foi bem-sucedida). A vantagem é que ao criar um snapshot, um arquivo separado é formado e existe um “pai”, portanto em caso de problemas e mesmo que não funcione através do gui, podemos pegar o arquivo qcow2 e restaurá-lo separadamente docs.opennebula.io/5.8/operation/vm_management/vm_instances.html

Nas redes, infelizmente, nem tudo é tão simples. Bem, pelo menos é mais fácil do que no openstack, usei apenas vlan (802.1Q) - funciona muito bem, mas se você fizer alterações nas configurações da rede do modelo, essas configurações não serão aplicadas às máquinas já em execução, ou seja, você precisa excluir e adicionar uma placa de rede, então as novas configurações serão aplicadas.

Se você ainda quiser compará-lo com o openstack, então você pode dizer o seguinte: no opennebula não há uma definição clara de quais tecnologias usar para armazenar dados, gerenciar a rede, recursos - cada administrador decide por si o que é mais conveniente para ele.

6. Plug-ins e instalações adicionais

Afinal, pelo que entendemos, a plataforma em nuvem pode gerenciar não apenas o KVM, mas também o VMware Esxi. Infelizmente não tive pool com o Vcenter, se alguém já tentou, por favor escreva.

O suporte para outros provedores de nuvem é declarado docs.opennebula.io/5.12/advanced_components/cloud_bursting/index.html
AWS, AZUL.

Também tentei conectar o VMware Cloud do Selectel, mas nada funcionou - em geral foi bloqueado porque os fatores são muitos e não adianta escrever para o suporte técnico do provedor de hospedagem.

Além disso, agora a nova versão conta com firecracker – é o lançamento do microvm, uma espécie de chicote kvm over docker, que dá ainda mais versatilidade, segurança e aumento de produtividade porque não há necessidade de desperdiçar recursos em emulação de equipamentos. A única vantagem que vejo em relação ao Docker é que ele não ocupa um número adicional de processos e não há soquetes ocupados ao usar esta emulação, ou seja, É bem possível usá-lo como balanceador de carga (mas provavelmente vale a pena escrever um artigo separado sobre isso até que eu tenha executado todos os testes).

7. Experiência positiva de uso e depuração de erros

Queria compartilhar minhas observações sobre o trabalho, descrevi algumas delas acima, gostaria de escrever mais. Na verdade, provavelmente não sou o único que a princípio pensa que este não é o sistema certo e, em geral, tudo aqui é uma muleta - como eles trabalham com isso? Mas então vem o entendimento de que tudo é bastante lógico. Claro que não dá para agradar a todos e alguns aspectos precisam de melhorias.

Por exemplo, uma operação simples de copiar uma imagem de disco de um armazenamento de dados para outro. No meu caso, existem 2 nós com nfs, eu envio a imagem - a cópia ocorre através do frontend opennebula, embora estejamos todos acostumados com o fato de que os dados devem ser copiados diretamente entre hosts - no mesmo vmware, hyper-v estamos acostumado com isso, mas aqui para outro. Há uma abordagem diferente e uma ideologia diferente, e na versão 5.12 eles removeram o botão “migrar para o armazenamento de dados” - apenas a máquina em si é transferida, mas não o armazenamento porque significa armazenamento centralizado.

A seguir está um erro popular com vários motivos: “Erro ao implantar a máquina virtual: não foi possível criar o domínio de /var/lib/one//datastores/103/10/deployment.5” Abaixo está o principal item a ser observado.

  • Direitos de imagem para o usuário oneadmin;
  • Permissões para o usuário oneadmin executar libvirtd;
  • O armazenamento de dados está montado corretamente? Vá e verifique o caminho no próprio nó, talvez algo tenha caído;
  • Rede configurada incorretamente, ou melhor, no frontend está nas configurações de rede que a interface principal para vlan é br0, mas no nó está escrito como bridge0 - deve ser a mesma.

o armazenamento de dados do sistema armazena metadados para sua VM. Se você executar a VM com uma imagem persistente, a VM precisará ter acesso à configuração criada inicialmente no armazenamento onde você criou a VM - isso é muito importante. Portanto, ao transferir uma VM para outro armazenamento de dados, você precisa verificar tudo novamente.

8. Documentação, comunidade. Desenvolvimento adicional

E o resto, boa documentação, comunidade e o principal é que o projeto continue vivo no futuro.

Em geral está tudo muito bem documentado e mesmo utilizando uma fonte oficial não será problema instalar e encontrar respostas às dúvidas.

Comunidade, ativa. Publica diversas soluções prontas que você pode usar em suas instalações.

No momento, algumas políticas da empresa foram alteradas desde 5.12 forum.opennebula.io/t/towards-a-stronger-opennebula-community/8506/14 Será interessante ver como o projeto se desenvolve. No início, indiquei especificamente alguns dos fornecedores que utilizam suas soluções e o que o setor oferece. Claro, não há uma resposta clara sobre o que usar. Mas para organizações menores, manter sua pequena nuvem privada pode não ser tão caro quanto parece. O principal é saber exatamente o que você precisa.

Como resultado, independentemente do que você escolher como sistema em nuvem, você não deve se limitar a um produto. Se tiver tempo, vale a pena dar uma olhada em outras soluções mais abertas.

Há um bom papo t.me/opennebula Eles ajudam ativamente e não mandam você procurar uma solução para o problema no Google. Junte-se a nós.

Fonte: habr.com

Adicionar um comentário