
Olá. Este artigo foi escrito para aqueles que ainda estão com pressa entre a escolha de plataformas de virtualização e depois de ler um artigo da série "Instalamos o proxmox e está tudo bem em geral, 6 anos de uptime não é uma lacuna única." Mas depois de instalar uma ou outra solução in a box, surge a pergunta, como posso consertar aqui, para que o monitoramento seja mais compreensível e aqui, para controlar os backups…. E então chega a hora e você entende que quer algo mais funcional, bem, ou quer que tudo fique claro dentro do seu sistema, e não essa caixa preta, ou quer usar algo mais do que um hipervisor e um monte de máquinas virtuais. Neste artigo, haverá um pouco de reflexão e prática com base na plataforma Opennebula - eu a escolhi. não exige recursos e a arquitetura não é tão complicada.
E assim, como podemos ver, muitos provedores de nuvem trabalham em kvm e fazem conexões externas para controlar máquinas. É claro que grandes hosters gravam suas conexões para infraestrutura em nuvem, o mesmo YANDEX por exemplo. Alguém usa openstack e faz uma ligação com base nisso - SELECTEL, MAIL.RU. Mas se você tem seu próprio hardware e uma pequena equipe de especialistas, costuma escolher algo já pronto - VMWARE, HYPER-V, existem licenças gratuitas e pagas, mas agora não é isso. Vamos falar sobre entusiastas - estes são aqueles que não têm medo de sugerir e tentar algo novo, apesar do fato de que a empresa deixou bem claro “Quem vai servir depois de você?” “E vamos colocá-lo em produção mais tarde? Assustador." Mas, afinal, você pode primeiro aplicar essas soluções em uma bancada de teste e, se todos gostarem,então, a questão do desenvolvimento e uso em ambientes mais sérios pode ser levantada.
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á claro para um especialista experiente, e em alguns casos não descreverei tudo, pois tais comandos e descrições estão na rede. Aqui está apenas minha experiência com esta plataforma. Espero que os participantes ativos acrescentem nos comentários o que poderia ser feito melhor e os erros que cometi. Todas as ações ocorreram em um home stand, composto por 3 PCs com características diferentes. Além disso, não especifiquei especificamente como esse software funciona e como instalá-lo. Não, apenas a experiência de administração e os problemas que encontrei. Talvez alguém ache útil na escolha.
E então, vamos começar. Como administrador do sistema, os seguintes pontos são importantes para mim, sem os quais dificilmente usarei esta solução.
1. Repetibilidade da instalação
Existem toneladas de instruções para instalar opennebula, então não deve haver problema. De versão para versão, novos recursos aparecem que nem sempre podem ser ganhos ao mudar de uma versão para outra.
2. Monitoramento
Vamos monitorar o próprio nó, kvm e opennebula. O bom já está aí. Existem muitas opções de monitoramento de hosts linux, o mesmo zabbix ou node exportador - quem quiser - no momento eu defino para que o monitoramento das métricas do sistema (temperatura onde pode ser medida, a consistência do array de disco), através do zabbix, mas quanto pedidos por meio do exportador para a Prometheus. Para monitorar kvm, por exemplo, você pode pegar o projeto github.com/zhangjianweibj/prometheus-libvirt-exporter.git e colocar o lançamento através do systemd, ele funciona muito bem e mostra métricas kvm, há também um painel pronto grafana.com/grafana/dashboards/12538 .
Por exemplo, este é 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 nós temos 1 exportador, precisamos de um segundo para monitorar a própria opennebula, eu usei este github.com/kvaps/opennebula-exporter/blob/master/opennebula_exporter
Você pode adicionar o seguinte a um node_exporter regular para monitorar o sistema.
No arquivo para node_exporter, altere o início desta maneira:
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
bash script apresentado acima, primeiro verifique o trabalho através do console, se ele mostra o que é necessário (se der um erro, coloque xmlstarlet), copie-o para /usr/local/bin/opennebula_exporter.sh
Adicionar a Tarefa CZK para cada minuto:
*/1 * * * * (/usr/local/bin/opennebula_exporter.sh > /var/lib/opennebula_exporter/textfile_collector/opennebula.prom)
Métricas começaram a aparecer, você pode pegá-las com um prometheus e construir gráficos e fazer alertas. Por exemplo, você pode desenhar um painel simples em grafan.

