Configuração de Um Ambiente de Testes para o OpenStack – Parte 3 – Network

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

Com a configuração feita no post anterior, podemos partir para configurar o segundo host com os serviços de rede. A princípio, já poderíamos instanciar máquinas apenas com o Controller configurado. Mas a adição do Network torna o cenário, ainda controlado, um pouco mais realista.

Configurações no Ubuntu

Assim como na configuração do Controller, vamos atualizar a sources.list para adicionar o repositório com a versão mais recente do OpenStack.

openstack@network:~$ sudo apt-get install ubuntu-cloud-keyring 

Coloque a linha abaixo no arquivo /etc/apt/sources.list.d/cloud-archive.list:

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

Em seguida, atualize o sistema:

openstack@network:~$ sudo apt-get update && sudo apt-get dist-upgrade

Vamos configurar a rede. Aqui temos que prestar atenção em detalhe. A interface da rede externa (endereço 192.168.122.3/24) será alterada. Nós vamos criar uma bridge pública. Se você logou na máquina pela interface da rede externa, sai e comece a sessão SSH por outro endereço. O arquivo /etc/network/interfaces deve ficar assim:

# The loopback network interface
auto lo
iface lo inet loopback

# Bridge Pública
auto eth0
iface eth0 inet manual
        up ifconfig $IFACE 0.0.0.0 up
        up ip link set $IFACE promisc on   
        down ifconfig $IFACE down

# Rede de Gerência
auto eth1
iface eth1 inet static
        address 192.168.0.3
        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

# Rede de Dados
auto eth2
iface eth2 inet static
        address 10.10.10.2
        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

Antes de reiniciar, instale todos os pacotes necessários. Com a interface pública como bridge, não teremos acesso aos repositórios do Ubuntu no primeiro momento.

openstack@network:~$ sudo apt-get install ntp quantum-plugin-openvswitch-agent quantum-dhcp-agent quantum-l3-agent

Devemos ativar o roteamento de pacotes no kernel. Coloque as opções a seguir no arquivo /etc/sysctl.conf:


Coloque também as mesmas informações do /etc/hosts do Controller no Network. Configura o NTP:

openstack@network:~$ sudo cat /etc/ntp.conf
server 192.168.0.2
openstack@network:~$ sudo service ntp restart
 * Stopping NTP server ntpd                                                                                                           [ OK ] 
 * Starting NTP server ntpd                                                                                                           [ OK ]

Por via das dúvidas, reinicie a máquina.

Serviços de Rede

Vamos agora configurar os serviços de rede.

Open-vSwitch

O Open-vSwitch é uma ferramenta de criação de switchs virtuais. Nós já instalamos o pacote acima, vamos iniciar o daemon:

openstack@network:~$ service openvswitch-switch start

Os comandos abaixo criam uma bridge virtual:

openstack@network:~$ sudo ovs-vsctl add-br br-int
openstack@network:~$ sudo ovs-vsctl add-br br-ex
openstack@network:~$ sudo ovs-vsctl add-port br-ex eth0
openstack@network:~$ sudo ip link set up br-ex 

Com isso, criamos uma bridge interna (br-int) e uma externa (br-ex). Devemos adicionar no /etc/network/interfaces a configuração abaixo para garantir conectividade pela rede externa:

Quantum

Vamos agora integrar o Quantum do network com o controller. Configure as seguintes opções no arquivo /etc/quantum/l3_agent.ini:

auth_url = http://192.168.0.2:35357/v2.0
admin_tenant_name = service
admin_user = quantum
admin_password = openstack
metadata_ip = 192.168.0.2
use_namespaces = False

Configure as seguintes opções no arquivo /etc/quantum/api-paste.ini:

auth_host = 192.168.0.2
admin_tenant_name = service
admin_user = quantum
admin_password = openstack

Configure as seguintes opções no 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

Configure as seguintes opções no 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
enable_tunneling = True
integration_bridge = br-int
tunnel_bridge = br-tun
local_ip = 10.10.10.2

