Red Hat Training

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

8.4. pacemaker_remote 服务

pacemaker_remote 服务允许将没有在 corosync 中运行的节点整合到该集群,并让该集群如管理真正集群节点一样管理这些资源。就是说 Pacemaker 集群现在可以管理虚拟环境(KVM/LXC)以及处于虚拟环境中的资源,而无需该虚拟环境真的在 pacemakercorosync 中运行。
使用以下术语描述 pacemaker_remote 服务。
  • 集群节点 - 运行高可用服务(pacemakercorosync)的节点。
  • 远程节点 — 运行 pacemaker_remote 远程整合至集群而无需成为 corosync 集群成员。
  • 容器 — 包含额外资源的 Pacemaker 资源。例如:包含 webserver 资源的 KVM 虚拟机资源。
  • 容器远程节点 — 运行 pacemaker_remote 服务的虚拟机远程节点。这论述了具体远程节点使用案例,其中使用集群管理的虚拟机资源可作为远程节点由集群启动,并整合至该集群中。
  • pacemaker_remote — 可在 Pacemaker 集群环境及独立(非集群)环境中,由虚拟机节点(KVM 和 LXC)执行远程应用程序管理的服务守护进程。这个服务是 Pacemaker 本地资源管理守护进程(LRMD)的高级版本,可远程管理和监控虚拟机 LSB、OCF、upstart 及 systemd 资源。还可允许 pcs 在远程节点中工作。
  • LXC — 由 libvirt-lxc Linux 容器驱动程序定义的 Linux 容器。
运行 pacemaker_remote 服务的 Pacemaker 集群有以下特征。
  • 运行 pacemaker_remote 服务的虚拟远程节点(只需要在虚拟机端执行很少的配置)。
  • 集群栈(pacemakercorosync),在集群节点中运行,启动虚拟机并立即连接到 pacemaker_remote 服务,允许虚拟机整合至集群中。
虚拟机远程节点和集群节点之间的主要不同是远程节点不在集成栈中运行。这意味着远程节点不计入仲裁。另一方面,这也意味着远程节点没有与集群栈相关的伸缩性限制。除仲裁限制外,就资源管理而言,远程节点行为与集群节点一致。该集群完全有能力管理和监控每个远程节点中的资源。可根据远程节点构建限制,使其处于待命模式,或执行在任何集群节点中执行的操作。在集群状态输出状态中出现的远程节点与集群节点执行同样的操作。

8.4.1. 容器远程节点资源选项

将虚拟机或 LXC 资源配置为远程节点后,可创建管理虚拟机的 VirtualDomain 资源。请使用命令查看可为 VirtualDomain 资源设定的选项描述。
# pcs resource describe VirtualDomain
VirtualDomain 资源选项外,还可配置元数据选项,以便将该资源作为远程节点启用,并定义连接参数。有关元数据选项的详情,请查看 表 8.3 “将 KVM/LXC 资源配置为远程节点的元数据选项”

表 8.3. 将 KVM/LXC 资源配置为远程节点的元数据选项

默认值描述
remote-node
<none>
这个资源定义的远程节点名称。这可同时将该资源作为远程节点启用,并定义识别该远程节点的特定名称。如果没有设定其他参数,还会将这个值假设为在端口 3121 进行连接的主机名。警告:这个值不能与任何资源或节点 ID 重叠。
remote-port
3121
配置自定义端口以便虚拟机连接到 pacemaker_remote
remote-addr
作为主机名使用的 remote-node
远程节点名称不是该虚拟机的主机名时要连接到的 IP 地址或主机名
remote-connect-timeout
60s
等待处理虚拟机连接超时前所等待的时间
以下命令创建名为 vm-guest1VirtualDomain 资源,即可使用 remote-node meta 属性运行资源的远程节点。
# pcs resource create vm-guest1 VirtualDomain hypervisor="qemu:///system" config="vm-guest1.xml" meta remote-node=guest1

8.4.2. 主机及虚拟机认证

集群节点及远程节点之间的认证和加密是通过使用 PSK 加密/认证的 TLS 在 TCP 端口 3121 进行。这就是说集群节点和远程节点必须共享同一私钥。默认情况下该密钥位于集群节点和远程节点的 /etc/pacemaker/authkey 中。

8.4.3. 更改默认 pacemaker_remote 选项

如果需要更改 Pacemaker 或 pacemaker_remote 的默认端口或 authkey 位置,可设定一个环境变量,用来影响这两个守护进程。可通过将其放在 /etc/sysconfig/pacemaker 文件中(如下所示)启用这些环境变量。
#==#==# Pacemaker Remote
# Use a custom directory for finding the authkey.
PCMK_authkey_location=/etc/pacemaker/authkey
#
# Specify a custom port for Pacemaker Remote connections
PCMK_remote_port=3121

8.4.4. 配置概述:KVM 远程节点

本小节提供了用来在虚拟机中启动 Pacemaker 的步骤,以及使用 libvirt 和 KVM 虚拟机将该机器作为远程节点整合的高级概述。
  1. 安装虚拟化软件,并在集群节点中启用 libvirtd 后,请在每个集群节点和虚拟机的 /etc/pacemaker/authkey 中放一个 authkey。这样就可保证远程通讯和认证。
    使用以下命令创建 authkey
    # dd if=/dev/urandom of=/etc/pacemaker/authkey bs=4096 count=1
  2. 在每台虚拟机中安装 pacemaker_remote 软件包,启动 pacemaker_remote 服务,并将其设定为启动时运行,并在防火墙中为 TCP 端口 3121 开一个通道。
    # yum install pacemaker-remote resource-agents
    # systemctl start pacemaker_remote.service
    # systemctl enable pacemaker_remote.service
    # firewall-cmd --add-port 3121/tcp --permanent
  3. 为每台虚拟机分配一个静态网络地址和独特的主机名。
  4. 要创建 VirtualDoman 资源代理以便管理虚拟机,Pacemaker 要求将该虚拟机的 xml 配置文件转储为一个磁盘中的一个文件。例如:如果创建名为 guest1 的虚拟机,使用以下命令将 xml 转储至主机的一个文件中。
    # virsh dumpxml guest1 > /virtual_machines/guest1.xml
  5. 创建 VirtualDoman 资源,配置 VirtualDoman 资源元数据选项,以便说明该虚拟机是可运行资源的远程节点。
    在下面的示例中,元数据属性 remote-node=guest1 告知 pacemaker 这个资源是使用主机名 guest1 的远程节点,可整合至集群中。该集群会在主机名 guest1 的虚拟机启动后,尝试连接器其 pacemaker_remote 服务。
    # pcs resource create vm-guest1 VirtualDomain hypervisor="qemu:///system" config="vm-guest1.xml" meta remote-node=guest1
  6. 创建 VirtualDoman 资源后,可象对待集群中的其他节点一样对待该远程节点。例如:可创建资源并为在该远程节点中运行的资源生成资源限制。
    # pcs resource create webserver apache params configfile=/etc/httpd/conf/httpd.conf op monitor interval=30s
    # pcs constraint webserver prefers guest1
    将该远程节点整合至集群中后,可在远程节点中执行 pcs 命令,就好象该远程节点正在运行 Pacemaker。