Como implanto uma nuvem OpenStack com o Juju?


15

Gostaria de ter uma nuvem de teste em funcionamento, em preparação para uma possível implantação do 12.04. Eu brinquei um pouco com o UEC, mas tive muito mais dificuldade em encontrar algo útil como uma cartilha para a nova pilha. Existe uma documentação genérica no Diablo, mas é provável que já haja muitas peças úteis no Ubuntu com as quais um guia específico poderia economizar tempo.

Além disso, tanto quanto eu gostaria, meu orçamento não inclui os US $ 4-6k para obter um pequeno cluster em execução com o suporte da Canonical.

Respostas:


17

Instalando o OpenStack

Se você deseja começar a operar rapidamente, vá aqui:

Esta resposta é uma visão mais detalhada de como usar o Juju com o OpenStack.

Escopo

A plataforma OpenStack é poderosa e seus usos diversos. Esta seção da documentação se preocupa principalmente com a implantação de um sistema OpenStack em execução "padrão" usando, mas não se limitando a, componentes Canonical como MAAS, Juju e Ubuntu. Onde apropriado, outros métodos e softwares serão mencionados.

Premissas

  1. Uso do MAAS - siga estas instruções primeiro.
  2. Uso de Juju
  3. Configuração de rede local - Este documento pressupõe que você tenha uma configuração de rede local adequada, incluindo interfaces separadas para acesso à nuvem do OpenStack. As redes ideais são apresentadas na [MAAS] [documentação do MAAS para OpenStack].

Planejando uma instalação

Antes de implantar qualquer serviço, é muito útil fazer um balanço dos recursos disponíveis e como eles devem ser usados. O OpenStack compreende vários serviços inter-relacionados (Nova, Swift, etc.), cada um com demandas diferentes em termos de hosts. Por exemplo, o serviço Swift, que fornece armazenamento de objetos, tem um requisito diferente do serviço Nova, que fornece recursos de computação.

Os requisitos mínimos para cada serviço e recomendações são estabelecidos no Guia oficial de operações do OpenStack

A composição recomendada de nós para implantar o OpenStack com MAAS e Juju é que todos os nós no sistema devem ser capazes de executar QUALQUER dos serviços. Essa é uma prática recomendada para a robustez do sistema, pois, como qualquer nó físico deve falhar, outro pode ser reajustado para substituí-lo. Obviamente, isso se estende a todos os requisitos de hardware, como interfaces de rede extras.

Se, por razões de economia ou de outra forma, você optar por usar configurações diferentes de hardware, observe que sua capacidade de superar falhas de hardware será reduzida. Também será necessário direcionar implantações para nós específicos - consulte a seção na documentação do MAAS sobre tags .

Crie o arquivo de configuração do OpenStack

Usaremos os encantos Juju para implantar os componentes do OpenStack. Cada encapsulamento encapsula tudo o necessário para configurar um serviço específico. No entanto, os serviços individuais têm muitas opções de configuração, algumas das quais queremos alterar.

Para tornar essa tarefa mais fácil e reproduzível, criaremos um arquivo de configuração separado com as opções relevantes para todos os serviços. Está escrito em um formato YAML padrão ( consulte www.yaml.org se isso não lhe é familiar ).

Aqui está um exemplo de um openstack-config.yaml:

keystone:
  admin-password: openstack
  debug: 'true'
  log-level: DEBUG
nova-cloud-controller:
  network-manager: 'Neutron'
  quantum-security-groups: 'yes'
  neutron-external-network: Public_Network
nova-compute:
  enable-live-migration: 'True'
  migration-auth-type: "none"
  virt-type: kvm
  #virt-type: lxc
  enable-resize: 'True'
quantum-gateway:
  ext-port: 'eth1'
  plugin: ovs
glance:
  ceph-osd-replication-count: 3
cinder:
  block-device: None
  ceph-osd-replication-count: 3
  overwrite: "true"
  glance-api-version: 2
ceph:
  fsid: a51ce9ea-35cd-4639-9b5e-668625d3c1d8
  monitor-secret: AQCk5+dR6NRDMRAAKUd3B8SdAD7jLJ5nbzxXXA==
  osd-devices: /dev/sdb
  osd-reformat: 'True'

Para todos os serviços, podemos configurar o openstack-originpara apontar para uma fonte de instalação. Nesse caso, confiaremos no padrão, que apontará para as fontes relevantes para o lançamento do Ubuntu 14.04 LTS Trusty. Outras configurações para cada serviço são explicadas neste documento .

Outras configurações

Outras configurações e opções de configuração são possíveis para a implantação dos serviços OpenStack. Eles estão detalhados na documentação dos encantos individuais usados ​​por Juju e podem ser inspecionados visitando a Juju Charm Store on - line e pesquisando o encanto usando a caixa de pesquisa no canto superior esquerdo da página. as definições de configuração são detalhadas em "Configuração" na página principal, como mostrado:

insira a descrição da imagem aqui

Implantando o OpenStack com o Juju

Agora que a configuração está definida, podemos usar o Juju para implantar e relacionar os serviços.

Inicializando Juju

Juju requer uma quantidade mínima de configuração. Aqui assumimos que ele já foi configurado para funcionar com seu cluster MAAS (consulte o [Guia de Instalação do Juju] [juju_install] para obter mais informações sobre isso.

Primeiro, precisamos buscar imagens e ferramentas que o Juju usará:

juju sync-tools --debug

Em seguida, podemos criar a instância de auto-inicialização:

juju bootstrap --upload-tools --debug

Usamos a opção upload-tools para usar as versões locais das ferramentas que acabamos de buscar. A opção de depuração fornecerá uma saída detalhada que pode ser útil. Esse processo pode levar alguns minutos, pois Juju está criando uma instância e instalando as ferramentas. Quando terminar, você pode verificar o status do sistema com o comando:

juju status

Isso deve retornar algo como:

environment: maas
machines:
  "0":
    agent-state: started
    agent-version: 1.18.1.1
    dns-name: localhost
    instance-id: localhost
    series: trusty

Implantar os encantos do OpenStack

Agora que o nó de inicialização Juju está em funcionamento, podemos implantar os serviços necessários para fazer a instalação do OpenStack. Para configurar esses serviços corretamente à medida que eles são implantados, usaremos o arquivo de configuração que definimos anteriormente, passando-o junto com o --configswitch com cada comando deploy. Substitua o nome e o caminho do seu arquivo de configuração, se diferente.

É útil, mas não essencial, implantar os serviços na ordem abaixo. Também é altamente recomendável abrir uma janela de terminal adicional e executar o comando juju debug-log. Isso produzirá os logs de todos os serviços à medida que são executados e pode ser útil para solucionar problemas.

Também é recomendável executar um juju statuscomando periodicamente, para verificar se cada serviço foi instalado e está sendo executado corretamente. Juju tentará automaticamente buscar a melhor versão possível do encanto na Charm Store online. Se você estiver instalando a partir de uma rede restrita ou fechada, é possível buscar previamente os encantos necessários. Consulte [a documentação para encantos offline] [charms-offline].

juju deploy --to=0 juju-gui
juju deploy rabbitmq-server
juju deploy mysql
juju deploy --config openstack-config.yaml openstack-dashboard
juju deploy --config openstack-config.yaml keystone
juju deploy --config openstack-config.yaml ceph -n 3 
juju deploy --config openstack-config.yaml nova-compute -n 3
juju deploy --config openstack-config.yaml quantum-gateway
juju deploy --config openstack-config.yaml cinder
juju deploy --config openstack-config.yaml nova-cloud-controller
juju deploy --config openstack-config.yaml glance
juju deploy --config openstack-config.yaml ceph-radosgw

Adicionar relações entre os serviços OpenStack

Embora os serviços agora estejam implantados, eles ainda não estão conectados. Cada serviço existe atualmente isoladamente. Usamos o juju add-relation comando para torná-los cientes um do outro e configurar quaisquer conexões e protocolos relevantes. Essa configuração extra é cuidada pelos encantos individuais.

Devemos começar a adicionar relações entre os encantos, configurando o serviço de autorização Keystone e seu banco de dados, pois isso será necessário para muitas das outras conexões:

juju add-relation keystone mysql

Esperamos até que a relação seja estabelecida. Depois que terminar, verifique-o com o status juju:

juju status mysql
juju status keystone

Pode levar alguns instantes para que esse serviço seja resolvido. Embora seja certamente possível continuar adicionando relações (Juju gerencia uma fila para ações pendentes), pode ser contraproducente em termos do tempo total gasto, pois muitas das relações se referem aos mesmos serviços.

As seguintes relações também precisam ser feitas:

juju add-relation nova-cloud-controller mysql
juju add-relation nova-cloud-controller rabbitmq-server
juju add-relation nova-cloud-controller glance
juju add-relation nova-cloud-controller keystone
juju add-relation nova-compute mysql
juju add-relation nova-compute rabbitmq-server
juju add-relation nova-compute glance
juju add-relation nova-compute nova-cloud-controller
juju add-relation glance mysql
juju add-relation glance keystone
juju add-relation cinder keystone
juju add-relation cinder mysql
juju add-relation cinder rabbitmq-server
juju add-relation cinder nova-cloud-controller
juju add-relation openstack-dashboard keystone
juju add-relation swift-proxy swift-storage
juju add-relation swift-proxy keystone

Finalmente, a saída do status juju deve mostrar todas as relações como completas. A nuvem do OpenStack agora está em execução, mas precisa ser preenchida com alguns componentes adicionais antes de estar pronta para uso.




Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.