View a markdown version of this page

Active/passive 负载均衡器 - AWS IoT Greengrass

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

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 装载目录中,才能将其复制到故障转移实例。

  1. HAProxy 配置复制到 DRBD 装载目录中。

    sudo mkdir -p /drbd/loadbalancer/etc/haproxy/ sudo cp /etc/haproxy/haproxy.cfg /drbd/loadbalancer/etc/haproxy/haproxy.cfg
  2. 编辑 HAProxy systemd 单元文件以使用 DRBD 装载路径中的配置。在每个实例上运行它。

    sudo systemctl edit haproxy

    添加以下几行以将配置文件路径更新为 DRBD 装载路径。

    [Service] Environment="CONFIG=/drbd/loadbalancer/etc/haproxy/haproxy.cfg"
  3. 重新加载系统。在每个实例上运行它。

    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以防止大脑分裂和数据损坏。

验证故障转移

  1. 检查初始状态。验证 HAProxy 是否正在主实例上运行。

    sudo pcs status
  2. 模拟故障转移。将主节点置于待机模式以强制所有资源离开主节点。

    sudo pcs node standby primary-node-name
  3. 验证故障转移。在备用实例上,检查集群状态。现在,DRBD、文件系统和 HAProxy 资源应该使用最新的配置文件在备用实例上运行。

    sudo pcs status

    故障实例恢复后,除非您将 Pacemaker 配置为迁移,否则负载均衡器服务将保留在备用实例上。

  4. 使节点恢复联机。

    sudo pcs node unstandby primary-node-name