La implementación de OpenStack de Landscape falla en Configurar zonas de disponibilidad

8

Uso de la opción "OpenStack Beta" de Landscape actual para implementar OpenStack en mi configuración MAAS. Llego al 98% de finalización, con 1 falla en "Configurar zonas de disponibilidad". Mi configuración utilizaba KVM, Open vSwitch y actualmente utilizo Ceph para el almacenamiento de objetos y bloques. Cuando miro el /var/log/landscape/job-handler-1.log en la máquina horizontal, veo más de 100 errores sobre:

2015-03-05 21:18:38 INFO root RetryingCall para '_get_nova_info' falló, intentando 103 veces más: 2015-03-05 21:18:38 INFO root Traceback:: Faltan 4 unidades nova-compute
/ usr /lib/python2.7/threading.py:783:__bootstrap
/usr/lib/python2.7/threading.py:810:__bootstrap_inner
/usr/lib/python2.7/threading.py:763:run
--- < excepción capturada aquí> ---
/usr/lib/python2.7/dist-packages/twisted/python/threadpool.py:191:_worker
/usr/lib/python2.7/dist-packages/twisted/python/context. PY: 118: callWithContext
/usr/lib/python2.7/dist-packages/twisted/python/context.py:81:callWithContext
/usr/lib/python2.7/dist-packages/storm/twisted/transact.py: 76: _wrap
/opt/canonical/landscape/canonical/landscape/model/openstack/jobs.py:751:_get_nova_info


NOTA : El número de línea en jobs.py está desactivado ya que agregué algunas declaraciones de impresión para la depuración. Es la afirmación en la función _get_nova_info () cerca de la línea # 741 (si la memoria sirve), y sí, estoy usando la versión más nueva de landscape a partir de hoy de la ppa de landscape para confianza.

Así que modifiqué /opt/canonical/landscape/canonical/landscape/model/openstack/jobs.py 's _get_nova_info () para imprimir la longitud de nova_compute_hostnames y obtuve cero . Así que lo busqué en /opt/canonical/landscape/canonical/landscape/model/openstack/region.py 's get_nova_compute_hostnames () y descubrí que self.juju_environment.get_computer_ids (). Count () también era cero . Entonces agregué una llamada a self.juju_environment.has_computers () y obtuve false . Luego ejecuté self.juju_environment.get_juju_home () y obtuve/ var / lib / landscape / juju-homes / 20 . (Sí, este es mi vigésimo intento en mi segunda reconstrucción de la caja del paisaje, he estado en esto por un tiempo). Así que ejecuté el estado de juju utilizando la casa de juju mencionada anteriormente y todo se veía bien. Se iniciaron las 5 máquinas y servicios, sin estados pendientes o de error. (incluidos los 4 nodos de nova-compute) ¿Alguna idea? Soy algo nuevo en horizontal, MAAS, JUJU y python, por lo que mi depuración es un poco lenta.


ACTUALIZACIÓN 1:

Según la solicitud, obtuve los 2 registros (aunque mi casa ahora es # 23), estado de juju y broker.log . Creo que ahora sé cuál es mi problema según el fragmento de broker.log a continuación. (Gracias dpb por señalarme allí) Mi máquina MAAS está dando la dirección DHCP a mi LXC horizontal, pero mi LXC horizontal no está en el DNS controlado por MAAS ya que no está aprovisionado por MAAS. Por lo tanto, las máquinas aprovisionadas no pueden conectarse al servidor horizontal por nombre.

Entonces eso me lleva a una pregunta relacionada, ¿hay una buena manera de que MAAS actualice automáticamente el DNS con máquinas que no están aprovisionadas (o bajo el control de MAAS)? Si no, tendré que darle una IP estática fuera de mi rango de DHCP y configurar manualmente el DNS.

2015-03-06 17: 09: 50,665 INFO [MainThread] El corredor comenzó con config /etc/landscape/client.conf
2015-03-06 17: 09: 52,382 INFO [MainThread] Iniciando el intercambio de mensajes urgentes con https: // landscape / mensaje-sistema .
2015-03-06 17: 09: 52,389 ERROR [PoolThread-twisted.internet.reactor-1] Error al contactar al servidor en https: // landscape / message-system .
Rastreo (última llamada más reciente):
Archivo "/usr/lib/python2.7/dist-packages/landscape/broker/transport.py", línea 71, en el
mensaje de intercambio_api )
Archivo "/usr/lib/python2.7/ dist-packages / landscape / broker / transport.py ", línea 45, en _curl
headers = headers, cainfo = self._pubkey, curl = curl))
Archivo "/usr/lib/python2.7/dist-packages/landscape/lib/fetch.py", línea 109, en la búsqueda
elevar PyCurlError (e.args [0], e.args 1 )
PyCurlError: Error 6: podría no resolver host: paisaje
2015-03-06 17: 09: 52,390 INFO [MainThread] Error en el intercambio de mensajes.
2015-03-06 17: 09: 52,391 INFO [MainThread] Intercambio de mensajes completado en 0.01s.


ACTUALIZACIÓN 2:

Mi configuración es un poco limitada, ya que solo me dieron 6 máquinas (5 nodos y 1 controlador) para mostrar las capacidades de OpenStack / Landscape, por lo que no puedo usar una máquina dedicada para el paisaje. Estaba usando el inicio rápido del servidor horizontal en un LXC en mi controlador MAAS para poder volar rápidamente y comenzar de nuevo.

así que eliminé la configuración horizontal y configuré el LXC a una IP estática, luego modifiqué el DNS (controlado por MAAS) para tener la entrada DNS estática para mi servidor horizontal. Luego instalé el servidor dedicado de Landscape en el LXC usando el método de inicio rápido de landscape-server mencionado anteriormente.

Después de esta reinstalación (principalmente para limpiar todo mi desorden de depuración) finalmente pude instalar OpenStack a través del paisaje. Gracias.

Master5597
fuente

Respuestas:

4

El mensaje "Falta N unidades de cómputo de nova" se trata de agentes de clientes de paisaje registrados de nuevo en paisaje. Compruebe /var/log/landscape/broker.loglas unidades que faltan.

ACTUALIZAR:

Como ha identificado correctamente, las cosas funcionan sin problemas si LDS (Servidor dedicado horizontal) está instalado en el mismo MAAS en el que vivirá su openstack, principalmente debido al enrutamiento de la red y al DNS. Sin embargo, existen innumerables variaciones de una topología válida con rutas entre redes, etc.

Algunas sugerencias sobre cosas para probar, léalas todas. Al final, deberá determinar su topología de implementación:

  • Para una prueba, implemente LDS en el mismo MAAS donde estará su taladro abierto, solo para verificar si las cosas funcionan allí. Utilice la herramienta de instalación openstack , o el paquete de paisaje-densa-maas con juju-quickstart directamente para facilitar esto.

  • Sus clientes deben poder comunicarse con LDS, como usted ha indicado. Si pueden enrutar por IP a donde se implementa LDS, puede derribar la instalación de openstack, cambiar la configuración de nombre de servidor apache e intentarlo de nuevo. juju set apache2 servername=IP_ADDRESS. Después de hacer esto, siga juju debug-log, asegúrese de que todo salga bien y asegúrese de que puede navegar a la GUI de LDS en esa https: // IP_ADDRESS / URL.

dpb
fuente