使用 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"
对于任何其他区域,配置相同。