¿Cómo implemento una nube OpenStack con Juju?


15

Me gustaría tener una nube de prueba en funcionamiento en preparación para una posible implementación de 12.04. Me metí un poco con el UEC, pero me ha resultado mucho más difícil encontrar algo útil como manual para la nueva pila. Hay documentación genérica sobre Diablo, pero es probable que ya haya muchas piezas útiles en Ubuntu con las que una guía específica podría ahorrar tiempo.

Además, por mucho que me gustaría, mi presupuesto no incluye los $ 4-6k para ejecutar un pequeño clúster con el soporte Canonical.

Respuestas:


17

Instalar OpenStack

Si desea ponerse en marcha rápidamente, vaya aquí:

Esta respuesta es una mirada más detallada sobre cómo usar Juju con OpenStack.

Alcance

La plataforma OpenStack es potente y sus usos son diversos. Esta sección de documentación se refiere principalmente a la implementación de un sistema OpenStack "estándar" que utiliza, entre otros, componentes canónicos como MAAS, Juju y Ubuntu. En su caso, se mencionarán otros métodos y software.

Supuestos

  1. Uso de MAAS : siga estas instrucciones primero.
  2. Uso de juju
  3. Configuración de red local: en este documento se supone que tiene una configuración de red local adecuada, incluidas interfaces separadas para acceder a la nube OpenStack. Las redes ideales se presentan en la [MAAS] [documentación de MAAS para OpenStack].

Planeando una instalación

Antes de desplegar cualquier servicio, es muy útil hacer un balance de los recursos disponibles y cómo se van a utilizar. OpenStack consta de una serie de servicios interrelacionados (Nova, Swift, etc.) que tienen diferentes demandas en términos de hosts. Por ejemplo, el servicio Swift, que proporciona almacenamiento de objetos, tiene un requisito diferente que el servicio Nova, que proporciona recursos informáticos.

Los requisitos mínimos para cada servicio y las recomendaciones se establecen en la Guía oficial de operaciones de OpenStack

La composición recomendada de los nodos para implementar OpenStack con MAAS y Juju es que todos los nodos en el sistema deben ser capaces de ejecutar CUALQUIERA de los servicios. Esta es la mejor práctica para la robustez del sistema, ya que como cualquier nodo físico debería fallar, otro puede ser reutilizado para tomar su lugar. Obviamente, esto se extiende a cualquier requisito de hardware, como interfaces de red adicionales.

Si por razones de economía o de lo contrario elige utilizar diferentes configuraciones de hardware, debe tener en cuenta que su capacidad para superar las fallas de hardware se reducirá. También será necesario dirigir implementaciones a nodos específicos; consulte la sección en la documentación de MAAS sobre etiquetas .

Crear el archivo de configuración de OpenStack

Utilizaremos los encantos de Juju para desplegar las partes componentes de OpenStack. Cada encanto encapsula todo lo necesario para configurar un servicio en particular. Sin embargo, los servicios individuales tienen muchas opciones de configuración, algunas de las cuales querremos cambiar.

Para hacer esta tarea más fácil y más reproducible, crearemos un archivo de configuración separado con las opciones relevantes para todos los servicios. Esto está escrito en un formato estándar de YAML ( consulte www.yaml.org si no le resulta familiar ).

Aquí hay un ejemplo de 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 los servicios, podemos configurarlo openstack-originpara que apunte a una fuente de instalación. En este caso, confiaremos en el valor predeterminado, que señalará las fuentes relevantes para la versión Ubuntu 14.04 LTS Trusty. La configuración adicional para cada servicio se explica en este documento .

Otras configuraciones

Otras configuraciones y opciones de configuración son posibles para la implementación de los servicios OpenStack. Estos se detallan en la documentación de los encantos individuales utilizados por Juju, y se pueden inspeccionar visitando la tienda de encantos Juju en línea y buscando el amuleto usando el cuadro de búsqueda en la parte superior izquierda de la página. los ajustes de configuración se detallan en "Configuración" en la página principal, como se muestra:

ingrese la descripción de la imagen aquí

Implementando OpenStack con Juju

Ahora que la configuración está definida, podemos usar Juju para implementar y relacionar los servicios.

Inicializando Juju

Juju requiere una cantidad mínima de configuración. Aquí suponemos que ya se ha configurado para funcionar con su clúster MAAS (consulte la [Guía de instalación de Juju] [juju_install] para obtener más información al respecto).

En primer lugar, necesitamos buscar imágenes y herramientas que Juju usará:

juju sync-tools --debug

Entonces podemos crear la instancia de bootstrap:

juju bootstrap --upload-tools --debug

Usamos el interruptor de herramientas de carga para usar las versiones locales de las herramientas que acabamos de obtener. El modificador de depuración dará una salida detallada que puede ser útil. Este proceso puede demorar unos minutos, ya que Juju está creando una instancia e instalando las herramientas. Cuando haya terminado, puede verificar el estado del sistema con el comando:

juju status

Esto debería devolver algo como:

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

Implemente los encantos de OpenStack

Ahora que el nodo de arranque de Juju está en funcionamiento, podemos implementar los servicios necesarios para realizar nuestra instalación de OpenStack. Para configurar estos servicios correctamente a medida que se implementan, haremos uso del archivo de configuración que definimos anteriormente, pasándolo junto con el--config conmutador con cada comando de implementación. Sustituya el nombre y la ruta de su archivo de configuración si es diferente.

Es útil pero no esencial implementar los servicios en el orden siguiente. También se recomienda abrir una ventana de terminal adicional y ejecutar el comando juju debug-log. Esto generará los registros de todos los servicios a medida que se ejecutan, y puede ser útil para la resolución de problemas.

También se recomienda ejecutar un juju statuscomando periódicamente para verificar que cada servicio se haya instalado y se esté ejecutando correctamente. Juju intentará obtener automáticamente la mejor versión posible del amuleto en la tienda de encantamientos en línea. Si está instalando desde una red restringida o cerrada, es posible obtener previamente los encantos necesarios. Consulte [la documentación para encantos fuera de línea] [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

Agregar relaciones entre los servicios de OpenStack

Aunque los servicios ahora están implementados, aún no están conectados entre sí. Cada servicio existe actualmente de forma aislada. Utilizamos eljuju add-relation comando para que se conozcan entre sí y configuramos las conexiones y protocolos relevantes. Esta configuración adicional se ocupa de los encantos individuales.

Deberíamos comenzar a agregar relaciones entre encantos configurando el servicio de autorización Keystone y su base de datos, ya que esto será necesario para muchas de las otras conexiones:

juju add-relation keystone mysql

Esperamos hasta que se establezca la relación. Después de que termine, verifíquelo con el estado de juju:

juju status mysql
juju status keystone

Este servicio puede demorar unos minutos en establecerse. Aunque ciertamente es posible continuar agregando relaciones (Juju maneja una cola para acciones pendientes) puede ser contraproducente en términos del tiempo total que toma, ya que muchas de las relaciones se refieren a los mismos servicios.

También se deben establecer las siguientes relaciones:

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, la salida del estado de juju debe mostrar todas las relaciones como completas. La nube OpenStack ahora se está ejecutando, pero debe rellenarse con algunos componentes adicionales antes de que esté lista para su uso.




Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.