Configuração de Um Ambiente de Testes para o OpenStack – Parte 4 – Compute

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

Vamos 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 configuração está correta, porém sem conexão com a Internet, fica difícil instalar os pacotes necessários. E quais são os pacotes? Por mais estranho que possa parece, a máquina Compute, que é virtual, precisará do KVM. Ou seja, uma máquina virtual que hospedará máquinas virtuais. Não posso deixar de lembrar que esta configuração é apenas para testes, o desempenho apresentado não será bom.

Configuração do Ubuntu

Primeiro, vamos aos pacotes. Execute ‘sudo apt-get install ubuntu-cloud-keyring’. Crie o arquivo /etc/apt/sources.list.d/cloud-archive.list com apenas a seguinte linha:

deb http://ubuntu-cloud.archive.canonical.com/ubuntu precise-updates/folsom main 

Depois, atualize a distribuição com os comandos ‘sudo apt-get update && sudo apt-get upgrade’. Instale os pacotes com o comando abaixo:

openstack@compute:~$ sudo apt-get install ntp kvm libvirt-bin pm-utils nova-compute-kvm openvswitch-switch quantum-plugin-openvswitch-agent

Com isso todos os pacotes estarão instalado e podemos partir para a configuração individual de cada um. Mas antes vamos terminar que configurar o Ubuntu.

Configuração de Rede

Você deve deixar seu arquivo /etc/network/interfaces parecido com o exemplo abaixo:

# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
# auto eth0
# iface eth0 inet static
#        address 192.168.122.4
#        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.4
        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

auto eth2
iface eth2 inet static
        address 10.10.10.3
        netmastk 255.255.255.0
        network 10.10.10.0
        broadcast 10.10.10.255
	### static routing ###
	post-up route add -net 10.10.10.0 netmask 255.255.255.0 dev eth2
	pre-down route del -net 10.10.10.0 netmask 255.255.255.0 dev eth2

A configuração do eth0 é opcional, já que instalamos o pacote. Se você encontrar algum problema, pode deixar essa configuração fora de comentários. Atualize os seguintes campos no arquivo /etc/sysctl.conf:

net.ipv4.conf.all.rp_filter = 0
net.ipv4.conf.default.rp_filter = 0  

Agora, reinicie a rede com ‘openstack@compute:~$ sudo service networking restart’.

NTP

Coloque apenas a linha ‘server 192.168.0.2’ no arquivo /etc/ntp.conf e reinicie o serviço com ‘sudo service ntp restart’.

KVM

Vamos agora configurar o KVM. Edite o arquivo /etc/libvirt/qemu.conf e adicione o seguinte:

cgroup_device_acl = [
    "/dev/null", "/dev/full", "/dev/zero",
    "/dev/random", "/dev/urandom",
    "/dev/ptmx", "/dev/kvm", "/dev/kqemu",
    "/dev/rtc", "/dev/hpet", "/dev/net/tun"]

É necessário desabilitar a bridge padrão do KVM, para evitar conflitos na rede:

openstack@compute:~$ virsh net-destroy default
openstack@compute:~$ virsh net-undefine default

Temos que habilitar a migração “quente”, configurando as seguintes opções no arquivo /etc/libvirt/libvirtd.conf:

listen_tls = 0
listen_tcp = 1
auth_tcp = "none"

Em seguida, a variável libvirtd_opts deve ser alterada no arquivo /etc/init/libvirt-bin.conf:

env libvirtd_opts="-d -l" 

Temos que alterar a mesma variável no arquivo /etc/default/libvirt-bin para ficar com o mesmo valores. Para finalizar, reiniciamos o KVM/Libvirt:

openstack@compute:~$ sudo service libvirt-bin restart
libvirt-bin stop/waiting
libvirt-bin start/running, process 3110

Nova

Edite o arquivo /etc/nova/api-paste.ini:

admin_tenant_name = service
admin_user = nova
admin_password = openstack

Edite o arquivo /etc/nova/nova-compute.conf:

[DEFAULT]
libvirt_type=qemu
libvirt_ovs_bridge=br-int
libvirt_vif_type=ethernet
libvirt_vif_driver=nova.virt.libvirt.vif.LibvirtHybridOVSBridgeDriver
libvirt_use_virtio_for_bridges=True

O campo libvirt_type está como qemu porque compute é uma máguina virtual. Fosse uma máquina real, o valor deveria ser kvm. Perceba que os dois primeiros arquivos editados não trazem nenhuma indicação que esta instalação do nova faz parte de uma nuvem. No próximo arquivo iremos adicionar os endereços IPs dos outros serviços da nuvem. Edite o arquivo /etc/nova/nova.conf :

