使用 Kolla 进行多区域部署

本节描述如何使用 Kolla 执行基本的多个区域部署。基本的多个区域部署包括两个或多个区域(RegionOne、RegionTwo、…)中的独立 OpenStack 安装,并共享 Keystone 和 Horizon。本文档的其余部分假定 Keystone 和 Horizon 部署在 RegionOne 中,并且其他区域可以访问 RegionOne 的内部端点(例如,kolla_internal_fqdn)。它还假定操作员提前知道所有 OpenStack 区域的名称,并且每个区域都有一个 Kolla 部署。

关于多区域部署的规范可在 Heat 的多区域支持 处找到。

部署第一个区域,包含 Keystone 和 Horizon

部署第一个区域会产生典型的 Kolla 部署,无论是一体化还是多节点部署(请参阅 部署/评估的快速入门)。它只需要在 /etc/kolla/globals.yml 配置文件中进行轻微修改。首先,确保已启用 Keystone 和 Horizon

enable_keystone: "yes"
enable_horizon: "yes"

然后,更改 multiple_regions_names 的值以添加其他区域的名称。在本例中,我们考虑两个区域。当前区域,以前称为 RegionOne,隐藏在 openstack_region_name 变量之后,以及 RegionTwo

openstack_region_name: "RegionOne"
multiple_regions_names:
    - "{{ openstack_region_name }}"
    - "RegionTwo"

注意

Kolla 使用这些变量在 Keystone 中创建必要的端点,以便其他区域的服务可以访问它。Kolla 还更新 Horizon 的 local_settings 以支持多个区域。

最后,请注意 kolla_internal_fqdn 的值并运行 kolla-ansible。其他区域将使用 kolla_internal_fqdn 值来联系 Keystone。为便于说明,我们假设 kolla_internal_fqdn 的值为 10.10.10.254

部署其他区域

部署其他区域遵循通常的 Kolla 部署,除了 OpenStack 服务连接到 RegionOne 的 Keystone。这意味着需要更新 /etc/kolla/globals.yml 配置文件,以告知 Kolla 如何访问 Keystone。在下文中,kolla_internal_fqdn_r1 指的是 RegionOne 中 kolla_internal_fqdn 的值

kolla_internal_fqdn_r1: 10.10.10.254

keystone_internal_url: "{{ internal_protocol }}://{{ kolla_internal_fqdn_r1 }}:{{ keystone_public_port }}"

openstack_auth:
    auth_url: "{{ keystone_internal_url }}"
    username: "{{ keystone_admin_user }}"
    password: "{{ keystone_admin_password }}"
    user_domain_name: "{{ default_user_domain_name }}"
    project_name: "{{ keystone_admin_project }}"
    domain_name: "default"

注意

如果 kolla_internal_vip_address 和/或 kolla_external_vip_address 位于与 kolla_internal_fqdn_r1 相同的子网中,则应在 /etc/kolla/globals.yml 中将 keepalived_virtual_router_id 的值设置为唯一的数字。

cinder、nova、neutron、glance… 的配置文件需要更新才能联系 RegionOne 的 Keystone。幸运的是,Kolla 允许您通过 node_custom_config 变量同时覆盖所有配置文件(请参阅 Kolla 中的 OpenStack 服务配置)。为此,创建一个 global.conf 文件,内容如下

[keystone_authtoken]
www_authenticate_uri = {{ keystone_internal_url }}
auth_url = {{ keystone_internal_url }}

nova 配置文件中的 Placement API 部分也需要更新,以联系 RegionOne 的 Keystone。因此,在同一目录中创建一个 nova.conf 文件,内容如下

[placement]
auth_url = {{ keystone_internal_url }}

配置文件中的 Heat 部分也需要更新,以联系 RegionOne 的 Keystone。因此,在同一目录中创建一个 heat.conf 文件,内容如下

[trustee]
www_authenticate_uri = {{ keystone_internal_url }}
auth_url = {{ keystone_internal_url }}

[ec2authtoken]
www_authenticate_uri = {{ keystone_internal_url }}

[clients_keystone]
www_authenticate_uri = {{ keystone_internal_url }}

配置文件中的 Ceilometer 部分也需要更新,以联系 RegionOne 的 Keystone。因此,在同一目录中创建一个 ceilometer.conf 文件,内容如下

[service_credentials]
auth_url = {{ keystone_internal_url }}

并将包含这些文件的目录链接到 /etc/kolla/globals.yml

node_custom_config: path/to/the/directory/of/global&nova_conf/

此外,更改当前区域的名称。例如,RegionTwo

openstack_region_name: "RegionTwo"

最后,禁用此区域中 Keystone 和 Horizon 的部署,因为它们是不必要的,并运行 kolla-ansible

enable_keystone: "no"
enable_horizon: "no"

对于任何其他区域,配置相同。