(você pode ver que aqui eu supercommiti cpu, ram)
Para quem ama e usa zabbiks, tem github.com/OpenNebula/addon-zabbix
Monitorando tudo, o principal é isso. Claro, você pode, além disso, usar as ferramentas de monitoramento integradas para máquinas virtuais e fazer upload de dados para o faturamento, aqui cada um tem sua própria visão, até que eles entendam mais de perto.
Eu não comecei a registrar ainda. A opção mais fácil é adicionar td-agent para analisar o diretório / var / lib / one com expressões regulares. Por exemplo, o arquivo sunstone.log é adequado para regexp nginx e outros arquivos que mostram o histórico de chamadas para a plataforma - qual é a vantagem? 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. Backups
Também existem projetos dopados pagos - por exemplo sep wiki.sepsoftware.com/wiki/index.php/4_4_3_Tigon: OpenNebula_Backup. Aqui devemos entender que apenas fazer backup da imagem da máquina, neste caso, não é a mesma coisa, pois nossas máquinas virtuais devem trabalhar com integração total (o mesmo contexto de arquivo, que descreve as configurações de rede, nome de vm e configurações personalizadas para seus aplicativos). 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 desta máquina.
Por exemplo, decidimos que todas as máquinas são iniciadas com imagens persistentes, portanto, depois de ler docs.opennebula.io/5.12/operation/vm_management/img_guide.html,
então primeiro podemos descarregar a imagem de nossa vm:
onevm disk-saveas 74 3 prom.qcow2
Image ID: 77
,
oneimage show 77
/var/lib/one//datastores/100/f9503161fe180658125a9b32433bf6e8
. , . , opennebula .
Também na vastidão da rede achei um relatório interessante e também existe um projeto tão aberto , mas aqui apenas para armazenamento qcow2.
Mas como todos sabemos, mais cedo ou mais tarde chega um momento em que queremos backups incrementais, é mais difícil aqui 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 redundando em nível de aplicativo e adicionar uma série de novos nós e máquinas virtuais - sim, aqui, eu digo que usar a nuvem é puramente para iniciar clusters de aplicativos e executar o banco de dados em outra plataforma ou pegar um já pronto do fornecedor, se possível.
4. Facilidade de uso
Neste parágrafo, descreverei os problemas que encontrei. Por exemplo, por imagens, como sabemos, é persistente - quando essa imagem é montada em vm, todos os dados são gravados nessa imagem. E se não persistente, a imagem é copiada para o armazenamento e os dados são gravados no que foi copiado da imagem original - é assim que os modelos de modelo funcionam. Repetidamente ele fez problemas para si mesmo que esqueceu de especificar persistent e a imagem de 200 GB foi copiada, o problema é que com certeza esse procedimento não pode ser cancelado, você tem que ir ao nó e pregar o processo "cp" atual.
Uma das principais desvantagens é que você não pode desfazer ações simplesmente usando a interface do usuário. Em vez disso, você os cancela e vê que nada acontece e começa de novo, cancela e de fato já haverá 2 processos cp que copiam a imagem.
E então se trata de entender porque opennebula cada nova instância numera um novo id, por exemplo, no mesmo proxmox criou um vm com id 101, excluiu, então você cria id 101 novamente. Em 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, limpar dados antigos ou instalações malsucedidas.
O mesmo vale para o armazenamento, acima de tudo, essa plataforma é voltada para o armazenamento centralizado. Existem addons para usar o local, mas, neste caso, não é sobre isso. Acho que no futuro alguém escreverá um artigo sobre como foi possível 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 o compreenderão.
Nas condições do meu estande - 3 nós com armazenamento NFS - tudo funciona bem. Mas se conduzirmos experimentos para desligar a energia, por exemplo, ao iniciar um instantâneo e desligar o nó, salvamos as configurações no banco de dados, que é um instantâneo, mas na verdade não é (bem, todos nós entendemos que originalmente escrevemos 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 da gui, podemos pegar o arquivo qcow2 e recuperar separadamente docs.opennebula.io/5.8/operation/vm_management/vm_instances .html
Infelizmente, nem tudo é tão simples nas redes. Bem, pelo menos é mais fácil do que no openstack, usei apenas vlan (802.1Q) - funciona bem, mas se você fizer alterações nas configurações da rede do template, então essas configurações não serão aplicadas em máquinas já em execução, ou seja, você precisa deletar e adicionar a rede mapa, então as novas configurações são aplicadas.
Se você ainda quer comparar com o openstack, então podemos dizer que no opennebula não existe uma definição clara de quais tecnologias usar para armazenar dados, gerenciar uma rede, recursos - cada administrador decide por si mesmo como é mais conveniente para ele.
6. Plugins e instalações adicionais
Afinal, como entendemos, a plataforma em nuvem pode gerenciar não apenas kvm, mas também vmware esxi. Infelizmente, eu não tinha uma piscina com o Vcenter, se alguém tentasse escrever.
Suportado por outros provedores de nuvem docs.opennebula.io/5.12/advanced_components/cloud_bursting/index.html
AWS, AZURE.
Também tentei aparafusar o Vmware Cloud do seletor, mas nada funcionou - em geral, marquei porque são muitos fatores, e não adianta escrever para o suporte técnico do provedor de hospedagem.
Além disso, agora na nova versão há um firecracker - trata-se do lançamento de um microvm, como o kvm binding over docker, que dá ainda mais versatilidade, segurança e aumento de produtividade, já que não há necessidade de gastar recursos em emulação de hardware. Vejo apenas uma vantagem em relação ao docker no fato de que ele não leva 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 um balanceador de carga (mas provavelmente vale a pena escrever um artigo separado sobre isso, até que você tenha concluído todos os testes ao máximo).
7. Experiência positiva de uso e depuração de erros
Queria compartilhar minhas observações sobre o trabalho, descrevi parte dele acima, quero escrever mais. Na verdade, provavelmente eu não sou o único que a princípio pensa que este não é o sistema certo e, em geral, tudo são muletas aqui - como geralmente funcionam com isso? Mas então vem o entendimento e que tudo é bastante lógico. Claro que não agrada a todos e alguns pontos requerem melhorias.
Por exemplo, uma operação simples para copiar uma imagem de disco de um armazenamento de dados para outro. No meu caso, há 2 nós com nfs, envio a imagem - a cópia passa pelo opennebula frontend, embora estejamos todos acostumados com o fato de que os dados devem ser copiados diretamente entre os hosts - no mesmo vmware, hyper-v estamos acostumados a isso, mas aqui por para outro. Aqui está uma abordagem diferente e uma ideologia diferente, e na versão 5.12 o botão "migrar para armazenamento de dados" foi removido - apenas a própria máquina é transferida, mas não o armazenamento. significa armazenamento centralizado.
Além disso, há um erro comum 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 topo que você precisa examinar.
- Direitos de imagem para o usuário oneadmin;
- Direitos para o usuário oneadmin executar libvirtd;
- datastore? , ;
- , frontend , vlan br0, — bridge0 — .
O armazenamento de dados do sistema armazena metadados para sua VM, se você iniciar a VM com imagem persistente, a VM precisa ter acesso à configuração criada inicialmente no armazenamento onde você criou a VM - isso é muito importante. Portanto, ao transferir vm para outro armazenamento de dados, tudo deve ser verificado novamente.
8. Documentação, comunidade. Desenvolvimento futuro
E o resto, boa documentação, comunidade e, o mais importante, que o projeto continue a viver no futuro.
Aqui, de um modo geral, está tudo muito bem documentado e mesmo de acordo com a fonte oficial não será difícil estabelecer e encontrar respostas às dúvidas.
Comunidade ativa. Publica muitas 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 saber como o projeto se desenvolverá. No início, indiquei especificamente alguns dos fornecedores que usam suas soluções e o que a indústria oferece. Claro, não há uma resposta clara sobre o que usar. Mas para pequenas organizações, manter sua pequena nuvem privada pode não ser tão caro quanto parece. O principal é saber exatamente do que você precisa.
Como resultado, não importa o que você escolha como sistema em nuvem, você não deve parar em um produto. Se você tiver tempo, vale a pena procurar outras soluções mais abertas.
Existe um bom chat t.me/opennebula ajudando ativamente e não enviamos para buscar uma solução para o problema no Google. Junte-se a nós.