Red Hat Training

A Red Hat training course is available for Red Hat Enterprise Linux

9.5.4. Pacemaker 捆绑包配置示例

以下示例创建一个 Pacemaker 捆绑包 资源,其捆绑包 ID 为 httpd-bundle,其中包含资源 ID 为 httpdocf:heartbeat:apache 资源。
此流程需要以下先决条件配置:
  • 在群集的每个节点上安装并启用了 Docker。
  • 现有 Docker 镜像名为 pcmktest:http
  • 容器镜像包括 Pacemaker 远程守护进程。
  • 容器镜像包含已配置的 Apache Web 服务器。
  • 集群中的每个节点都有目录 /var/local/containers/httpd-bundle-0/var/local/containers/httpd-bundle-1/var/local/containers/httpd-bundle-2,其中包含 web 服务器 root 的 index.html 文件。在生产中,更有可能使用一个共享的文档根目录,但示例中,此配置允许您使每个主机上的 index.html 文件与众不同,以便您可以连接到 Web 服务器并验证是否提供了 index.html 文件。
此流程为 Pacemaker 捆绑包配置以下参数:
  • 捆绑包 ID 是 httpd-bundle
  • 之前配置的 Docker 容器镜像为 pcmktest:http
  • 本例将启动三个容器实例:
  • 本例会将命令行选项 --log-driver=journald 传递给 docker run 命令。此参数不是必需的,但用于演示如何将额外选项传递给 docker 命令。值为 --log-driver=journald 表示容器内的系统日志将记录在底层主机的 systemd 日志中。
  • Pacemaker 将创建三个连续隐式 ocf:heartbeat:IPaddr2 资源,每个容器镜像一个,从 IP 地址 192.168.122.131 开始。
  • IP 地址在主机接口 eth0 上创建。
  • IP 地址使用 CIDR 子网掩码 24 创建。
  • 这个示例创建了一个端口映射 ID http-port ;到容器分配的 IP 地址上的端口 80 的连接将转发到容器网络。
  • 本例创建存储映射 ID httpd-root。对于这个存储映射:
    • source-dir-root 的值是 /var/local/containers,它使用每个容器实例主机上的不同子目录指定主机文件系统上的路径的开头。
    • target-dir 的值是 /var/www/html,它指定要映射主机存储的容器中的路径名称。
    • 在映射存储时,将使用文件系统 rw 挂载选项。
    • 由于此示例容器包含一个资源,Pacemaker 将自动在容器中映射 source-dir=/etc/pacemaker/authkey 等效项,因此您不需要在存储映射中指定该路径。
在本例中,现有集群配置被放入名为 temp-cib.xml 的临时文件中,然后复制到名为 temp-cib.xml.deltasrc 的文件中。对集群配置的所有修改都对tmp-cib.xml 文件进行。当 udpates 完成后,这个过程使用 pcs cluster cib-push 命令的 diff-against 选项,以便只有配置文件的更新推送到活动的配置文件。
# pcs cluster cib tmp-cib.xml
# cp tmp-cib.xml tmp-cib.xml.deltasrc
# pcs -f tmp.cib.xml resource bundle create httpd-bundle \
container docker image=pcmktest:http replicas=3 \
options=--log-driver=journald \
network ip-range-start=192.168.122.131 host-interface=eth0 \
host-netmask=24 port-map id=httpd-port port=80 \
storage-map id=httpd-root source-dir-root=/var/local/containers \
target-dir=/var/www/html options=rw \
# pcs -f tmp-cib.xml resource create httpd ocf:heartbeat:apache \
statusurl=http://localhost/server-status bundle httpd-bundle
# pcs cluster cib-push tmp-cib.xml diff-against=tmp-cib.xml.deltasrc