Configure a seguinte opções no arquivo /etc/quantum/dhcp_agent.ini:

use_namespaces = False

Agora, vamos reiniciar todos os serviços:

openstack@network:~$ sudo service quantum-plugin-openvswitch-agent restart
openstack@network:~$ sudo service quantum-dhcp-agent restart
openstack@network:~$ sudo service quantum-l3-agent restart

Redes Virtuais

Criação de Redes Virtuais

Vamos agora configurar o necessário para criação de redes virtuais. O primeiro passo é criar um arquivo com as variáveis de ambiente, para facilitar a execução dos comandos no prompt. O arquivo deve ser nomeado novarc:

export OS_TENANT_NAME=admin
export OS_USERNAME=admin
export OS_PASSWORD=openstack
export OS_AUTH_URL="http://192.168.0.2:5000/v2.0/"
export SERVICE_ENDPOINT="http://192.168.0.2:35357/v2.0"
export SERVICE_TOKEN=openstack

Vamos carregar essas variáveis e garantir que as mesmas são carregadas toda vez que entrarmos no sistema com o usuário ‘openstack’.

source novarc
echo "source novarc">>.bashrc

Vamos baixar o script de automação do site oficial do projeto. O script se chamada quantum-networking.sh. Nós temos que alterar os endereços IPs no script. A alteração será feita de acordo com a tabela na Parte 1 desse tutorial. A primeira coisa que temos que notar é que a nossa rede externa não é 7.7.7.0/24, mas sim 192.168.122.0/24. Portanto, altere os seguintes campos no script:

EXT_NET_CIDR="192.168.122.0/24"
EXT_GW_IP="192.168.122.3"
EXT_NET_GATEWAY="192.168.122.1"
POOL_FLOATING_START="192.168.122.130"   
POOL_FLOATING_END="192.168.122.150"     

Também aproveite para corrigir as últimas linhas do script. Elas executam comando que necessitam de privilégios de super-usuário.

sudo ip addr flush dev $EXT_NET_BRIDGE
sudo ip addr add $EXT_GW_IP/$EXT_NET_LEN dev $EXT_NET_BRIDGE
sudo ip link set $EXT_NET_BRIDGE up

Em seguir, execute o script:

openstack@network:~$ ./quantum-networking.sh 
Added interface to router 357a19df-004a-47ef-919b-3a7e4b0c1e53
Created a new subnet:
+------------------+--------------------------------------------------------+
| Field            | Value                                                  |
+------------------+--------------------------------------------------------+
| allocation_pools | {"start": "192.168.122.130", "end": "192.168.122.150"} |
| cidr             | 192.168.122.0/24                                       |
| dns_nameservers  |                                                        |
| enable_dhcp      | False                                                  |
| gateway_ip       | 192.168.122.1                                          |
| host_routes      |                                                        |
| id               | 05f4eb00-c3aa-494f-9b04-08ad8c895749                   |
| ip_version       | 4                                                      |
| name             |                                                        |
| network_id       | 4e7f1f37-b4a8-4111-a1d5-84245fe80500                   |
| tenant_id        | 4630c01242484c2ba63cf6392c78061c                       |
+------------------+--------------------------------------------------------+
Set gateway for router 357a19df-004a-47ef-919b-3a7e4b0c1e53
Configuração Layer3

Vamos configurar as funcionalidades da camada 3. Anote o identificador da rede externa (‘ext_net’) retornado pelo comando ‘quantum net-list’. Coloque no arquivo /etc/quantum/l3_agent.ini o campo ‘gateway_external_network_id = ID’, onde ID é o identificador da rede externa. Anote também o identificador do roteador ‘provider-router” retornado por ‘quantum router-list’ e atualize o campo ‘router_id = ID’ no mesmo arquivo. Para finalizar, reinicie o serviço:

openstack@network:~$ sudo service quantum-l3-agent restart
quantum-l3-agent stop/waiting
quantum-l3-agent start/running, process 32735

Com isso, finalizamos a configuração do nó Network.

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: