Skip to content
Snippets Groups Projects
multi-regions.rst 5.21 KiB
Newer Older
  • Learn to ignore specific revisions
  • rcherrueau's avatar
    rcherrueau committed
    .. _multi-regions:
    
    ======================================
    Multiple Regions Deployment with Kolla
    ======================================
    
    This section describes how to perform a basic multiple regions deployment
    with Kolla. A basic multiple regions deployment consists of separate
    OpenStack installation in two or more regions (RegionOne, RegionTwo, ...)
    with a shared Keystone and Horizon. The rest of this documentation assumes
    Keystone and Horizon are deployed in RegionOne, and other regions have
    
    access to the admin endpoint (for example, ``kolla_internal_fqdn``) of
    RegionOne.
    
    rcherrueau's avatar
    rcherrueau committed
    It also assumes that the operator knows the name of all OpenStack regions
    in advance, and considers as many Kolla deployments as there are regions.
    
    
    There is specifications of multiple regions deployment at
    `Multi Region Support for Heat
    <https://wiki.openstack.org/wiki/Heat/Blueprints/Multi_Region_Support_for_Heat>`__.
    
    rcherrueau's avatar
    rcherrueau committed
    
    Deployment of the first region with Keystone and Horizon
    
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    
    rcherrueau's avatar
    rcherrueau committed
    
    Deployment of the first region results in a typical Kolla deployment
    whenever, it is an *all-in-one* or *multinode* deployment (see
    :doc:`quickstart`). It only requires slight modifications in the
    ``/etc/kolla/globals.yml`` configuration file. First of all, ensure that
    Keystone and Horizon are enabled:
    
    
    .. code-block:: console
    
    rcherrueau's avatar
    rcherrueau committed
    
       enable_keystone: "yes"
       enable_horizon: "yes"
    
    
    rcherrueau's avatar
    rcherrueau committed
    Then, change the value of ``multiple_regions_names`` to add names of other
    regions. In this example, we consider two regions. The current one,
    formerly knows as RegionOne, that is hided behind
    ``openstack_region_name`` variable, and the RegionTwo:
    
    
    .. code-block:: yaml
    
    rcherrueau's avatar
    rcherrueau committed
    
       openstack_region_name: "RegionOne"
       multiple_regions_names:
           - "{{ openstack_region_name }}"
           - "RegionTwo"
    
    
    .. end
    
    .. note::
    
       Kolla uses these variables to create necessary endpoints into
       Keystone so that services of other regions can access it. Kolla
       also updates the Horizon ``local_settings`` to support multiple
       regions.
    
    rcherrueau's avatar
    rcherrueau committed
    
    Finally, note the value of ``kolla_internal_fqdn`` and run
    ``kolla-ansible``. The ``kolla_internal_fqdn`` value will be used by other
    regions to contact Keystone. For the sake of this example, we assume the
    value of ``kolla_internal_fqdn`` is ``10.10.10.254``.
    
    Deployment of other regions
    
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~
    
    rcherrueau's avatar
    rcherrueau committed
    
    Deployment of other regions follows an usual Kolla deployment except that
    OpenStack services connect to the RegionOne's Keystone. This implies to
    update the ``/etc/kolla/globals.yml`` configuration file to tell Kolla how
    to reach Keystone. In the following, ``kolla_internal_fqdn_r1`` refers to
    the value of ``kolla_internal_fqdn`` in RegionOne:
    
    
    .. code-block:: yaml
    
    rcherrueau's avatar
    rcherrueau committed
    
       kolla_internal_fqdn_r1: 10.10.10.254
    
    
    zhubingbing's avatar
    zhubingbing committed
       keystone_admin_url: "{{ admin_protocol }}://{{ kolla_internal_fqdn_r1 }}:{{ keystone_admin_port }}"
       keystone_internal_url: "{{ internal_protocol }}://{{ kolla_internal_fqdn_r1 }}:{{ keystone_public_port }}"
    
    rcherrueau's avatar
    rcherrueau committed
    
       openstack_auth:
           auth_url: "{{ admin_protocol }}://{{ kolla_internal_fqdn_r1 }}:{{ keystone_admin_port }}"
           username: "admin"
           password: "{{ keystone_admin_password }}"
           project_name: "admin"
    
           domain_name: "default"
    
    rcherrueau's avatar
    rcherrueau committed
    
    
    zhubingbing's avatar
    zhubingbing committed
    Configuration files of cinder,nova,neutron,glance... have to be updated to
    
    rcherrueau's avatar
    rcherrueau committed
    contact RegionOne's Keystone. Fortunately, Kolla offers to override all
    configuration files at the same time thanks to the
    ``node_custom_config`` variable (see :ref:`service-config`). This
    implies to create a ``global.conf`` file with the following content:
    
    
    .. code-block:: ini
    
    rcherrueau's avatar
    rcherrueau committed
    
       [keystone_authtoken]
    
    confi-surya's avatar
    confi-surya committed
       www_authenticate_uri = {{ keystone_internal_url }}
    
    rcherrueau's avatar
    rcherrueau committed
       auth_url = {{ keystone_admin_url }}
    
    
    rcherrueau's avatar
    rcherrueau committed
    The Placement API section inside the nova configuration file also has
    to be updated to contact RegionOne's Keystone. So create, in the same
    directory, a ``nova.conf`` file with below content:
    
    
    .. code-block:: ini
    
    rcherrueau's avatar
    rcherrueau committed
    
       [placement]
       auth_url = {{ keystone_admin_url }}
    
    
    zhubingbing's avatar
    zhubingbing committed
    The Heat section inside the configuration file also
    has to be updated to contact RegionOne's Keystone. So create, in the same
    directory, a ``heat.conf`` file with below content:
    
    
    .. code-block:: ini
    
    
    zhubingbing's avatar
    zhubingbing committed
       [trustee]
    
    confi-surya's avatar
    confi-surya committed
       www_authenticate_uri = {{ keystone_internal_url }}
    
    zhubingbing's avatar
    zhubingbing committed
       auth_url = {{ keystone_internal_url }}
    
       [ec2authtoken]
    
    confi-surya's avatar
    confi-surya committed
       www_authenticate_uri = {{ keystone_internal_url }}
    
    zhubingbing's avatar
    zhubingbing committed
    
       [clients_keystone]
    
    confi-surya's avatar
    confi-surya committed
       www_authenticate_uri = {{ keystone_internal_url }}
    
    zhubingbing's avatar
    zhubingbing committed
    The Ceilometer section inside the configuration file also
    has to be updated to contact RegionOne's Keystone. So create, in the same
    directory, a ``ceilometer.conf`` file with below content:
    
    
    .. code-block:: ini
    
       [service_credentials]
       auth_url = {{ keystone_internal_url }}
    
    .. end
    
    rcherrueau's avatar
    rcherrueau committed
    And link the directory that contains these files into the
    ``/etc/kolla/globals.yml``:
    
    
    .. code-block:: yaml
    
    rcherrueau's avatar
    rcherrueau committed
    
       node_custom_config: path/to/the/directory/of/global&nova_conf/
    
    
    rcherrueau's avatar
    rcherrueau committed
    Also, change the name of the current region. For instance, RegionTwo:
    
    
    .. code-block:: yaml
    
    rcherrueau's avatar
    rcherrueau committed
    
       openstack_region_name: "RegionTwo"
    
    
    rcherrueau's avatar
    rcherrueau committed
    Finally, disable the deployment of Keystone and Horizon that are
    unnecessary in this region and run ``kolla-ansible``:
    
    
    .. code-block:: yaml
    
    rcherrueau's avatar
    rcherrueau committed
    
       enable_keystone: "no"
       enable_horizon: "no"
    
    
    rcherrueau's avatar
    rcherrueau committed
    The configuration is the same for any other region.