使用 Keepalived 为 Pigsty 节点集群配置二层 VIP
如何在 Pigsty 中为节点集群绑定一个二层 VIP?什么情况下用不了?如何解决?
Module:
Categories:
您可以在节点集群上绑定一个可选的 L2 VIP —— 前提条件是:集群中的所有节点都在一个二层网络中。
在节点集群(任何一个 Ansible Group,包括数据库集群定义都可以视作一个节点集群)上,启用 vip_enabled
参数,即可在节点集群上启用 Keepalived ,绑定一个2层 VIP。
proxy:
hosts:
10.10.10.29: { nodename: proxy-1 } # 您可以显式指定初始的 VIP 角色:MASTER / BACKUP
10.10.10.30: { nodename: proxy-2 } # , vip_role: master }
vars:
node_cluster: proxy
vip_enabled: true
vip_vrid: 128
vip_address: 10.10.10.99
vip_interface: eth1
使用以下命令,刷新节点的 Keepalived 配置,并生效:
./node.yml -l proxy -t node_vip # 首次启用 VIP
./node.yml -l proxy -t vip_refresh # 刷新 vip 配置(例如指定 master)
专用的场景
针对 PostgreSQL 高可用场景, Pigsty 提供了基于 vip-manager 的 L2 VIP 解决方案。
vip-manager 是一个独立的组件,它读取 etcd 中的 PostgreSQL 集群领导者,并在领导者所在节点上绑定一个 L2 VIP。
因此我们建议您使用 vip-manager 来实现 PostgreSQL 的高可用性,而不是使用 Keepalived 来实现。请参考 PGSQL VIP 了解更多。
不适用的场景
在诸如 AWS,阿里云这样的云环境中,通常不支持使用 L2 VIP。
在这种情况下,我们建议您使用四层负载均衡器来实现类似的功能。
例如 Pigsty 提供了 HAProxy 的配置支持。