[DEFAULT]

# MySQL Connection #
sql_connection=mysql://nova:openstack@192.168.0.2/nova

# nova-scheduler #
rabbit_host=192.168.0.2
rabbit_password=openstack
scheduler_driver=nova.scheduler.simple.SimpleScheduler

# nova-api #
cc_host=192.168.0.2
auth_strategy=keystone
s3_host=192.168.0.2
ec2_host=192.168.0.2
nova_url=http://192.168.0.2:8774/v1.1/
ec2_url=http://192.168.0.2:8773/services/Cloud
keystone_ec2_url=http://192.168.0.2:5000/v2.0/ec2tokens
api_paste_config=/etc/nova/api-paste.ini
allow_admin_api=true
use_deprecated_auth=false
ec2_private_dns_show_ip=True
dmz_cidr=169.254.169.254/32
ec2_dmz_host=192.168.0.2
metadata_host=192.168.0.2
metadata_listen=0.0.0.0
enabled_apis=metadata

# Networking #
network_api_class=nova.network.quantumv2.api.API
quantum_url=http://192.168.0.2:9696
quantum_auth_strategy=keystone
quantum_admin_tenant_name=service
quantum_admin_username=quantum
quantum_admin_password=openstack
quantum_admin_auth_url=http://192.168.0.2:35357/v2.0
libvirt_vif_driver=nova.virt.libvirt.vif.LibvirtHybridOVSBridgeDriver
linuxnet_interface_driver=nova.network.linux_net.LinuxOVSInterfaceDriver
firewall_driver=nova.virt.libvirt.firewall.IptablesFirewallDriver

# Compute #
compute_driver=libvirt.LibvirtDriver
connection_type=libvirt

# Cinder #
volume_api_class=nova.volume.cinder.API

# Glance #
glance_api_servers=192.168.0.2:9292
image_service=nova.image.glance.GlanceImageService

# novnc #
novnc_enable=true
novncproxy_base_url=http://192.168.122.2:6080/vnc_auto.html
vncserver_proxyclient_address=192.168.0.4
vncserver_listen=0.0.0.0

# Misc #
logdir=/var/log/nova
state_path=/var/lib/nova
lock_path=/var/lock/nova
root_helper=sudo nova-rootwrap /etc/nova/rootwrap.conf
verbose=true

Quantum

Vamos configurar o Open vSwitch, que nos dará acesso às bridges virtuais, e o próprio Quantum.

Open vSwitch

No caso do Open vSwitch, precisamos iniciar o serviço e adicionar as bridges:

openstack@compute:~$ sudo service openvswitch-switch start
 * Inserting openvswitch module
 * /etc/openvswitch/conf.db does not exist
 * Creating empty database /etc/openvswitch/conf.db
 * Starting ovsdb-server
 * Configuring Open vSwitch system IDs
 * Starting ovs-vswitchd
 * Enabling gre with iptables
openstack@compute:~$ sudo ovs-vsctl add-br br-int

Quantum

Para o Quantum, temos que configurar os dois arquivos com os IPs do Controller.

Edite o arquivo /etc/quantum/quantum.conf:

core_plugin = quantum.plugins.openvswitch.ovs_quantum_plugin.OVSQuantumPluginV2
auth_strategy = keystone
fake_rabbit = False
rabbit_host = 192.168.0.2
rabbit_password = openstack

Edite o arquivo /etc/quantum/plugins/openvswitch/ovs_quantum_plugin.ini:

sql_connection = mysql://quantum:openstack@192.168.0.2:3306/quantum
tenant_network_type = gre
tunnel_id_ranges = 1:1000
integration_bridge = br-int
tunnel_bridge = br-tun
local_ip = 10.10.10.3
enable_tunneling = True

E vamos iniciar o serviço:

openstack@compute:~$ sudo service quantum-plugin-openvswitch-agent start
quantum-plugin-openvswitch-agent start/running, process 3510

Toques finais

Para finalizar alguns toques finais. Irá facilitar muito nossa vida sincronizar o conteúdo dos arquivos /etc/hosts em cada máquina. Lembre de comentar a linha que atribui o loopback (127.0.0.1) para o hostname da máquina. Os arquivos devem ter as seguintes linhas:

192.168.0.2	controller
192.168.0.3	network
192.168.0.4	compute
Anúncios

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: