• Vendas: 1-800-961-2888
  • Suporte: 1-800-961-4454

Instalar o OpenStack com ferramentas de nuvem privada da Rackspace


Este documento examina o processo de instalação de um ambiente OpenStack com os livros de receitas da Rackspace Private Cloud.

Antes de começar, recomenda-se enfaticamente que você reveja os pré-requisitos e conceitos de instalação para garantir que toda a preparação necessária ao processo de instalação foi concluída.

Para obter informações sobre a Rede OpenStack (Neutron, anteriormente chamada Quantum), veja como configurar a Rede OpenStack.

OBSERVAÇÃO: para informações sobre a Rackspace Private Cloud v. 2.0 e v. 3.0, consulte Software da Rackspace Private Cloud: versões arquivadas.

Índice

Prepare os nodos
Instale o servidor Chef, livros de receita e chef-client
Instale o servidor Chef
Instale os livros de receitas da Rackspace Private Cloud
Instale o chef-client
Instalação do OpenStack
Visão geral da configuração
Crie um ambiente
Defina os atributos de rede
Configure os ambientes de nodos
Adicione um nodo controlador
Adicione um nodo de computação
Alta disponibilidade do nodo controlador
Solução de problemas da instalação

Este capítulo examina o processo de instalação de um ambiente OpenStack com os livros de receitas da Rackspace Private Cloud. Para a rede, essas instruções se aplicam apenas à configuração padrão de rede Nova. Para obter informações sobre a Rede OpenStack (Neutron, anteriormente chamada Quantum), veja como configurar a Rede OpenStatck.

O processo de instalação envolve os seguintes estágios:

  • Preparação dos nodos
  • Instalação de servidor Chef, livros de receitas da Rackspace Private Cloud e chef-client
  • Criação de um ambiente chef e definição de atributos
  • Configuração dos ambientes de nodos
  • Aplicação das funções de controlador e de computação aos nodos
Observação

Antes de começar, a Rackspace recomenda que você reveja os pré-requisitos e conceitos de instalação para garantir que toda a preparação necessária ao processo de instalação foi concluída.

Prepare os nodos

Antes de iniciar, verifique se o SO está atualizado nos nodos. Faça login para cada nodo e execute a atualização apropriada para o sistema operacional e o gerenciador de pacotes.

Você também deve ter um usuário administrador (como admin) com o mesmo nome de usuário configurado em todos os nodos que farão parte do seu ambiente.

Instale o servidor Chef, livros de receita e chef-client

O ambiente deve ter um servidor Chef, as últimas versões dos livros de receitas da Rackspace Private Cloud e chef-client em cada nodo dentro do ambiente. Você deve instalar o nodo do servidor Chef em primeiro lugar.

A instalação é realizada por comando curl que inicia um script de instalação. O script faz o download dos pacotes do GitHub e usa os pacotes para instalar os componentes. Você pode rever os scripts no repositório GitHub no link https://github.com/rcbops/support-tools/tree/master/chef-install.

Antes de começar, veja se curl está disponível ou instale com apt-get install -y curl no Ubuntu ou yum install curl no CentOS.

Instale o servidor Chef

O servidor Chef deve ser um dispositivo que pode ser acessado por dispositivos que serão configurados como nodos do cluster do OpenStack nas portas 443 e 80. Em distros rodando iptables, talvez seja necessário ativar o acesso a essas portas.

Por padrão, o script instala o Chef 11.0.8 com um conjunto de senhas geradas aleatoriamente, e também instala uma configuração Knife que está configurada para o usuário root.

As seguintes variáveis são adicionadas ao seu ambiente:

  • CHEF_SERVER_VERSION: o padrão se torna 11.0.8
  • CHEF_URL: o padrão se torna https://<hostURL>:443
  • CHEF_UNIX_USER: o usuário para o qual a configuração Knife é definida; o padrão se torna root.
  • Um conjunto de senhas geradas aleatoriamente:
    • CHEF_WEBUI_PASSWORD
    • CHEF_AMQP_PASSWORD
    • CHEF_POSTGRESQL_PASSWORD
    • CHEF_POSTGRESQL_RO_PASSWORD
  1. Faça login no dispositivo que será o servidor Chef e faça download e execute o script install-chef-server.sh.
    # curl -s -O https://raw.github.com/rcbops/support-tools/master/chef-install/install-chef-server.sh 
    # bash install-chef-server.sh
                        
  2. Forneça o arquivo de ambiente para ativar o comando knife.
    # source /root/.bash_profile
                                
  3. Execute o comando a seguir para assegurar que Knife esteja funcionando corretamente.
    # knife client list
                            

Se o comando for executado com êxito, a instalação estará concluída. Se não for executado com sucesso, você pode precisar sair do servidor e fazer login novamente para obter o ambiente outra vez.

Instale os livros de receitas da Rackspace Private Cloud

Os livros de receitas da Rackspace Private Cloud estão configurados como submódulos e hospedados em http://github.com/rcbops/chef-cookbooks, com repositórios de livro de receita individuais em http://github.com/rcbops-cookbooks.

O procedimento a seguir descreve o processo de download do pacote completo, mas você também pode fazer download de repositórios de livro de receita individuais, como do repositório Nova em https://github.com/rcbops-cookbooks/nova.

  1. Faça login em seu servidor Chef ou estação de trabalho com acesso Knife ao servidor Chef.
  2. Verifique se o arquivo de configuração knife.rb contém a configuração cookbook_path correta.
  3. Use git clone para fazer download dos livros de receitas.
    # git clone https://github.com/rcbops/chef-cookbooks.git
                            
  4. Vá até o diretório chef-cookbooks.
    # cd chef-cookbooks
                                
  5. Confira a versão desejada dos livros de receitas. As versões atuais são v4.2.2 e v4.1.3.
    # git checkout <version>
    # git submodule init
    # git submodule sync
    # git submodule update
                            
  6. Faça upload dos livros de receitas para o servidor Chef.
    # knife cookbook upload -a -o cookbooks 
                            
  7. Aplique as funções atualizadas.
    # knife role from file roles/*rb 
                            

Seus livros de receitas Chef agora estão atualizados.

Instale o chef-client

Todos os nodos do cluster do OpenStack precisam ter o chef-client instalado e configurado para se comunicar com o servidor Chef. Isso pode ser realizado mais facilmente com o comando knife bootstrap. Os nodos em que o cluster do OpenStack Object Storage serão configurados devem ser capazes de acessar o servidor Chef nas portas 443 e 80. Observe que isso não vai funcionar se você estiver atrás de um proxy HTTP.

Cada nodo cliente deve ter um nome de host resolúvel. Se o nome de host não puder ser resolvido, os nodos não poderão verificar adequadamente.

  1. Faça login no servidor Chef como root.
  2. Gere uma chave ssh com o comando ssh-keygen. Aceite os padrões quando solicitado.
  3. Use o comando knife bootstrap para inicializar os nodos para o servidor Chef. Este comando instala o chef-client no nodo de destino e permite a comunicação com o servidor. Você vai especificar o nome do ambiente, o nome do usuário que será associado com a chave ssh e o endereço IP do nodo.

    Para um único nodo controlador:

    # knife bootstrap -E <environmentName> -i .ssh/id_rsa_private \
      --sudo -x <sshUserName> <nodeIPAddress>
    
  4. Depois de concluir o processo de inicialização em cada nodo, você deverá adicionar o endereço IP e o nome do host do servidor Chef ao arquivo /etc/hosts de cada nodo. Faça login no primeiro nodo de cliente e abra /etc/hosts com seu editor de texto preferido.
  5. Adicione uma linha com o endereço IP do servidor Chef e o nome do host no seguinte formato:
    <chefServerIPAddress> <chefServerHostName>
                            
  6. Salve o arquivo.

Repita os passos 3 a 6 para cada nodo do ambiente.

Instalação do OpenStack

Neste ponto, você já criou um sistema de gerenciamento de configuração para o cluster do OpenStack, com base em Chef, e deu ao Chef a capacidade de gerenciar os nodos no ambiente. Agora você está pronto para usar os livros de receitas da Rackspace Private Cloud para implementar o OpenStack.

Esta seção demonstra uma instalação típica de OpenStack e inclui informações adicionais sobre como personalizar ou modificar a sua instalação.

Visão geral da configuração

Uma típica instalação de OpenStack configurada com livros de receitas da Rackspace Private Cloud é constituída dos seguintes componentes:

  • Um ou dois nodos do controlador de infraestrutura que hospeda os serviços centrais, como rabbitmq, MySQL e o painel Horizon. Esses nodos serão chamados de nodos do Controlador neste documento.
  • Um ou mais servidores que hospedam as máquinas virtuais. Esses nodos serão chamados de nodos de Computação.
  • Se estiver usando a rede OpenStack, você deve contar com um nodo de rede independente. As funções de rede também podem ser aplicadas ao nodo controlador. Isso é explicado em detalhes em Como configurar a Rede OpenStack.

