高可用镜像 API¶
OpenStack Image 服务提供了一个用于发现、注册和检索虚拟机镜像的服务。为了使 OpenStack Image API 服务在主动/被动模式下实现高可用性,您必须
先决条件¶
在开始之前,请确保您熟悉安装 OpenStack Image API 服务的文档。请参阅 安装指南 中的Image 服务部分,具体取决于您的发行版。
将 OpenStack Image API 资源添加到 Pacemaker¶
将资源代理下载到您的系统
# cd /usr/lib/ocf/resource.d/openstack # wget https://opendev.org/x/openstack-resource-agents/raw/branch/2025.2/ocf/glance-api # chmod a+rx *
添加 OpenStack Image API 资源的 Pacemaker 配置。使用以下命令连接到 Pacemaker 集群
crm configure注意
crm configure 命令支持批量输入。将下一步中的行复制并粘贴到您的 Pacemaker 实时配置中,然后根据需要进行更改。
例如,您可以从 crm configure 菜单中输入
edit p_ip_glance-api并编辑资源以匹配您首选的虚拟 IP 地址。添加以下集群资源
primitive p_glance-api ocf:openstack:glance-api \ params config="/etc/glance/glance-api.conf" \ os_password="secretsecret" \ os_username="admin" os_tenant_name="admin" \ os_auth_url="http://10.0.0.11:5000/v2.0/" \ op monitor interval="30s" timeout="30s"
此配置创建了
p_glance-api,一个用于管理 OpenStack Image API 服务的资源。通过从 crm configure 菜单中输入以下命令来提交您的配置更改
commit
然后,Pacemaker 会在您的节点之一上启动 OpenStack Image API 服务及其依赖资源。
配置 OpenStack Image 服务 API¶
编辑 /etc/glance/glance-api.conf 文件以配置 OpenStack Image 服务
# We have to use MySQL connection to store data:
sql_connection=mysql://glance:password@10.0.0.11/glance
# Alternatively, you can switch to pymysql,
# a new Python 3 compatible library and use
# sql_connection=mysql+pymysql://glance:password@10.0.0.11/glance
# and be ready when everything moves to Python 3.
# Ref: https://wiki.openstack.org/wiki/PyMySQL_evaluation
# We bind OpenStack Image API to the VIP:
bind_host = 10.0.0.11
# Connect to OpenStack Image registry service:
registry_host = 10.0.0.11
# We send notifications to High Available RabbitMQ:
notifier_strategy = rabbit
rabbit_host = 10.0.0.11
[待办事项:需要更多关于这些参数的讨论]
配置 OpenStack 服务以使用高可用的 OpenStack Image API¶
您的 OpenStack 服务现在必须将其 OpenStack Image API 配置指向高可用的虚拟集群 IP 地址,而不是像在非 HA 集群中那样指向 OpenStack Image API 服务器的物理 IP 地址。
例如,如果您的 OpenStack Image API 服务 IP 地址是 10.0.0.11(如这里的配置中所述),您将在 nova.conf 文件中使用以下配置
[glance]
# ...
api_servers = 10.0.0.11
# ...
您还必须使用此 IP 地址创建 OpenStack Image API 端点。如果您同时使用私有和公共 IP 地址,请创建两个虚拟 IP 地址并定义您的端点。例如
$ openstack endpoint create --region $KEYSTONE_REGION \
image public http://PUBLIC_VIP:9292
$ openstack endpoint create --region $KEYSTONE_REGION \
image admin http://10.0.0.11:9292
$ openstack endpoint create --region $KEYSTONE_REGION \
image internal http://10.0.0.11:9292