2

[SysAdmin] Multi nodes com OpenStack Mitaka em CentOS 7

28 Flares 28 Flares ×

Neste artigo, vou demonstrar passo a passo como instalar o Openstack (open-source cloud compute) em três nodes usando o utilitário packstack.

O Packstack é um utilitário que usa módulos Puppet para implantar um ambiente OpenStack de uma maneira digamos fácil.

Para implantar o Openstack, precisaremos ter; Uma maquina para atuar como um node Controller dedicado, a segunda maquina, atuar como um node Nova Compute (em ambiente d e produção, o recomendável é no minimo dois node para o Nova compute), e a terceira, atuar como node Network.

Abaixo estão os detalhes da minha configuração;

node1 = controller (10.10.1.7)
node2 = compute   (10.10.1.8)
node3 = network    (10.10.1.9)

Sistema Operacional usando é o CentOS7, o profile de sua instalação é minimal. Memoria RAM no minimo 2Gb. Requisitos mínimos de espaço em disco varia de node pra node, e a quantidade de espaço de você pretende disponibilizar para as instâncias. Para fins deste laboratório estou configuração 20Gb para cada node.

Nota: Certifique-se de que os relógios de suas máquinas estão sincronizados via Network Time Protocol (NTP).

Antes de instalar o OpenStack desabilite o NetworkManager e habilite o serviço de rede network. Alem de desligar o selinux e firewalld. Os passos a seguir deve ser executado em todos os nodes.

# systemctl disable NetworkManager
# systemctl stop NetworkManager
# systemctl start network
# systemctl enable network

Desative o firewalld e o SELinux.

# systemctl disable firewalld
# systemctl stop firewalld

SELinux;

# sed -i 's/=enforcing/=disabled/g' /etc/selinux/config

Atualize todos os nodes: o nó controller, o nó compute e o nó network.

# yum update -y
# reboot

Em Node Controller:

Implantação do OpenStack Mitaka

Configura SSH sem senha do controller para os nodes computer e network.

[root@controller ~]# ssh-keygen
[root@controller ~]# ssh-copy-id root@compute
[root@controller ~]# ssh-copy-id root@network

Verifique se a configuração esta funcionando.

Controller acessnado sem senha o node computer:

[root@controller ~]# ssh root@compute
Last login: Fri Mar 3 09:21:32 2017 from controller
[root@compute ~]#

Controller acessando sem senha o node network.

[root@controller ~]# ssh root@network
Last login: Fri Mar 3 10:12:45 2017 from controller
[root@network ~]#

Instalando o repositorio Openstack Mitaka em CentOS7.

[root@controller ~]# yum install -y centos-release-openstack-mitaka.noarch
[root@controller ~]# yum update -y

[root@controller ~]# yum install -y centos-release-openstack-mitaka.noarch
[root@controller ~]# yum update -y

Instale o utilitário packstack no node controller.

[root@controller ~]# yum install openstack-packstack

Explore algumas opções do comando packstack.

[root@controller ~]# packstack -h |less

O modo recomendado de executar uma instalação é o não interativo. O Arquivo Openstack answer  com configurações padrão pode ser gerado com o comando packstack.

[root@controller ~]# packstack --gen-answer-file /root/answers.txt
[root@controller ~]#

Antes de iniciar a instalação em si, edite o arquivo /root/answers.txt e certifique-se de que os seguintes itens estão configurados. No meu caso atualizei as seguintes entradas:

[root@controller ~]# cat /root/answers.txt
[general]
... omitindo saída ...
CONFIG_CEILOMETER_INSTALL=n
CONFIG_NTP_SERVERS=200.20.186.76
CONFIG_CONTROLLER_HOST=10.10.1.7
CONFIG_COMPUTE_HOSTS=10.10.1.8
CONFIG_NETWORK_HOSTS=10.10.1.9
CONFIG_PROVISION_DEMO=n
CONFIG_KEYSTONE_AD_PW=admin
... omitindo zaida ...

NOTA: Permita 25 minutos ou mais para que o instalador conclua a instalação e a configuração dos serviços do OpenStack.

Inciando a instalação do OpenStack

[root@controller ~]# packstack --answer-file=/root/answers.txt
Welcome to the Packstack setup utility

The installation log file is available at: /var/tmp/packstack/20170303-092724-mE1Ikr/openstack-setup.log

Installing:
Clean Up                                             [ DONE ]
Discovering ip protocol version                      [ DONE ]
root@10.10.1.7's password: 
Setting up ssh keys                                  [ DONE ]
Preparing servers                                    [ DONE ]
Pre installing Puppet and discovering hosts' details [ DONE ]
Adding pre install manifest entries                  [ DONE ]
Setting up CACERT                                    [ DONE ]
Adding AMQP manifest entries                         [ DONE ]
Adding MariaDB manifest entries                      [ DONE ]
Adding Apache manifest entries                       [ DONE ]
Fixing Keystone LDAP config parameters to be undef if empty[ DONE ]
Adding Keystone manifest entries                     [ DONE ]
Adding Glance Keystone manifest entries              [ DONE ]
Adding Glance manifest entries                       [ DONE ]
Adding Cinder Keystone manifest entries              [ DONE ]
Checking if the Cinder server has a cinder-volumes vg[ DONE ]
Adding Cinder manifest entries                       [ DONE ]
Adding Nova API manifest entries                     [ DONE ]
Adding Nova Keystone manifest entries                [ DONE ]
Adding Nova Cert manifest entries                    [ DONE ]
Adding Nova Conductor manifest entries               [ DONE ]
Creating ssh keys for Nova migration                 [ DONE ]
Gathering ssh host keys for Nova migration           [ DONE ]
Adding Nova Compute manifest entries                 [ DONE ]
Adding Nova Scheduler manifest entries               [ DONE ]
Adding Nova VNC Proxy manifest entries               [ DONE ]
Adding OpenStack Network-related Nova manifest entries[ DONE ]
Adding Nova Common manifest entries                  [ DONE ]
Adding Neutron VPNaaS Agent manifest entries         [ DONE ]
Adding Neutron FWaaS Agent manifest entries          [ DONE ]
Adding Neutron LBaaS Agent manifest entries          [ DONE ]
Adding Neutron API manifest entries                  [ DONE ]
Adding Neutron Keystone manifest entries             [ DONE ]
Adding Neutron L3 manifest entries                   [ DONE ]
Adding Neutron L2 Agent manifest entries             [ DONE ]
Adding Neutron DHCP Agent manifest entries           [ DONE ]
Adding Neutron Metering Agent manifest entries       [ DONE ]
Adding Neutron Metadata Agent manifest entries       [ DONE ]
Adding Neutron SR-IOV Switch Agent manifest entries  [ DONE ]
Checking if NetworkManager is enabled and running    [ DONE ]
Adding OpenStack Client manifest entries             [ DONE ]
Adding Horizon manifest entries                      [ DONE ]
Adding Swift Keystone manifest entries               [ DONE ]
Adding Swift builder manifest entries                [ DONE ]
Adding Swift proxy manifest entries                  [ DONE ]
Adding Swift storage manifest entries                [ DONE ]
Adding Swift common manifest entries                 [ DONE ]
Adding Gnocchi manifest entries                      [ DONE ]
Adding Gnocchi Keystone manifest entries             [ DONE ]
Adding MongoDB manifest entries                      [ DONE ]
Adding Redis manifest entries                        [ DONE ]
Adding Ceilometer manifest entries                   [ DONE ]
Adding Ceilometer Keystone manifest entries          [ DONE ]
Adding Aodh manifest entries                         [ DONE ]
Adding Aodh Keystone manifest entries                [ DONE ]
Copying Puppet modules and manifests                 [ DONE ]
Applying 10.10.1.8_prescript.pp
Applying 10.10.1.9_prescript.pp
Applying 10.10.1.7_prescript.pp
10.10.1.9_prescript.pp:                              [ DONE ]     
10.10.1.8_prescript.pp:                              [ DONE ]     
10.10.1.7_prescript.pp:                              [ DONE ]     
Applying 10.10.1.7_amqp.pp
Applying 10.10.1.7_mariadb.pp
10.10.1.7_amqp.pp:                                   [ DONE ]   
10.10.1.7_mariadb.pp:                                [ DONE ]   
Applying 10.10.1.7_apache.pp
10.10.1.7_apache.pp:                                 [ DONE ]  
Applying 10.10.1.7_keystone.pp
Applying 10.10.1.7_glance.pp
Applying 10.10.1.7_cinder.pp
10.10.1.7_keystone.pp:                               [ DONE ]    
10.10.1.7_glance.pp:                                 [ DONE ]    
10.10.1.7_cinder.pp:                                 [ DONE ]    
Applying 10.10.1.7_api_nova.pp
10.10.1.7_api_nova.pp:                               [ DONE ]    
Applying 10.10.1.7_nova.pp
Applying 10.10.1.8_nova.pp
10.10.1.7_nova.pp:                                   [ DONE ]
10.10.1.8_nova.pp:                                   [ DONE ]
Applying 10.10.1.8_neutron.pp
Applying 10.10.1.9_neutron.pp
Applying 10.10.1.7_neutron.pp
10.10.1.8_neutron.pp:                                [ DONE ]   
10.10.1.7_neutron.pp:                                [ DONE ]   
10.10.1.9_neutron.pp:                                [ DONE ]   
Applying 10.10.1.7_osclient.pp
Applying 10.10.1.7_horizon.pp
10.10.1.7_osclient.pp:                               [ DONE ]    
10.10.1.7_horizon.pp:                                [ DONE ]    
Applying 10.10.1.7_ring_swift.pp
10.10.1.7_ring_swift.pp:                             [ DONE ]      
Applying 10.10.1.7_swift.pp
10.10.1.7_swift.pp:                                  [ DONE ] 
Applying 10.10.1.7_gnocchi.pp
10.10.1.7_gnocchi.pp:                                [ DONE ]   
Applying 10.10.1.7_mongodb.pp
Applying 10.10.1.7_redis.pp
10.10.1.7_mongodb.pp:                                [ DONE ]   
10.10.1.7_redis.pp:                                  [ DONE ]   
Applying 10.10.1.7_ceilometer.pp
10.10.1.7_ceilometer.pp:                             [ DONE ]      
Applying 10.10.1.7_aodh.pp
10.10.1.7_aodh.pp:                                   [ DONE ]
Applying Puppet manifests                            [ DONE ]
Finalizing                                           [ DONE ]

 **** Installation completed successfully ******

Additional information:
 * Time synchronization installation was skipped. Please note that unsynchronized time on server instances might be problem for some OpenStack components.
 * File /root/keystonerc_admin has been created on OpenStack client host 10.10.1.7. To use the command line tools you need to source the file.
 * To access the OpenStack Dashboard browse to http://10.10.1.7/dashboard .
Please, find your login credentials stored in the keystonerc_admin in your home directory.
 * The installation log file is available at: /var/tmp/packstack/20170303-092724-mE1Ikr/openstack-setup.log
 * The generated manifests are available at: /var/tmp/packstack/20170303-092724-mE1Ikr/manifests

Verifique se os serviços do OpenStack se estão em execução:

[root@controller ~]# openstack-status 
== Nova services ==
openstack-nova-api:                     active
openstack-nova-compute:                 inactive  (disabled on boot)
openstack-nova-network:                 inactive  (disabled on boot)
openstack-nova-scheduler:               active
openstack-nova-cert:                    active
openstack-nova-conductor:               active
openstack-nova-console:                 inactive  (disabled on boot)
openstack-nova-consoleauth:             active
openstack-nova-xvpvncproxy:             inactive  (disabled on boot)
== Glance services ==
openstack-glance-api:                   active
openstack-glance-registry:              active
== Keystone service ==
openstack-keystone:                     inactive  (disabled on boot)
== Horizon service ==
openstack-dashboard:                    active
== neutron services ==
neutron-server:                         active
neutron-dhcp-agent:                     inactive  (disabled on boot)
neutron-l3-agent:                       inactive  (disabled on boot)
neutron-metadata-agent:                 inactive  (disabled on boot)
== Swift services ==
openstack-swift-proxy:                  active
openstack-swift-account:                active
openstack-swift-container:              active
openstack-swift-object:                 active
== Cinder services ==
openstack-cinder-api:                   active
openstack-cinder-scheduler:             active
openstack-cinder-volume:                active
openstack-cinder-backup:                active
== Ceilometer services ==
openstack-ceilometer-api:               inactive  (disabled on boot)
openstack-ceilometer-central:           active
openstack-ceilometer-compute:           inactive  (disabled on boot)
openstack-ceilometer-collector:         active
openstack-ceilometer-notification:      active
== Support services ==
mariadb:                                active
dbus:                                   active
target:                                 active
rabbitmq-server:                        active
memcached:                              active
== Keystone users ==
Warning keystonerc not sourced