Os livros de receitas baseiam-se nas seguintes premissas:

  • Todos os serviços OpenStack, como Nova e Glance, usam o MySQL como banco de dados.
  • A alta disponibilidade é fornecida por VRRP.
  • O load balancing é fornecido por haproxy.
  • KVM é o hipervisor.
  • A rede será HA plana como rede Nova ou será controlada por Neutron.

Há mais informações disponíveis na página de arquitetura de referência da Rackspace Private Cloud.

Crie um ambiente

O primeiro passo é criar um ambiente no servidor Chef. Neste exemplo, o comando knife environment create é usado para criar um ambiente chamado private-cloud. O sinalizador -d é usado para adicionar uma descrição do ambiente.

# knife environment create private-cloud -d "Rackspace Private Cloud OpenStack Environment"
                    

Isso cria um arquivo de ambiente JSON que pode ser editado diretamente para adicionar atributos específicos para a sua configuração. Para editar o ambiente, execute o comando knife environment edit:

# knife environment edit private-cloud
                

Isto vai abrir um editor de texto em que as configurações de ambiente poderão ser modificadas e substituir os atributos acrescentados.

Defina os atributos de rede

Agora você deve adicionar um conjunto de atributos de substituição para definir as rede Nova, pública e de gerenciamento em seu ambiente. Para saber mais sobre as informações de que você precisa para configurar a rede, consulte Requisitos de rede.

Observação

Esta informação serve para a configuração da rede Nova, que é um ambiente que a Rackspace Private Cloud utiliza por padrão. Se quiser usar a Rede OpenStack, veja como configurar a Rede OpenStack.

Para definir os atributos de substituição, você vai precisar executar o comando knife environment edit e adicionar uma seção de rede, substituindo as informações da rede.

Os livros de receita v4.2.2 e v4.1.3 usam a sintaxe de hash para definir os atributos de rede. A sintaxe é a seguinte:

"override_attributes": {
    "nova": {
        "network": {
            "public_interface": "<publicInterface>"
        },
        "networks": {
            "public": {
                "label": "public",
                "bridge_dev": "<VMNetworkInterface>",
                "dns2": "8.8.4.4",
                "ipv4_cidr": "<VMNetworkCIDR>",
                "bridge": "<networkBridge>",
                "dns1": "8.8.8.8"
            }
        }
    },
    "mysql": {
        "allow_remote_root": true,
        "root_network_acl": "%"
    },
    "osops_networks": {
        "nova": "<novaNetworkCIDR>",
        "public": "<publicNetworkCIDR>",
        "management": "<managementNetworkCIDR>"
    }
}
                

O exemplo a seguir mostra uma configuração do ambiente em que as três redes estão agregadas em uma única rede física. Essa rede tem um endereço IP no intervalo 192.0.2.0/24. Todos os serviços internos, terminais de API e funções de monitoramento e gerenciamento são executados por essa rede. VMs são criadas em uma rede 198.51.100.0/24 em eth1, conectada a uma ponte chamada br100.

"override_attributes": {
    "nova": {
        "network": {
            "public_interface": "br100"
        },
        "networks": {
            "public": {
                "label": "public",
                "bridge_dev": "eth1",
                "dns2": "8.8.4.4",
                "ipv4_cidr": "198.51.100.0/24",
                "bridge": "br100",
                "dns1": "8.8.8.8"
            }
        }
    },
    "mysql": {
        "allow_remote_root": true,
        "root_network_acl": "%"
    },
    "osops_networks": {
        "nova": "192.0.2.0/24",
        "public": "192.0.2.0/24",
        "management": "192.0.2.0/24"
    }
}
                

Configure os ambientes de nodos

Para garantir que todas as alterações sejam feitas corretamente, agora você deve definir os ambientes dos nodos clientes para coincidir com o nodo criado no servidor Chef. Enquanto estiver conectado ao servidor Chef, execute o seguinte comando:

# knife exec -E 'nodes.transform("chef_environment:_default") \
  { |n| n.chef_environment("<environmentNaame>") }'
                

Esse comando irá atualizar o ambiente em todos os nodos do cluster. Lembre-se de se você tiver nodos que não sejam OpenStack no seu cluster seus ambientes também serão alterados.

