9.5. Docker 容器的 Pacemaker 支持(技术预览)
重要
对 Docker 容器的 Pacemaker 支持仅用于技术预览。有关"技术预览"含义的详情,请参阅 技术预览功能支持范围。
这个功能有一个例外是技术预览:与 Red Hat Enterprise Linux 7.4 一样,红帽完全支持在 Red Hat Openstack Platform(RHOSP)部署中使用 Pacemaker 捆绑包。
Pacemaker 支持使用任何所需的基础架构启动 Docker 容器的特殊语法:该捆绑包。创建 Pacemaker 捆绑包后,您可以创建一个捆绑包封装的 Pacemaker 资源。
- 第 9.5.1 节 “配置 Pacemaker 捆绑包资源” 描述创建 Pacemaker 捆绑包的命令语法,并提供表总结您可以为每个捆绑包参数定义的参数。
- 第 9.5.2 节 “在捆绑包中配置 Pacemaker 资源” 提供有关配置 Pacemaker 捆绑包中包含的资源的信息。
- 第 9.5.3 节 “Pacemaker 捆绑包的限制” 请注意 Pacemaker 捆绑包的限制。
- 第 9.5.4 节 “Pacemaker 捆绑包配置示例” 提供 Pacemaker 捆绑包配置示例。
9.5.1. 配置 Pacemaker 捆绑包资源
为 Docker 容器创建 Pacemaker 捆绑包的命令语法如下:此命令会创建一个捆绑包,封装其他资源。有关在捆绑包中创建集群资源的详情请参考 第 9.5.2 节 “在捆绑包中配置 Pacemaker 资源”。
pcs resource bundle create bundle_id container docker [container_options] [network network_options] [port-map port_options]... [storage-map storage_options]... [meta meta_options] [--disabled] [--wait[=n]]
所需的 bundle_id 参数必须是捆绑包的唯一名称。如果指定了
--disabled
选项,则捆绑包不会自动启动。如果指定了 --wait
选项,Pacemaker 将等待最多 n
秒以启动捆绑包,然后成功返回 0 或 1 出错。如果未指定 n
,则默认为 60 分钟。
以下小节描述了您可以为 Pacemaker 捆绑包的每个元素配置的参数。
9.5.1.1. Docker 参数
表 9.6 “Docker 容器参数” 描述您可以为捆绑包设置的
docker
容器选项。
注意
在 Pacemaker 中配置
docker
bundle 前,您必须安装 Docker,并在允许运行捆绑包的每个节点上提供完全配置的 Docker 镜像。
项 | 默认值 | 描述 |
---|---|---|
Image
|
Docker 镜像标签(必需)
| |
replicas
|
如果这是正则
,则为 promote-max 值,否则为 1。
|
指定一个正整数,指定要启动的容器实例数
|
replicas-per-host
|
1
|
指定允许在一个节点上运行的容器实例的正整数
|
promoted-max
|
0
|
一个非负整数,如果为正,则表示容器化服务应被视为多状态服务,且此副本数允许在 master 角色中运行该服务
|
网络
| |
如果指定,它将传递到 docker run 命令,作为 Docker 容器的网络设置。
|
run-command
|
如果捆绑包包含资源,则
/usr/sbin/pacemaker_remoted
|
启动后,该命令将在容器内运行("PID 1")。如果捆绑包中包含资源,此命令必须启动 pacemaker_remoted 守护进程(但也可以是执行其他任务的脚本)。
|
选项
| |
传递给 docker run 命令的额外命令行选项
|
9.5.1.2. 捆绑包网络参数
表 9.7 “捆绑包资源网络参数” 描述您可以为捆绑包设置的
网络
选项。
项 | 默认值 | 描述 |
---|---|---|
add-host
|
TRUE
|
如果使用 TRUE 和
ip-range-start ,Pacemaker 将自动确保容器内的 /etc/hosts 文件为每个副本名称及其分配的 IP 具有条目。
|
ip-range-start
| |
如果指定,Pacemaker 将为每个容器实例创建一个隐式
ocf:heartbeat:IPaddr2 资源,从这个 IP 地址开始,使用指定为 Docker 元素 replicas 参数的任意连续地址。这些地址可以从主机的网络访问容器内的服务,尽管无法在容器本身中看到。目前仅支持 IPv4 地址。
|
host-netmask
|
32
|
如果指定了
ip-range-start ,则会使用此 CIDR 子网掩码(以位数为单位)创建 IP 地址。
|
host-interface
| |
如果指定了
ip-range-start ,则会在此主机接口上创建 IP 地址(默认情况下,它将从 IP 地址确定)。
|
control-port
|
3121
|
如果捆绑包包含 Pacemaker 资源,集群将使用这个整数 TCP 端口与容器内的 Pacemaker 远程进行通信。当容器无法侦听默认端口时(当容器使用主机的网络而不是
ip-range-start(在这种情况下, 必须为 1)或捆绑包可以在已侦听默认端口的 Pacemaker 远程节点上运行时,更改此设置非常有用。在主机上或容器中设置的任何 PCMK_remote_port 环境变量都会在捆绑包连接中被忽略。
当 Pacemaker 捆绑包配置使用
control-port 参数时,如果捆绑包有其自身的 IP 地址,则需要在该 IP 地址和所有运行 corosync 的完整群集节点上打开端口。如果捆绑包设置了 network="host" 容器参数,则需要在每个集群节点的 IP 地址上打开该端口。
|
注意
副本通过捆绑包 ID 加上破折号和整数计数器命名,以零开头。例如,如果名为
httpd-bundle
的捆绑包配置了 replicas=2
,则其容器将命名为 httpd-bundle-0
和 httpd-bundle-1
。
项 | 默认值 | 描述 |
---|---|---|
id
| |
端口映射的唯一名称(必需)
|
port
| |
如果指定,则主机网络上此 TCP 端口号的连接(容器分配的 IP 地址上,如果指定了
ip-range-start )将转发到容器网络。正好一个 端口 或 范围 必须在端口映射中指定。
|
internal-port
| 端口 值
|
如果指定了
端口 和内部 到主机网络上的端口的连接将转发到容器网络上的此端口。
|
范围
| |
如果指定了
范围 ,则主机网络上(如果指定了 ip -range-start,则表示为 first_port-last_port )的连接将转发到容器网络中相同的端口。正好一个 端口 或 范围 必须在端口映射中指定。
|
注意
如果捆绑包包含资源,Pacemaker 将自动映射
control-port
,因此不需要在端口映射中指定该端口。
9.5.1.3. 捆绑包存储参数
您可选择为捆绑包配置
storage-map
参数。表 9.9 “捆绑包资源存储映射参数” 描述这些参数。
项 | 默认值 | 描述 |
---|---|---|
id
| |
存储映射的唯一名称(必需)
|
source-dir
| |
将映射到容器中的主机文件系统的绝对路径。在配置
storage 参数之一。
|
source-dir-root
| |
主机文件系统上的路径的开头,该路径将映射到容器,每个容器实例在主机上使用不同的子目录。子目录的名称与捆绑包名称相同,外加破折号和整数计数器(以 0 开头)。在配置
storage 参数。
|
target-dir
| |
映射主机存储的容器内的路径名称(必需)
|
选项
| |
映射存储时使用的文件系统挂载选项
|
例如,如何使用 source-dir-
root 参数命名主机上的子目录,如果 source-dir
-root=/path/to/my/directory
,target-dir=/srv/appdata
,捆绑包将命名为 mybundle
且 replicas=2
,集群将创建两个容器 主机名为 mybundle-0
和 mybundle-1
的实例,并在运行容器的主机上创建两个目录: /path/to/my/directory/mybundle-0
和 /path/to/my/directory/mybundle-1
。每个容器将获得其中一个目录,容器内运行的任何应用程序都将该目录视为 /srv/appdata
。
注意
如果主机上还没有源目录,Pacemaker 不会定义行为。但是,在此情况下,容器技术或其资源代理应该会创建源目录。
注意
如果捆绑包包含 Pacemaker 资源,Pacemaker 将自动将相当于
source-dir=/etc/pacemaker/authkey
target-dir=/etc/pacemaker/authkey
和 source-dir-root=/var/log/pacemaker/bundles
target-dir=/var/log
映射到容器中,因此在配置 storage-map
参数时不需要指定其中的路径。
重要
在群集的任何节点上,
PCMK_authkey_location
环境变量不得设置为 /etc/pacemaker/authkey
默认值。