Configuração de Um Ambiente de Testes para o OpenStack – Parte 1 – Máquinas Virtuais

Aviso: este tutorial não funciona. Ele foi baseado em um guia que está no site oficial do projeto OpenStack (veja a parte 1). Entretanto, nos próprios comentários da página do tutorial, vários usuários relatam que as máquinas virtuais criadas não conseguem capturar um IP do DHCP. A razão do problema está relacionada com o serviço Quantum, cuja utilização no OpenStack é recente. Caso você deseje ter uma visão geral de virtualização e OpenStack, aconselho a seguir o tutorial mesmo assim. Na hora de aprender, um erro pode valer mais do que mil acertos.

Introdução

Vou apresentar aqui uma série de posts sobre a configuração de um ambiente de testes para o OpenStack. O objetivo desses posts é explicar como criar um ambiente de testes para a solução de nuvens IaaS OpenStack. Irei instalar os componentes do OpenStack (controller, network e compute) em três máquinas virtuais diferentes, de acordo com o tutorial encontrado no site do projeto. Para criação das máquinas virtuais, será usado o KVM. Para todos os efeitos, esse tutorial foi desenvolvido para o Ubuntu 12.04 LTS 64 Bits. A primeira parte trata da criação das máquinas virtuais.

Instalação e Configuração das Máquinas Virtuais

Instalação do KVM

O primeiro passo é verificar se seu sistema suporta virtualização por hardware. A maioria dos sistemas lançados depois do Intel Core 2 Duo possui suporte a virtualização. A exceção é o caso dos processadores da linha Atom. Para testar se o seu sistema tem suporte, execute o seguinte comando:

~$ sudo kvm-ok

Se a resposta for

INFO: /dev/kvm exists
KVM acceleration can be used

então seu sistema está configurado com o suporte ao KVM.

Agora vamos instalar os pacotes necessários:

~$ sudo apt-get install qemu-kvm libvirt-bin ubuntu-vm-builder bridge-utils virtinst

E adicione seu usuário ao grupo libvirtd. Depois disso, será necessário sair e logar novamente:

~$ sudo adduser `id -un` libvirtd

Com esses passos, você pode verificar a instalação com o seguinte comando:

~$ virsh -c qemu:///system list
 Id Name                 State
----------------------------------

Mais informações sobre a instalação do KVM na página do Ubuntu sobre o projeto

Criação das Máquinas Virtuais

Iremos criar três máquinas com as seguintes características:

Máquina Controller Network Compute
Discos 2 discos de 5G 1 disco de 5G 1 disco de 5G
Rede Externa (Host NAT) 192.168.122.2/24 192.168.122.3/24 192.168.122.4/24 (veja observação no final)
Rede Gerência 192.168.0.2/24 192.168.0.3/24 192.168.0.4/24
Rede Dados 10.10.10.2/24 10.10.10.3/24

As máquinas terão duas ou três interfaces de rede. O papel de cada rede ficará mais claro no decorrer do tutorial. Para a Rede Externa, a configuração ‘default’ do KVM é suficiente. Precisamos criar mais duas redes no KVM, Gerência e Dados, que não terão acesso a Internet. Servem para comunicação entre as máquinas virtuais. A primeira rede é definida no arquivo gerencia.xml:

<network>
	<name>gerencia</name>
        <bridge name="virbr1" />
        <ip address="192.168.0.1" netmask="255.255.255.0"/>
</network>

A outra rede é definida em um arquivo dados.xml:

<network>
	<name>dados</name>
        <bridge name="virbr2" />
        <ip address="10.10.10.1" netmask="255.255.255.0"/>
</network>

Em seguida, execute os comandos:

~$ virsh net-define dados.xml 
~$ virsh net-define gerencia.xml 
~$ virsh net-autostart dados
~$ virsh net-autostart gerencia
~$ virsh net-start dados
~$ virsh net-start gerencia
~$ virsh net-list
Name                 State      Autostart
-----------------------------------------
dados                active     yes       
default              active     yes       
gerencia             active     yes 

Por segurança, guarde os XMLs em uma pasta chamada networks/ no seu diretório de usuário. Agora, vamos para a criação das máquinas virtuais. Nós vamos criar as máquinas usando a versão 12.04.1 LTS do Ubuntu Server. Usaremos 512Mb de RAM para cada máquina. Novamente, é um ambiente de teste, desempenho não é o objetivo principal. Vamos começar pela Controller. Execute o comando abaixo:

~$ virt-install \
--connect qemu:///system \
--virt-type kvm --name Controller \
--ram 512 \
--disk path=/home/usuario/openstack/disks/controller1.img,size=5 \
--disk path=/home/usuario/openstack/disks/controller2.img,size=5  \
--vnc \
--cdrom /home/usuario/openstack/ubuntu-12.04.1-server-amd64.iso \
--network network=default --network network=gerencia 

O nome da máquina é Controller, usurá 512 megabytes de RAM. Dois discos são criados, cada um com 5 Gigabytes. Essa máquina dará boot pelo CD de instalação do Ubuntu. Duas interfaces de rede serão criadas, uma default (NAT) e outra privada. Agora execute os seguintes comandos para ter acesso à máquina pelo protocolo VNC:

~/openstack$ virsh list --all
 Id Name                 State
----------------------------------
  2 Controller           running
~/openstack$ virsh vncdisplay 2
:0
~/openstack$ vncviewer 127.0.0.1:0

A partir daí podemos instalar a máquina. Crie o usuário ‘openstack’ e a senha ‘openstack’. Não se preocupe, o SSH não é acessível pela Internet, está protegido pelo NAT. Use o mesmo par usuário/senha nas outras máquinas. O importante é lembrar de instalar o OpenSSH Server para termos acesso externo. Após a instalação, a máquina será desligada. Você deve reativá-la:

~$ virsh start Controller
~$ virsh list 
 Id Name                 State
----------------------------------
  3 Controller           running
~$ virsh vncdisplay 3
~$ :0

Observação: caso você esteja montando o ambiente de teste em uma máquina remota, não conseguirá acessar o VNC do KVM. O VNC não é criptografado por padrão, portanto ele só escuta no endereço 127.0.0.1. A saída é usar um túnel SSH da seguinte forma:

~$ ssh -L <porta_local>:<127.0.0.1>:<porta_destino> -N -f <usuario>@<maquina_destino>
~$ vncviewer 127.0.0.1:0

Só como exemplo de configuração de rede, o arquivo /etc/network/interfaces do Controller deve ficar assim:

# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
auto eth0
iface eth0 inet static
        address 192.168.122.2
        netmask 255.255.255.0
        network 192.168.122.0
        broadcast 192.168.122.255
        gateway 192.168.122.1
        dns-nameservers 192.168.122.1

auto eth1
iface eth1 inet static
        address 192.168.0.2
        netmastk 255.255.255.0
        network 192.168.0.0
        broadcast 192.168.0.255
        ### static routing ###
        post-up route add -net 192.168.0.0 netmask 255.255.255.0 dev eth1
        pre-down route del -net 192.168.0.0 netmask 255.255.255.0 dev eth1

As outras máquinas devem ser configuradas de forma semelhante de acordo com a tabela acima. Não vou mostrar esses passos. Para finalizar, os comandos para criar as outras duas máquinas são:

virt-install \
--connect qemu:///system \
--virt-type kvm \
--name Network \
--ram 512 \
--disk path=/home/usuario/openstack/disks/network.img,size=5G \
--vnc \
--cdrom /home/usuario/openstack/ubuntu-12.04.1-server-amd64.iso \
--network network=default --network network=gerencia  --network network=dados
virt-install \
--connect qemu:///system \
--virt-type kvm \
--name Compute \
--ram 512 \
--disk path=/home/usuario/openstack/disks/compute.img,size=5 \
--vnc \
--cdrom /home/usuario/openstack/ubuntu-12.04.1-server-amd64.iso \
--network network=default --network network=gerencia  --network network=dados     

Observação importante: No comando de criação da máquina Compute, estamos colocando também a rede default, que é a Rede Externa (Host Nat). Pela tabela acima e de acordo com o tutorial que tomamos como base, essa rede não seria necessária. Entretanto, quando formos configurar o nó, vamos precisar da Internet para poder instalar os pacotes. Então vamos proceder como se colocássemos o endereço 192.168.122.4 na máquina Compute, mas depois vamos desativá-lo.

Anúncios

2 pensamentos sobre “Configuração de Um Ambiente de Testes para o OpenStack – Parte 1 – Máquinas Virtuais

  1. […] as máquinas virtuais configuradas no post anterior, vamos partir para a configuração dos serviços do OpenStack. Em teoria, se você está usando […]

  2. […] agora para a parte final do tutorial, a máquina Compute. Se você observar na tabela no post parte 1, verá que o nó Compute não foi configurado com uma interface com a Rede Externa (Host NAT). A […]

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s

%d blogueiros gostam disto: