• Ventas: 1-800-961-2888
  • Servicio: 1-800-961-4454

Instalar OpenStack con herramientas de Rackspace Private Cloud


Este documento analiza el proceso para instalar un ambiente de OpenStack con los cookbooks de Rackspace Private Cloud.

Antes de comenzar, se recomienda encarecidamente que revise los Prerrequisitos de instalación y conceptos para asegurarse de haber completado todas las preparaciones necesarias para el proceso de instalación.

Para obtener más información sobre OpenStack Networking (Neutron, anteriormente llamado Quantum), vea Configurar OpenStack Networking.

NOTA: para obtener más información sobre Rackspace Private Cloud v. 2.0 y v. 3.0, consulte Rackspace Private Cloud Software: versiones archivadas.

Contenidos

Preparar los nodos
Instalar Chef Server, cookbooks y chef-client
Instalar Chef Server
Instalar los cookbooks de Rackspace Private Cloud
Instalar chef-client
Instalar OpenStack
Resumen de la configuración
Crear un ambiente
Definir los atributos de red
Configurar los ambientes de los nodos
Agregar un nodo de controlador
Agregar un nodo de cómputo
Alta disponibilidad de nodos de controlador
Resolución de problemas de instalación

Este capítulo analiza el proceso para instalar un ambiente de OpenStack con los cookbooks de Rackspace Private Cloud. Para redes, estas instrucciones solo se aplican a la configuración predeterminada de nova-network . Para obtener más información sobre OpenStack Networking (Neutron, anteriormente llamado Quantum), consulte Configurar OpenStack Networking.

El proceso de instalación se divide en las siguientes etapas:

  • Preparar los nodos
  • Instalar el servidor Chef, los cookbooks de Rackspace Private Cloud, y chef-client
  • Crear un ambiente Chef y definir los atributos
  • Configurar los ambientes de los nodos
  • Aplicar los roles de controlador y cómputo a los nodos
Nota

Antes de comenzar, Rackspace recomienda que revise los Prerrequisitos de instalación y conceptos para asegurarse de haber completado todas las preparaciones necesarias para el proceso de instalación.

Preparar los nodos

Antes de comenzar, asegúrese de que el sistema operativo tenga los nodos actualizados. Ingrese a cada nodo y ejecute la actualización adecuada para el sistema operativo y el administrador de paquetes.

También debe tener un usuario administrativo (por ejemplo, admin) con el mismo nombre de usuario configurado en todos los nodos que serán parte de su ambiente.

Instalar Chef Server, cookbooks y chef-client

Su ambiente debe tener un servidor Chef, las últimas versiones de los cookbooks de Rackspace Private Cloud, y chef-client en cada nodo dentro del ambiente. Primero debe instalar el nodo del servidor Chef.

La instalación se realiza mediante un comando curl que ejecuta un script de instalación. El script descarga los paquetes desde GitHub y los utiliza para instalar los componentes. Puede revisar los scripts en el repositorio GitHub en el siguiente enlace https://github.com/rcbops/support-tools/tree/master/chef-install.

Antes de comenzar, asegúrese de que el curl esté disponible, o instálelo con apt-get install -y curl en Ubuntu o con yum install curl en CentOS.

Instalar Chef Server

El servidor Chef debe ser un dispositivo al que puedan acceder los dispositivos que se configurarán como nodos del clúster de OpenStack en los puertos 443 y 80. En las distribuciones con iptables, es posible que necesite habilitar el acceso en estos puertos.

Por defecto, el script instala Chef 11.0.8 con una serie de contraseñas generadas al azar y también instala una configuración de Knife que se establece para el usuario de raíz.

Las siguientes variables se agregan a su ambiente:

  • CHEF_SERVER_VERSION: por defecto es 11.0.8
  • CHEF_URL: por defecto es https://<hostURL>:443
  • CHEF_UNIX_USER: el usuario para quien se establece la configuración de Knife; por defecto es root.
  • Una serie de contraseñas generadas al azar:
    • CHEF_WEBUI_PASSWORD
    • CHEF_AMQP_PASSWORD
    • CHEF_POSTGRESQL_PASSWORD
    • CHEF_POSTGRESQL_RO_PASSWORD
  1. Ingrese al dispositivo que será el servidor Chef, luego descargue y ejecute el 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. Lea el archivo de ambiente para habilitar el comando knife.
    # source /root/.bash_profile
                                
  3. Ejecute el siguiente comando para asegurarse de que knife funcione correctamente.
    # knife client list
                            

