OpenNebula é uma ferramenta open source para gerenciamento e provisionamento de nuvens.
Ou seja, é possível criar, gerenciar e monitorar máquinas virtuais junto aos hosts de Data Centers, além da flexibilidade e escalabilidade entre nuvens públicas e privadas, as chamadas híbridas.
Com esta ferramenta, será possível o gerenciamento de instâncias (VMs) no Amazon EC2. Este tipo de serviço de Cloud Computing tem como nome "IaaS", ou seja, sobre a infraestrutura da nuvem.
Diversas empresas apoiam o projeto, como por exemplo:
Dell;
IBM;
Telefónica Germany, etc.
Hypervisors suportados pelo OpenNebula
Seria a ferramenta responsável pela virtualização das máquinas. Aqui podemos utilizar: KVM, Xen ou VMware.
Podemos organizar o OpenNebula com diversos tipos de ferramentas confiáveis de virtualização.
O que é o OpenNebula Sunstone
O OpenNebula é um conjunto de ferramentas de IaaS, uma destas é o módulo Sunstone, que roda como um processo na máquina fornecendo o serviço pelo navegador sobre o localhost na porta 9869.
Seu desenvolvimento é em Ruby com a biblioteca XML-RPC para comunicação entre os módulos do conjunto.
Através do navegador, temos a flexibilidade para gerenciamento de Data Centers.
O artigo em si...
Este artigo, tem como ponto de partida, a instalação do OpenNebula pelo pacote pronto para a plataforma GNU/Linux, mais precisamente, sobre a distribuição Ubuntu.
No site do OpenNebula é possível encontrar softwares, além da documentação oficial para outras distribuições GNU/Linux (CentOS, SUSE, Debian etc).
Iremos instalar e seguir os passos para criação de uma VM (máquina virtual).
Para isso são necessários conhecimentos de alguns termos técnicos que virão pela frente, são eles:
Host → Máquinas (nós) com os serviços (VMs) armazenados em nosso cluster;
Cluster → Serão todos os servidores (hosts) e serviços que irão permitir a alta disponibilidade e balanceamento de carga do Data Center;
Virtual Networks → Rede (bridges), aqui são aceitos diversos tipos de ferramentas para criação de redes: ebtables, 802.1Q etc;
Datastores → O meio de armazenamento das instâncias (VMs), imagens das distribuições, LVMs, SAS/NAS etc.
Arquivo oned.conf configurado para KVM
Este arquivo de configuração do OpenNebula fica na pasta /etc/one/ e tem algumas instruções importantes a serem configuradas neste laboratório para uso pelo KVM:
[3] Comentário enviado por gersonraymond em 26/12/2012 - 15:09h
Grande irmão Jefferson !!! Quero parabenizá-lo pelo execelente artigo, lembro claramente há 10 anos atrás, quando cheguei com a distribuição Slackware e disse "mano" estuda Linux/Unix que você terá recursos ímpares para implementar qualquer projeto. No decorrer dos anos recebi vários apoios da sua parte em projetos Linux, quando estava enrolado, sempre fazendo do seu quarto um grande laboratório com muita rodada de café. Agora com o seu apoio para o desenvolvimento da minha monografia de pósgraduação sobre segurança em cloud, surge este artigo que com certeza ajudará muitos na área de Cloud Computing. Parabéns de coração e fico muito feliz por ter um irmão dedicado e facinado pelo pinguim.
[4] Comentário enviado por jorgezup em 06/02/2013 - 17:24h
Olá Jefferson! Parabéns cara artigo muito bom mesmo. Com certeza vai ajudar muitas pessoas, bela iniciativa.
Só uma coisa Jefferson, o meu Sunstone esta apresentando falha de autenticação. Alterei já de imediado a senha .one/one_auth, nao fiz nenhum acesso com a senha inicial, será que é por isso que esta acontecendo o problema. Obrigado!
[5] Comentário enviado por jeffersonsantos em 07/02/2013 - 02:00h
Olá Jorge! Obrigado e segue a descrição da possível solução do problema.
Mude a senha do usuário oneadmin com o comando:
oneuser passwd nomeusuario senha
EX: oneuser passwd jefferson teste
No Shell tente algum comando por exemplo:
onehost list
A seguinte mensagem será mostrada:
[UserInfo] User couldn't be authenticated, aborting call.
Ou seja, então alteramos a senha do usuário Sunstone-server(WEB) mas o comandos de prompt não estão sendo aceitos porque a senha do arquivo one_auth não é igual.
Faça o seguinte:
Vá até o arquivo /var/lib/one/.one_auth.
Altere a linha no arquivo para o seguinte:
oneadmin:senhaalterada
Por fim, se possível mantenha sempre backup do arquivo de banco de dados one.db em caso de uso do banco de dados SQLITE.
[6] Comentário enviado por guillinux em 28/02/2013 - 01:23h
Olá Jefferson excelente artigo. No tópico amarrando a infraestrutura o botão select cluster não fica habilitado Hosts, Datastores e Virtual Networks.
E no Hosts meu status fica ERROR.
[7] Comentário enviado por jeffersonsantos em 05/03/2013 - 00:28h
Obrigado, então você terá que criar um cluster de preferência amarrando nele cada Hosts, Datastores e Virtual Networks.
Para criar um Cluster clique em "Cluster" e no cabeçalho na parte direita encontrar-se o botão para criação de Cluster.
Já com relação ao problema de Hosts verifique se no arquivo: /etc/hosts tem as máquinas relacionadas a sua rede, exemplo:
192.168.1.45 Jefferson
192.168.1.80 VMPrincipal
Caso tenha na rede um dns resolvendo os nomes, essa operação de alteração do arquivo hosts, torna-se desnecessária.
Qualquer coisa, dá um print na tela e posta o problema que tentaremos resolver.
[9] Comentário enviado por jeffersonsantos em 12/04/2013 - 00:21h
Bom dia guillinux! Você deve ser atentar ao local da imagem onde você está apontando na variável Path.
Outra coisa seria a permissão da iso deve está como usuário oneadmin e grupo oneadmin e em pasta acessível a este usuário. Ex: /var/lib/one/imagem.iso
Permissão: chown oneadmin:oneadmin imagem.iso
Caso esteja utilizando o upload de uma imagem, só será possível o upload de imagens até 4GB. Sendo assim, imagens com grande capacidade você deve apenas apontar para ela, em vez de realizar o upload.
A imagem deverá está de preferência no servidor do OpenNebula para que o processo de cópia seja mais rápido.
[10] Comentário enviado por fmossatto em 15/06/2013 - 20:29h
Boa noite Jefferson!
Estou com um problema e agradeceria muito se você pudesse me ajudar.
Fiz todo o procedimento descrito no artigo, mas na hora de criar a maquina virtual usando os templates criados da ERRO.
descrito assim:
Error executing image transfer script: Error Copying
pelo que eu entendi ele ta dando erro na hora de enviar os scripts para o host, o SSH está funcionando corretamente, as pastas estão com permissão, não consigo achar uma solução.
[11] Comentário enviado por jeffersonsantos em 18/06/2013 - 01:11h
Desculpa pela demora. Tenta esses procedimentos:
Verifique as permissões da pasta /var/lib/one como usuário e grupo oneadmin.
chown -R oneadmin:oneadmin /var/lib/one
1) Criação da iso do cd de instalação
Datastore -> escolha o desejado.
Type -> Escolha CD
Device prefix -> hd
Driver -> raw
Target -> Deixo em branco pois assim o template pode ser genérico.
Provide a path
Caminho da iso.
OBS: ISO com permissão de leitura e escrita pelo usuário oneadmin.
2) Criação da iso do HD
cd /home
qemu-img create disco.img 10G
chown oneadmin:oneadmin disco.img
Mesmas instruções do passo 1, sendo alterado apenas o campo Type para OS e o caminho da imagem.
3) Criação do Template
Boot Method -> hd
Add Disk Image ->
Image -> CD
Target -> hda
Driver -> raw
Image -> HD
Target -> hda
Driver -> raw
Network -> Escolha a bridge de sua placa de rede local.
Clique em Create
Clique em Instantiate e acompanhe a inicialização do sistema na aba Virtual Machines.
OBS: Caso não ocorra o processo, então crie uma bridge para uso das VMs, um datastore local e um host que será o ip da máquina local antes.
Uma outra coisa é a chave ssh caso ela esteja com aquela opção de passphrase, pois aí o OpenNebula não passa pelo bloqueio.
[13] Comentário enviado por rodrigosantiago em 27/01/2014 - 12:27h
Bom dia!! Estou instalando o opennebula no CentOS e apos ter instalado o front end, dou um start no front end e list pelo:
$onevm list
Dá Connection refused - connect(2)
Já pesquisei sobre isso, mais não encontrei uma solução, pois parece ser a dúvida de muitos. Saberia como me ajudar?
Att
[14] Comentário enviado por jeffersonsantos em 27/01/2014 - 23:00h
Boa noite! Rodrigo.
Pela mensagem apresentada, fiz uma simulação aqui logando com o usuário oneadmin no shell:
Primeira Ocorrência:
1) su - oneadmin
2) one stop
3) MSG: Connection refused - connect(2)
Então fiz o seguinte:
1) Entre na pasta /var/lib/one/.one/
2) Verifique o arquivo one_auth se está correto o par usuário:senha
3) Inicie o serviço chamado one com o comando "one start" sempre antes de chamar outro serviço do OpenNebula.
Segunda Ocorrência:
A chave ssh do usuário oneadmin não consegue logar no usuário root ou outro do libvirt no caso do KVM para listar os hosts.
Neste caso, crie a chave ssh do usuário oneadmin.
1) su - oneadmin
2) ssh-keygen -t rsa
sem palavra-chave
Importe a chave para a máquina hospedeira da virtualização.
3) ssh-copy-id root@IP_DA_MAQUINA_HOSPEDEIRA
Esses são alguns dos problemas de conexão recusada.
[15] Comentário enviado por rodrigosantiago em 29/01/2014 - 10:54h
Bom dia!! Persistiu o erro do connection refused(2). Instalei uma maquina virtual e instalei o CentOs nela, mas não estou conseguindo nem começar? Saberia me indicar se tem diferença na instalação para maquina virtual e quais pacotes necessários antes de começar a instalação do opennebula? Se possível, tiver um script pode me mandar? Agradeço!
[16] Comentário enviado por jeffersonsantos em 02/02/2014 - 14:12h
Boa tarde!!
1) Verifique se o seu processador possui as flags para virtualização com o comando grep.
grep -E '(vmx|svm)' --color=auto /proc/cpuinfo
2) Outra coisa, como o sistema é CentOS verifique o SELINUX no arquivo /etc/selinux/config se as variáveis SELINUX=disabled e SELINUXTYPE=targeted estão desativadas desta forma.
3) Caso o SELINUX esteja desabilitado, mas mesmo assim não funcionar, então crie o arquivo:
8.1 - No front-end, executar o comando como oneadmin onevm:
$ onevm list
OBS: Deveria aparecer uma lista vazia de VM, isso se o daemon Opennebula estiver funcionando:
ID USER GROUP NAME STAT CPU MEM HOSTNAME TIME
Mas no meu caso esta msg:
Connection refused - connect(2)
Meu erro acredito estar do item 6.4 para baixo. Pois sempre no final quando no front-end executo $ onevm list, a msg continua como Connection refused - connect(2).
Acredito que esse passo-a-passo que estou enviando posso ser util para que vc verifique e consiga solucionar essa dúvida minha.
[18] Comentário enviado por JeffersonSantos em 09/02/2014 - 16:01h
Boa tarde! Rodrigo.
Veja qual a versão que está instalando, pois baixei a versão 4.4.1 Stable e o pacote do ruby requerido é o da versão 1.9.3, então faça a atualização do ruby para a última versão dependendo de qual pacote esteja utilizando. Depois dei o comando onevm list e não retornou o erro.
O ambiente que fiz a instalação do front-end foi o seguinte no Virt-Manager:
Fiz a instalação de todos os pacotes do ruby 1.9.3 e após isso adicionei um host físico com capacidade para monitorar ele, pois senão realizaria virtualização por cima de virtualização. O que daria uma perda de performance. O Host da virtualização foi uma máquina física.
[19] Comentário enviado por rodrigosantiago em 10/02/2014 - 12:30h
Bom dia!!! Tbem estou fazendo a instalação da versão 4.4 do opennebula. Através de sua ajuda consegui consertar o erro de connection refused, logo quando dava o comando onevm list, porém agora quando tento conectar OpenNebula sunstone, através do localhost:9869/login e quando coloco o seguinte:
Username: oneadmin
Password:***
E quando faço o login, aparece a seguinte msg: " OpenNebula is not running or there was a server exception. Please check the server logs. Já fiz a troca da senha em /var/lib/one/.one/sunstone_auth e /var/lib/one/.one/one_auth, sendo as duas iguais, mas nada.
Quando faço o log sunstone pelo /var/log/one/sunstone.log aparece assim:
[20] Comentário enviado por JeffersonSantos em 11/02/2014 - 23:18h
Boa Noite! Rodrigo.
1) Logue como usuário oneadmin.
su - oneadmin
2) Verifique se o serviço do OpenNebula encontra-se rodando - > one start.
Após isso, verifique a execução do serviço sunstone-server start.
3) Caso o serviço continue com erro, entre no arquivo /etc/one/sunstone-server.conf e procure pelas linhas:
:host: 127.0.0.1
:port: 9869
Desta forma, pode ser que esteja recusando uma sessão em outra máquina, portanto faça a mudança do host para o ip de seu host na sua rede tipo: 192.168.1.8 e a porta continua como 9869.
[21] Comentário enviado por rodrigosantiago em 12/02/2014 - 12:22h
Bom dia!!
Consegui conectar no OpenNebula Sunstone e através dele fazer diversas coisas. Daí criei usuário pelo OpenNebula Sunstone e depois dei um $ oneuser list pelo terminal e deu certo, mas quando fiz pela terceira vez no oneadmin $ oneuser list, dá o seguinte erro:
[UserPoolInfo] User couldn't be authenticated, aborting call.
Daí fiz o seguinte:
[oneadmin@Ctei Rodrigo]$ one start
ONE is still running (PID:11434). Please try 'one stop' first.
[oneadmin@Ctei Rodrigo]$ onevm list
[VirtualMachinePoolInfo] User couldn't be authenticated, aborting call.
[oneadmin@Ctei Rodrigo]$ oneuser list
[UserPoolInfo] User couldn't be authenticated, aborting call.
[oneadmin@Ctei Rodrigo]$ one start
ONE is still running (PID:11434). Please try 'one stop' first.
[oneadmin@Ctei Rodrigo]$ one stop
oned and scheduler stopped
[oneadmin@Ctei Rodrigo]$ oneuser list
Connection refused - connect(2)
Depois disso não consegui conectar mais o OpenNebula Sunstone. Como Posso estar arrumando isso, e voltar a conexão e conseguir listar usuários por terminal com oneuser sem repetir esses erros.
[22] Comentário enviado por JeffersonSantos em 14/02/2014 - 23:41h
Boa noite! Rodrigo.
O que está acontecendo é uma negação de usuário, possivelmente o usuário está com uma senha diferente. Faça o seguinte:
No OpenNebula, por default o banco de dados utilizado é o SQLITE3, portanto acesse o banco localizado na pasta /var/lib/one.
sqlite3 one.db
Procure pela tabela user_pool e qual a senha definida nesta. Caso você apague este banco de dados, na próxima vez que iniciar ele cria tudo novamente, mas perde as configurações: host, vnets, etc. Aconselho caso for colocar em produção, a utilização do MySQL que pode ser configurado no arquivo /etc/one/oned.conf.
Antes de iniciar, crie o banco de dados opennebula.
# mysql -u root -p
# create database opennebula;
# exit
# su - oneadmin
# one start
# sunstone-server start
Conteúdo do arquivo oned.conf
DB = [ backend = "mysql",
server = "localhost",
port = 3306,
user = "oneadmin",
passwd = "senhadefinida",
db_name = "opennebula" ]
Lembrando que as imagens e arquivos manipulados pelo OpenNebula têm de permissão do Linux, senão serão abortadas. Pode-se definir o grupo do usuário oneadmin assim:
[23] Comentário enviado por rodrigosantiago em 19/03/2014 - 13:40h
Boa Tarde Jefferson!!
Estou com uma dúvida a respeito do hypervisor XEN! Fiz a instalação do hypervisor Xen, e logo após a instalação foi pedido para fazer o reboot do sistema. Tenho o CentOs 6.5 instalado numa maquina virtual, daí após a inicialização do sistema CentOs, ele carrega um pouco e trava, isso aonteceu logo após este reboot que fiz.
Poderia me indicar o que fazer, ou o que pode estar acontecendo?
[24] Comentário enviado por JeffersonSantos em 29/03/2014 - 23:03h
Boa noite! Rodrigo.
Como regra procure utilizar uma máquina física para os testes com o Xen, pois estará utilizando o máximo do potencial da máquina para virtualização dos hosts, mas como teste, tudo bem utilizar uma máquina virtual, só não é garantia de perfeito funcionamento, pois esta já encontra-se virtualizada. Fiz o seguinte teste instalando o Xen com Centos 6.5 seguindo os procedimentos no link:
[25] Comentário enviado por rodrigosantiago em 15/05/2014 - 23:43h
Boa noite!!!
Tenho instalado o OpenNebula versão 4.4.1 – Arch x86_64 funcionando numa maquina virtual (virtualBox) onde utilizei o SO CentOs 6.5 para instalar o opennebula. Consigo logar/criar pelo oneadmin tanto via terminal ou pelo sunstone e depois consigo logar pelo o usuário que foi criado, mas somente naquela maquina onde esta instalado o opennebula.
Agora criei uma outra maquina virtual e gostaria de também logar nesses usuários que tinha criado na outra máquina, porém não consigo. Teria como me ajudar?