Adicione um nodo controlador

O nodo controlador (também conhecido como nodo de infraestrutura) deve ser instalado antes que qualquer nodo de computação seja adicionado. Até que a execução chef-client do nodo controlador seja concluída, as informações de terminais não voltarão para o servidor Chef, e os nodos de computação não poderão localizar nem se conectar a serviços de infraestrutura.

Um dispositivo com a função ha-controller1 atribuída incluirá todos os serviços de OpenStack essenciais e deverá ser usado mesmo em ambientes não HA. Para obter mais informações sobre HA, veja alta disponibilidade do nodo controlador.

Observação

A Rackspace vende e presta suporte APENAS a arquiteturas de controlador duplo. Clientes de suporte a escalabilidade e núcleo devem sempre ter configurações de HA de controlador duplo. Os usuários que instalarem uma nuvem de controlador único não receberão suporte Rackspace. Fale com seu representante de suporte Rackspace para obter mais informações.

Esse procedimento pressupõe que você já instalou o chef-client no dispositivo, conforme descrito em Instale o chef-client, e que você fez login no servidor Chef.

  1. Adicione a função ha-controller1 à lista de execução do nodo de destino.
    # knife node run_list add <deviceHostname> 'role[ha-controller1]'
                                
  2. Faça login no nodo de destino via ssh.
  3. Execute o chef-client no nodo.

Levará vários minutos para o chef-client concluir as tarefas de instalação. O chef-client fornecerá resultados para ajudá-lo a monitorar o progresso da instalação.

Alta disponibilidade do nodo controlador

Criando dois nodos controladores no ambiente e aplicando as funções ha-controller* a eles, você pode criar um par de nodos controladores que fornecem a HA com VRRP e monitorados por keepalived. Cada serviço tem um VIP próprio, e ocorre failover em uma base de serviço por serviço. Consulte os conceitos de alta disponibilidade para obter mais informações sobre configuração de HA.

Antes de configurar HA em seu ambiente, você deve alocar endereços IP para o MySQL, rabbitmq e VIPs de haproxy em uma interface disponível para os dois nodos controladores. Em seguida, você irá adicionar os VIPs aos atributos de substituição.

Observação

Se estiver atualizando o seu ambiente a partir de uma configuração mais antiga em que o vrid de VIP e redes não foram definidos, você pode ter de remover as configurações keepalived em /etc/keepalived/conf.d/* e executar o chef-client antes de adicionar o vrid de VIP e as definições de rede para override_attributes.

Blocos de atributos de VIP Havana

Esses blocos de atributos definem quais VIPs estão associados a qual serviço, e eles também definem o ID do roteador virtual (vrid) e rede para cada VIP. O VIP da api Neutron só precisa ser especificado se você estiver implementando a Rede OpenStack.

O exemplo a seguir mostra os atributos para uma configuração VIP (Havana) v4.2.2 em que o VIP de RabbitMQ é 192.0.2.51, o VIP de HAProxy é 192.0.2.52 e o VIP de MySQL é 192.0.2.53:

"override_attributes": {
    "vips": {
        "rabbitmq-queue": "192.0.2.51",

        "ceilometer-api": "192.0.2.52",
        "ceilometer-central-agent": "192.0.2.52",
        "cinder-api": "192.0.2.52",
        "glance-api": "192.0.2.52",
        "glance-registry": "192.0.2.52",
        "heat-api": "192.0.2.52",
        "heat-api-cfn": "192.0.2.52",
        "heat-api-cloudwatch": "192.0.2.52",
        "horizon-dash": "192.0.2.52",
        "horizon-dash_ssl": "192.0.2.52",
        "keystone-admin-api": "192.0.2.52",
        "keystone-internal-api": "192.0.2.52",
        "keystone-service-api": "192.0.2.52",
        "nova-api": "192.0.2.52",
"nova-api-metadata": "192.0.2.52", "nova-ec2-public": "192.0.2.52", "nova-novnc-proxy": "192.0.2.52", "nova-xvpvnc-proxy": "192.0.2.52", "swift-proxy": "192.0.2.52", "neutron-api": "192.0.2.52", "mysql-db": "192.0.2.53", "config": { "192.0.2.51": { "vrid": 1, "network": "public" }, "192.0.2.52": { "vrid": 2, "network": "public" }, "192.0.2.53": { "vrid": 3, "network": "public" } } } }

Blocos de atributos de VIP Grizzly

Esses blocos de atributos definem quais VIPs estão associados a qual serviço, e eles também definem o ID do roteador virtual (vrid) e rede para cada VIP. O VIP da api Quantum só precisa ser especificado se você estiver implementando a Rede OpenStack.

O exemplo a seguir mostra os atributos para uma configuração VIP (Grizzly) v4.1.n em que o VIP de RabbitMQ é 192.0.2.51, o VIP de HAProxy é 192.0.2.52 e o VIP de MySQL é 192.0.2.53:

"override_attributes": {
    "vips": {
        "rabbitmq-queue": "192.0.2.51",

        "cinder-api": "192.0.2.52",
        "glance-api": "192.0.2.52",
        "glance-registry": "192.0.2.52",
        "horizon-dash": "192.0.2.52",
        "horizon-dash_ssl": "192.0.2.52",
        "keystone-admin-api": "192.0.2.52",
        "keystone-internal-api": "192.0.2.52",
        "keystone-service-api": "192.0.2.52",
        "nova-api": "192.0.2.52",
        "nova-ec2-public": "192.0.2.52",
        "nova-novnc-proxy": "192.0.2.52",
        "nova-xvpvnc-proxy": "192.0.2.52",
        "swift-proxy": "192.0.2.52",

        "neutron-api": "192.0.2.52",

        "mysql-db": "192.0.2.53",

        "config": {
            "192.0.2.51": {
                "vrid": 1,
                "network": "public"
            },
            "192.0.2.52": {
                "vrid": 2,
                "network": "public"
            },
            "192.0.2.53": {
                "vrid": 3,
                "network": "public"
            }
        }
    }
}
 

Instalação de par de nodos controladores de alta disponibilidade

Siga este procedimento para editar o seu arquivo de ambiente e aplicar as funções de controlador de HA aos nodos controladores.

  1. Abra o arquivo de ambiente para edição.
    # knife environment edit <yourEnvironmentName>
                                
  2. Localize a seção override_attributes.
  3. Adicione a informação de VIP a override_attributes.
    • Se estiver implementado um ambiente Havana v4.2.2, consulte os atributos de VIP de Havana.
    • Se estiver implementado um ambiente Grizzly v4.1.n, consulte os atributos VIP de Grizzly.
  4. No primeiro nodo controlador, adicione a função ha-controller1.
    # knife node run_list add <deviceHostname> 'role[ha-controller1]'
                                
  5. No segundo nodo controlador, adicione a função ha-controller2.
    # knife node run_list add <deviceHostname> 'role[ha-controller2]'
                                
  6. Execute o chef-client no primeiro nodo controlador.
  7. Execute o chef-client no segundo nodo controlador.
  8. Execute o chef-client no primeiro nodo controlador novamente.

Adicione um nodo de computação

Os nodos de computação podem ser instalados após a conclusão da instalação do nodo controlador.

  1. Adicione a função single-compute à lista de execução do nodo de destino.
    # knife node run_list add <deviceHostname> 'role[single-compute]'
                                
  2. Faça login no nodo de destino via ssh.
  3. Execute o chef-client no nodo.

Levará vários minutos para o chef-client concluir as tarefas de instalação. O chef-client fornecerá resultados para ajudá-lo a monitorar o progresso da instalação.

Repita o processo em cada nodo de Computação. Você também vai precisar executar o chef-client em cada nodo de Computação quando os nodos de Computação forem adicionados.

Solução de problemas da instalação

Se a instalação não for bem-sucedida, pode ser devido a um dos problemas a seguir.

  • O nodo não tem acesso à internet O processo de instalação requer acesso à internet para o download dos arquivos de instalação, por isso certifique-se de que o endereço dos nodos garanta o acesso e que as informações de proxy que você digitou estejam corretas. Você também deve garantir que os nodos tenham acesso a um servidor DNS.
  • O seu firewall de rede está impedindo o acesso à internet. Verifique se o endereço IP que você atribuir ao controlador está disponível através do firewall da rede.

Para obter mais informações sobre solução de problemas e discussões de usuários, você também pode consultar o Fórum de Suporte da Rackspace Private Cloud, no seguinte URL:

https://community.rackspace.com/products/f/45







© 2011-2013 Rackspace US, Inc.

Salvo indicação em contrário, o conteúdo deste site está licenciado sob uma licença não adaptada de Creative Commons Attribution-NonCommercial-NoDerivs 3.0


Ver detalhes da licença e o AVISO LEGAL