本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
Active/passive 负载均衡器
在此设置中,您一次在一个实例上作为负载均衡器运行 HAProxy。HAProxy 配置文件存储在 DRBD-replicated 存储器中,因此,当 Pacemaker 故障转移到备用实例时,配置可以立即可用。
重要
在继续操作先决条件和集群设置之前,请完成中的所有步骤。
警告
除非另有说明,否则仅在主实例上运行以下命令。
在所有实例上安装 HAProxy
安装 HAProxy 并禁用该服务,这样 Pacemaker 就可以对其进行管理。在每个实例上运行它。
sudo apt install -y haproxy sudo systemctl disable haproxy sudo systemctl stop haproxy
为 HAProxy 配置 DRBD 挂载
将 DRBD 设备装载到负载均衡器的目录中。
创建装载点目录。在每个实例上运行它。
sudo mkdir -p /drbd/loadbalancer/
在主实例上安装 DRBD 设备。首先从先决条件中卸载之前的挂载点。
sudo umount /greengrass/v2 sudo mount /dev/drbd0 /drbd/loadbalancer/
使用验证挂载lsblk。你应该看到drbd0安装在/drbd/loadbalancer。
配置 HAProxy
配置文件必须位于 DRBD 装载目录中,才能将其复制到故障转移实例。
-
将 HAProxy 配置复制到 DRBD 装载目录中。
sudo mkdir -p /drbd/loadbalancer/etc/haproxy/ sudo cp /etc/haproxy/haproxy.cfg /drbd/loadbalancer/etc/haproxy/haproxy.cfg -
编辑 HAProxy systemd 单元文件以使用 DRBD 装载路径中的配置。在每个实例上运行它。
sudo systemctl edit haproxy添加以下几行以将配置文件路径更新为 DRBD 装载路径。
[Service] Environment="CONFIG=/drbd/loadbalancer/etc/haproxy/haproxy.cfg" -
重新加载系统。在每个实例上运行它。
sudo systemctl daemon-reload
附加 DRBD 资源
卸载 DRBD 设备并关闭 DRBD,这样 Pacemaker 就可以对其进行管理。在主实例和所有实例drbdadm down上运行卸载。
# On the primary instance only sudo umount /drbd/loadbalancer # On all instances sudo drbdadm down greengrass
sudo pcs resource create drbd-greengrass \ ocf:linbit:drbd drbd_resource=greengrass \ op monitor interval=15s role=Promoted \ op monitor interval=30s role=Unpromoted
sudo pcs resource promotable drbd-greengrass \ promoted-max=1 promoted-node-max=1 clone-max=2 clone-node-max=1 notify=true
附加文件系统资源
sudo pcs resource create fs_loadbalancer Filesystem \ device="/dev/drbd0" \ directory="/drbd/loadbalancer" \ fstype="ext4" \ op start timeout=15s \ op stop timeout=15s \ --disabled
附上 HAProxy 系统资源
sudo pcs resource create haproxy systemd:haproxy \ op monitor interval=10s \ op start timeout=60s \ op stop timeout=60s \ --disabled
创建资源限制
sudo pcs constraint colocation add haproxy with fs_loadbalancer sudo pcs constraint order fs_loadbalancer then start haproxy sudo pcs constraint colocation add fs_loadbalancer with Promoted drbd-greengrass-clone sudo pcs constraint order promote drbd-greengrass-clone then start fs_loadbalancer
既然限制已经到位,就启用资源。
sudo pcs resource enable fs_loadbalancer sudo pcs resource enable haproxy
在本教程设置中禁用 STONITH。
sudo pcs property set stonith-enabled=false
警告
为了简化本教程,此处禁用 STONITH。在生产环境中,您必须启用 STONITH 并配置隔离代理(例如,用于 Amazon EC2 实例),fence_aws以防止大脑分裂和数据损坏。
验证故障转移
-
检查初始状态。验证 HAProxy 是否正在主实例上运行。
sudo pcs status -
模拟故障转移。将主节点置于待机模式以强制所有资源离开主节点。
sudo pcs node standbyprimary-node-name -
验证故障转移。在备用实例上,检查集群状态。现在,DRBD、文件系统和 HAProxy 资源应该使用最新的配置文件在备用实例上运行。
sudo pcs status故障实例恢复后,除非您将 Pacemaker 配置为迁移,否则负载均衡器服务将保留在备用实例上。
-
使节点恢复联机。
sudo pcs node unstandbyprimary-node-name