Si el comando se ejecuta con éxito, la instalación ha finalizado. Si no se ejecuta con éxito, es posible que necesite salir del servidor y volver a ingresar para recuperar el ambiente.

Instalar los cookbooks de Rackspace Private Cloud

Los cookbooks de Rackspace Private Cloud se configuran como submódulos Git y están hospedados en http://github.com/rcbops/chef-cookbooks, con repositorios de cookbooks individuales en http://github.com/rcbops-cookbooks.

El siguiente procedimiento describe el proceso de descarga para todo el sitio, pero también puede descargar los repositorios de cookbooks individuales, como el repositorio Nova en https://github.com/rcbops-cookbooks/nova.

  1. Ingrese a su servidor Chef o a una estación de trabajo que tenga acceso de knife al servidor Chef.
  2. Verifique que el archivo de configuración knife.rb contenga la configuración cookbook_path correcta.
  3. Use git clone para descargar los cookbooks.
    # git clone https://github.com/rcbops/chef-cookbooks.git
                            
  4. Navegue por el directorio de chef-cookbooks.
    # cd chef-cookbooks
                                
  5. Verifique la versión deseada de los cookbooks. Las versiones actuales son v4.2.2 y v4.1.3.
    # git checkout <version>
    # git submodule init
    # git submodule sync
    # git submodule update
                            
  6. Cargue los cookbooks al servidor Chef.
    # knife cookbook upload -a -o cookbooks 
                            
  7. Aplique los roles actualizados.
    # knife role from file roles/*rb 
                            

Sus cookbooks de Chef ahora están actualizados.

Instalar chef-client

Todos los nodos en su clúster de OpenStack necesitan tener chef-client instalado y configurado para comunicarse con el servidor Chef. Puede completar este paso fácilmente usando el comando knife bootstrap. Los nodos en los que se configurará el clúster de OpenStack Object Storage deben poder acceder al servidor Chef en los puertos 443 y 80. Tenga en cuenta que esto no funcionará si está detrás de un proxy HTTP.

Cada nodo de cliente debe tener un nombre de host resoluble. Si el nombre de host no se puede resolver, los nodos no podrán controlarse bien.

  1. Ingrese al servidor Chef como usuario de raíz.
  2. Genere una clave ssh con el comando ssh-keygen. Acepte las configuraciones predeterminadas cuando aparezcan.
  3. Use el comando knife bootstrap para arrancar los nodos en el servidor Chef. Este comando instala chef-client en el nodo de destino y le permite comunicarse con el servidor. Especificará el nombre del ambiente, el nombre de usuario que estará asociado con la clave ssh y la dirección de IP del nodo.

    Para un nodo de controlador único:

    # knife bootstrap -E <environmentName> -i .ssh/id_rsa_private \
      --sudo -x <sshUserName> <nodeIPAddress>
    
  4. Después de haber completado el proceso de arranque en cada nodo, debe agregar la dirección de IP y el nombre de host del servidor Chef al archivo /etc/hosts de cada nodo. Ingrese al primer nodo cliente y abra /etc/hosts con su editor de texto preferido.
  5. Agregue una línea con la dirección de IP y el nombre de host del servidor Chef en el siguiente formato:
    <chefServerIPAddress> <chefServerHostName>
                            
  6. Guarde el archivo.

Repita el paso 3 al 6 por cada nodo del ambiente.

Instalar OpenStack

Hasta este punto, ha creado ahora un sistema de administración de configuraciones para el clúster de su OpenStack, basado en Chef, y le ha dado a Chef la capacidad de gestionar los nodos en el ambiente. Ahora está listo para usar los cookbooks de Rackspace Private Cloud para implementar OpenStack.

Esta sección muestra una instalación de OpenStack típica e incluye información adicional sobre cómo personalizar o modificar su instalación.

Resumen de la configuración

Una instalación de OpenStack típica configurada con los cookbooks de Rackspace Private Cloud consta de los siguientes componentes:

  • Uno o dos nodos de controlador de infraestructura que hospeda servicios centrales, como rabbitmq, MySQL y el panel Horizon. Estos nodos se denominarán "nodos de controlador" en este documento.
  • Uno o más servidores que hospedan máquinas virtuales. Estos nodos se denominarán "nodos de cómputo".
  • Si está usando OpenStack Networking, es posible que tenga un nodo de red independiente. Los roles de redes también se pueden aplicar al nodo de controlador. Esto se explica detalladamente en la sección Configurar OpenStack Networking.

