我目前正在按照本指南设置PG HA群集。 https://www.itenlight.com/blog/2016/05/18/PostgreSQL+HA+with+pgpool-II+-+Part+1
我遇到的问题是群集的虚拟IP没有添加到我的网络接口中。我有一个主从模式的三节点集群。
根据指南(和pgpool文档) http://www.pgpool.net/pgpool-web/contrib_docs/watchdog_master_slave_3.3/en.html#config_pgpool 在“PGPool-II配置”和“虚拟IP”下,我必须选择一个未在网络上使用的IP地址(我已经确认),并按照指南中的说明设置配置。
# - Virtual IP control Setting -
delegate_IP = '192.168.1.95'
if_cmd_path = '/bin'
if_up_cmd = 'ip_w addr add 192.168.1.95 dev eth0 label eth0:0'
if_down_cmd = 'ip_w addr del 192.168.1.95 dev eth0'
arping_path = '/usr/bin'
arping_cmd = 'arping_w -U $_IP_$ -w 1'
“ip_w”和“arping_w”只是与原始命令位于同一目录中的包装器,但强制命令通过sudo以root身份运行。
我还通过使用postgres用户将命令添加到sudoers文件,使用命令(以及包装器作为指南建议)成功进行了测试。如果我以所述用户身份执行此命令,我可以将该IP地址添加到我以root身份执行的任何节点上。
另外,只是为了它,我禁用防火墙以确保没有意外。每当我测试更改时,我总会得到相同的日志响应,
有一件值得注意的事情......当我通过相同的“if_up_cmd”手动将接口添加到任何节点并切换到postgres用户时,如果我触发虚拟IP故障转移到另一个节点,该节点将在日志中成功返回,但不会显示虚拟IP(所以基本上它都失败了)。
我已经完成了所有配置,并且正在努力寻找解决方案。如果有人设置了HA,使用了本指南,或者遇到了这个问题(或任何想法,那么你的输入将非常有用)。
编辑:我还想补充一点,我已经启用了详细日志记录,但没有得到任何有用的信息。我也在所有三台服务器上尝试了这一点,它们都以同样的方式响应。我还将if_up_cmd作为原始语句并将其切换为硬编码值,以确保执行它的方法没有解释空间。
ip_w addr add $_IP_$/24 dev eth0 label eth0:0