Patroni for OpenGauss 3:浮动IP

介绍了一个用于 Patroni、PostgreSQL/Opengauss 集群的 Python 程序 vipmon.py,该程序可在节点状态变化时自动调整浮动 IP 地址,以确保主节点具备读写权限,备节点仅具读取权限。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

功能需求:这是一个可选功能,三节点的Patroni、PostgreSQL/Opengauss集群,当主备自动切换时,主节点要设置可读写的浮动IP,备节点要设置只读的浮动IP(也可以不设置)。

为了实现这个功能,也为了对Patroni的影响最小,不对 Patroni 原有代码进行修改,而是另写一个Python程序,与Patroni在同一个节点内,另起一个进程运行。

设计原理就是不断地通过 Patroni 的 REST API 查询本节点的状态。

当本节点的 role 为 master 时,设置本节的为可读写的浮动 IP,当本节的 role 为 replica 时,设置本节的为只读浮动 IP,当查询失败时(例如 Patroni 退出了)禁用这两种浮动 IP 地址。

程序只有一个主线程,以一个循环作为主体,接受patroni.yml作为配置文件,对这个程序的配置参数写在这个文件中。

每次循环查询 curl -s http://127.0.0.1:18008/master 

这个程序是 Patroni 目录下的 vipmon.py,在每个节点上启动Patroni后启动。

还有一点要注意,运行 vipmon.py 的用户需要有执行 ifconfig设置ip地址的权限,一般都是给这个用户免密执行sudo ifconfig的权限。

patroni.yml中关于浮动IP的配置项:

mastervip 表示读写(主)节点的浮动 IP 地址,enable:true 表示使能主节点的浮动 IP,设置浮动IP需要三个参数,浮动IP地址、接口名、子网掩码,三个节点需要在一个网段内,浮动IP也只能在网段内浮动。

secondaryvip 表示只读(备)节点的浮动IP地址,enable:false表示禁用备节点浮动IP。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值