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]]
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/authkeytarget-dir=/etc/pacemaker/authkey 和 source-dir-root=/var/log/pacemaker/bundlestarget-dir=/var/log 映射到容器中,因此在配置 storage-map 参数时不需要指定其中的路径。
						重要
							在群集的任何节点上,
PCMK_authkey_location 环境变量不得设置为 /etc/pacemaker/authkey 默认值。