Los cookbooks se basan en los siguientes supuestos:

  • Todos los servicios de OpenStack, como Nova y Glance, usan MySQL como base de datos.
  • La alta disponibilidad es proporcionada por VRRP.
  • El balanceo de carga es proporcionado por haproxy.
  • KVM es el hipervisor.
  • La red será plana y de alta disponibilidad como nova-network, o estará controlada por Neutron.

Hay más información disponible en la página Arquitecturas de referencia para Rackspace Private Cloud.

Crear un ambiente

El primer paso es crear un ambiente en el servidor Chef. En este ejemplo, el comando knife environment create se usa para crear un ambiente llamado private-cloud. La marca -d se usa para agregar una descripción del ambiente.

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

Esto crea un archivo de ambiente JSON que se puede editar directamente para agregar atributos específicos a la configuración. Para editar el ambiente, ejecute el comando knife environment edit:

# knife environment edit private-cloud
                

Se abrirá un editor de texto donde se puede modificar las configuraciones del ambiente o agregar atributos de sobreescritura .

Definir los atributos de red

Ahora debe agregar una serie de atributos de sobreescritura para definir las redes nova, pública y de administración en su ambiente. Para obtener más información sobre lo que necesita para configurar redes, consulte los Requisitos de red.

Nota

Esta información es para configurar nova-network, que es la red que un ambiente de Rackspace Private Cloud usa por defecto. Si desea usar OpenStack Networking, vea Configurar OpenStack Networking.

Para definir atributos de sobreescritura, necesitará ejecutar el comando knife environment edit y agregar una sección de redes, que sustituye su información de red.

Los cookbooks v4.2.2 y v4.1.3 usan sintaxis hash para definir los atributos de red. La sintaxis es la siguiente:

"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>"
    }
}
                

El siguiente ejemplo muestra la configuración de un ambiente en el que las tres redes se incorporan en una red física única. Esta red tiene una dirección de IP dentro del rango 192.0.2.0/24. Todos los servicios internos, terminales API y funciones de monitoreo y gestión se ejecutan sobre esta red. Las máquinas virtuales (VM, por sus siglas en inglés) se ejecutan en una red 198.51.100.0/24 en eth1, conectadas a un puente llamado 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"
    }
}
                

Configurar los ambientes de los nodos

Para garantizar que todos los cambios se hagan correctamente, ahora debe configurar los ambientes de los nodos cliente para coincidir con el nodo creado en el servidor Chef. Cuando haya ingresado al servidor Chef, ejecute el siguiente comando:

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

Este comando actualizará el ambiente en todos los nodos del clúster. Tenga en cuenta que si tiene nodos que no son de OpenStack en su clúster, sus ambientes también se alterarán.

Agregar un nodo de controlador

El nodo de controlador (también conocido como nodo de infraestructura) se debe instalar antes de agregar cualquier nodo de cómputo. Hasta que la ejecución de chef-client para el nodo de controlador esté completa, la información de terminal no será reenviada al servidor Chef y los nodos de cómputo no estarán disponibles para ubicarse en, o conectarse a, servicios de infraestructura.

Un dispositivo al que se le asigna el rol ha-controller1 incluirá todos los servicios principales de OpenStack y debe utilizarse, incluso, en ambientes no AD. Para obtener más información sobre DA, consulte Alta disponibilidad de nodos de controlador.

Nota

Rackspace SOLO vende y admite una arquitectura de controlador doble. Los clientes de servicio técnico básico y flexibilización deben implementar siempre las configuraciones de controlador doble DA. Los usuarios que instalan una nube de controlador simple no recibirán servicio técnico de Rackspace. Comuníquese con su representante de servicio técnico de Rackspace para obtener más información.

Este procedimiento asume que ya tiene instalado chef-client en su dispositivo, como se describe en Instalar Chef Client, y que ha ingresado en el servidor Chef.

  1. Agregue el rol ha-controller1 a la lista de ejecución del nodo de destino.
    # knife node run_list add <deviceHostname> 'role[ha-controller1]'
                                
  2. Ingrese al nodo de destino vía ssh.
  3. Ejecute chef-client en el nodo.

Llevará varios minutos hasta que chef-client complete las tareas de instalación. chef-client le brindará un análisis para ayudarle a monitorear el progreso de la instalación.

Alta disponibilidad de nodos de controlador

Al crear dos nodos de controlador en el ambiente y aplicar los roles ha-controller* en ellos, puede crear un par de nodos de controlador que ofrezcan AD con VRRP y sean monitoreados por keepalived. Cada servicio tiene un VIP propio, y las fallas se producen por servicio. Consulte Conceptos de alta disponibilidad para obtener más información sobre la configuración de AD.

Antes de configurar la AD en su ambiente, debe asignar direcciones de IP para los VIP de MySQL, rabbitmq y haproxy en una interfaz disponible para ambos nodos de controlador. Después agregará los VIP a los atributos de sobreescritura.

Nota

Si desea actualizar su ambiente desde una configuración anterior donde el VIP de vrid y las redes no estaban definidos, es posible que tenga que eliminar las configuraciones de keepalived en /etc/keepalived/conf.d/* y ejecutar chef-client antes de agregar las definiciones VIP de vrid y redes a override_attributes.

Bloques de atributos de Havana VIP

Estos bloques de atributos definen qué VIP se asocia con cada servicio, y también definen el ID de enrutador virtual (vrid) y la red para cada VIP. Solo es necesario especificar el VIP neutron-api si implementará OpenStack Networking.

Estos son algunos ejemplos de atributos para una configuración v4.2.2 (Havana) VIP en la que RabbitMQ VIP equivale a 192.0.2.51, el HAProxy VIP es 192.0.2.52 y el MySQL VIP es 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" } } } }

Bloques de atributos Grizzly VIP

Estos bloques de atributos definen qué VIP se asocia con cada servicio, y también definen el ID de enrutador virtual (vrid) y la red para cada VIP. Solo es necesario especificar el VIP quantum-api si implementará OpenStack Networking.

Estos son ejemplos de atributos para la configuración v4.1.n (Grizzly) VIP en la que RabbitMQ VIP equivale a 192.0.2.51, el HAProxy VIP es 192.0.2.52 y el MySQL VIP es 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"
            }
        }
    }
}
 

Instalar un par de nodos de controlador de alta disponibilidad

Siga este procedimiento para editar su archivo de ambiente y aplicar los roles de controlador DA a sus nodos de controlador.

  1. Abra el archivo del ambiente para editarlo.
    # knife environment edit <yourEnvironmentName>
                                
  2. Localice la sección override_attributes.
  3. Agregue la información de VIP a los override_attributes.
    • Si desea implementar un ambiente v4.2.2 Havana, consulte Atributos de Havana VIP.
    • Si desea implementar un ambiente v4.1.n Grizzly, consulte los atributos para Grizzly VIP.
  4. En el primer nodo de controlador, agregue el rol ha-controller1.
    # knife node run_list add <deviceHostname> 'role[ha-controller1]'
                                
  5. En el segundo nodo de controlador, agregue el rol ha-controller2.
    # knife node run_list add <deviceHostname> 'role[ha-controller2]'
                                
  6. Ejecute chef-client en el primer nodo de controlador.
  7. Ejecute chef-client en el segundo nodo de controlador.
  8. Vuelva a ejecutar chef-client en el primer nodo de controlador.

Agregar un nodo de cómputo

Los nodos de cómputo se pueden instalar después de que la instalación del nodo de controlador haya terminado.

  1. Agregue el rol single-compute a la lista de ejecución del nodo de destino.
    # knife node run_list add <deviceHostname> 'role[single-compute]'
                                
  2. Ingrese al nodo de destino vía ssh.
  3. Ejecute chef-client en el nodo.

Llevará varios minutos hasta que chef-client complete las tareas de instalación. chef-client le brindará un análisis para ayudarle a monitorear el progreso de la instalación.

Repita este proceso en cada nodo de cómputo. También necesitará ejecutar chef-client en cada nodo de cómputo existente cuando se agreguen nodos de cómputo adicionales.

Resolución de problemas de instalación

Si la instalación falla, es posible que esté ocurriendo uno de los siguientes problemas.

  • El nodo no tiene acceso a Internet. El proceso de instalación requiere acceso a Internet para descargar los archivos de instalación, así que asegúrese de que la dirección para los nodos ofrezca ese acceso y que la información de proxy ingresada sea la correcta. También debe garantizar que los nodos tengan acceso a un servidor DNS.
  • Su firewall de red no permite el acceso a Internet. Asegúrese de que la dirección de IP que asignó al controlador esté habilitada a través de la firewall de red.

Para acceder a más información y a discusiones de usuarios sobre la resolución de problemas, puede consultar el Foro de servicio técnico de Rackspace Private Cloud en el siguiente URL:

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







© 2011-2013 Rackspace US, Inc.

Excepto cuando se indique lo contrario, el contenido de este sitio está bajo una licencia Creative Commons Attribution-NonCommercial-NoDerivs 3.0 Unported License


Ver especificaciones de licencia y DESCARGO DE RESPONSABILIDAD