Logar no Mitaka Horizon Dashboard
O painel do Horizon é uma interface web que permite aos operadores e administradores gerenciar a plataforma OpenStack. O Horizon fornece uma alternativa à CLI para comunicar-se com cada API de projeto do OpenStack.
Quando a instalação for concluída com êxito, o URL do Dashboard é fornecido no final do processo de instalação do utilitario packstack. Portanto, no meu caso, o url do Dashboard é ” http://10.10.1.7/dashboard”, use o nome de usuário como admin e a senha que especificamos no arquivo de resposta sob o parâmetro “CONFIG_KEYSTONE_ADMIN_PW”.

Em node network:

Configuração do Open vSwitch

Open vSwitch é um switch virtual de várias camadas, projetado para permitir a automatização da rede através de extensões, que suporta interfaces e protocolos default de gerenciamento, tais como NetFlow, sFlow, IPFIX ou RSPAN. O Open vSwitch também é projetado para suportar a distribuição entre vários servidores físicos.

Quando a instalação do openstack for concluída, a interface bridge ( br-ex ) será criada no node network. Adicione a interface ens34, no meu caso, na nova br-ex como uma porta e atribua o endereço IP de ens34 ou ethx para br-ex.

cd /etc/sysconfig/network-scripts/
cp ifcfg-ens34 ifcfg-br-ex
[root@network network-scripts]# cat ifcfg-ens34 
TYPE=OVSPort
DEVICETYPE=ovs
OVS_BRIDGE=br-ex
UUID=47d836ae-7505-4b20-99a6-93b438e4b7ad
DEVICE=ens34
ONBOOT=yes

Salve e saia do arquivo

[root@network network-scripts]# cat ifcfg-br-ex
DEVICE=br-ex
DEVICETYPE=ovs
TYPE=OVSBridge
BOOTPROTO=static
UUID=47d836ae-7505-4b20-99a6-93b438e4b7ad
ONBOOT=yes
IPADDR=10.10.1.9
NETMASK=255.255.255.0

Salve e saia do arquivo

O passo final é reiniciar a rede para que as novas definições sejam ativadas:

[root@network network-scripts]# systemctl restart network

[root@network network-scripts]#

Use o comando ovs-vsctl show para visualizar as informações da bridge OVS.

[root@network network-scripts]# ovs-vsctl show
0a8b85fc-8617-408a-955f-6333de90b678
    Bridge br-int
        fail_mode: secure
        Port patch-tun
            Interface patch-tun
                type: patch
                options: {peer=patch-int}
        Port br-int
            Interface br-int
                type: internal
    Bridge br-ex
        Port "ens34"
            Interface "ens34"
        Port br-ex
            Interface br-ex
                type: internal
    Bridge br-tun
        fail_mode: secure
        Port br-tun
            Interface br-tun
                type: internal
        Port "vxlan-0a0a0108"
            Interface "vxlan-0a0a0108"
                type: vxlan
                options: {df_default="true", in_key=flow, local_ip="10.10.1.9", out_key=flow, remote_ip="10.10.1.8"}
        Port patch-int
            Interface patch-int
                type: patch
                options: {peer=patch-tun}
    ovs_version: "2.5.0"
[root@network network-scripts]# ip a s br-ex
9: br-ex: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UNKNOWN qlen 1000
    link/ether 00:0c:29:32:ae:ca brd ff:ff:ff:ff:ff:ff
    inet 10.10.1.9/24 brd 10.10.1.255 scope global br-ex
       valid_lft forever preferred_lft forever
    inet6 fe80::d8d5:2ff:feac:c44c/64 scope link 
       valid_lft forever preferred_lft forever

[root@network network-scripts]# ip a s ens34
3: ens34: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast master ovs-system state UP qlen 1000
    link/ether 00:0c:29:32:ae:ca brd ff:ff:ff:ff:ff:ff
    inet6 fe80::20c:29ff:fe32:aeca/64 scope link 
       valid_lft forever preferred_lft forever

Isso é tudo para uma instalação básica de Openstack Mitaka. O próximo passo é criar projetos, usuários, redes e fazer upload de uma imagem em cloud e, em seguida, iniciar uma instância VM usando uma imagem em cloud.

Jonatas Lopes

Sempre aprendendo coisas novas e passando o conhecimento adiante !!!

2 Comments

Dúvidas? Deixe seu comentário ou entre em contato.