首页 > 数据库 > 国内数据库 > 金仓集群增加VIP操作步骤
金仓KES RWC配置VIP步骤:
修改repmgr.conf:添加virtual_ip、net_device、arping_path等参数
设置权限:确保ip和arping命令具有setuid权限(chmod 4755)
重启集群:执行./sys_monitor.sh restart生效
验证:通过ip addr检查VIP加载,测试主备切换、主机故障时VIP漂移
本文档基于版本:kingbase V009R002C010
现有一套金仓数据库(KingbaseES)RWC读写分离集群( 无VIP) 已在生产环境中稳定运行。现因客户业务架构调整及高可用性策略升级,客户正式提出在现有集群上 增加一套虚拟IP(VIP)地址 的需求,以用于业务分离、多服务通道或灾备切换演练等场景。
在不影响集群现有业务正常运行的前提下,于集群内新增一个VIP资源,并确保其具备故障自动漂移能力,具体包括:
|
评估项 |
说明 |
|
业务影响 |
新增VIP操作本身不中断现有服务,但资源定义及加载过程中可能存在瞬时资源刷新,建议在维护窗口执行。 |
|
风险等级 |
低-中等。主要风险来自配置错误导致集群资源冲突或VIP无法正常对外提供服务。 |
|
兼容性 |
需确认操作系统、集群软件(如Keepalived、Oracle CRS、Windows故障转移集群等)对VIP的支持情况。 |
|
回退方案 |
执行前备份集群资源配置文件,若新增VIP加载异常,可快速移除新增配置,恢复至变更前状态。 |
|
项目 |
IP地址 / 端口 |
子网掩码 |
备注 |
|
node1 (节点1) |
192.168.40.107 |
24 |
集群物理节点 版本:V009R002C010 |
|
node2 (节点2) |
192.168.40.160 |
24 |
集群物理节点 版本:V009R002C010 |
|
node3 (节点3) |
192.168.40.161 |
24 |
集群物理节点 版本:V009R002C010 |
|
数据库服务端口 |
54321 |
|
业务数据库连接端口 |
|
集群管理服务端口 |
8890 |
|
集群内部通信及管理端口 |
|
新增VIP (虚拟IP) |
192.168.40.155 |
24 |
待添加的集群浮动IP,用于业务扩展或高可用切换 |
特别注意:
集群使用的虚拟ip,根据用户的网络配置可以设置掩码,默认/24。掩码需要和网卡net_device上的实际掩码一致。建议VIP的掩码与物理IP的掩码保持一致,如果VIP的掩码不一致,可能会导致网络有问题。
略
金仓数据库(KingbaseES)RWC读写分离集群原
无VIP、现在需要新增VIP
的完整配置步骤。以RWC集群(基于repmgr管理)为例,核心思路是在每个节点的
repmgr.conf
中增加VIP相关配置项。
在存活的数据库节点,使用kingbase用户执行(当前数据库故障则无法查看状态)
执行
repmgr cluster show
和
repmgr service status
,确认集群运行正常。
--数据库进程状态 repmgr cluster show --守护进程状态 repmgr service status

使用kingbase用户
备份
每个节点
的
安装目录/kingbase/etc/repmgr.conf
文件
cd /home/kingbase/cluster/install/kingbase/etc cp repmgr.conf repmgr.conf_bak_`date +%Y%m%d` ls -lhtr
ip addr show
和
route -n
查看要承载VIP的网卡名称(如 ens32)及网卡实际IP及子网掩码。


根据客户提供的IP规划(如192.168.40.155/24),确认子网掩码与网卡一致。
位置:
安装目录/kingbase/etc/repmgr.conf
repmgr.conf文件中参数说明:
|
virtual_ip |
xxx.xxx.xxx.xxx/24 |
集群使用的虚拟ip,根据用户的网络配置可以设置掩码,默认/24。掩码需要和网卡net_device上的实际掩码一致。 |
|
ipaddr_path |
$ip_path |
ip命令所在路径 |
|
arping_path |
$arping_path |
arping命令所在路径 |
|
vip_add_cmd |
'ip addr add $virtual_ip dev $net_device label $net_device:3' |
根据现场环境,如果默认命令不可用,可进行修改。 |
|
vip_del_cmd |
'ip addr del $virtual_ip dev $net_device' |
根据现场环境,如果默认命令不可用,可进行修改。 |
|
arping_cmd |
'arping -U $virtual_ip -w 2 -c 2 -I $net_device' |
根据现场环境,如果默认命令不可用,可进行修改。 |
|
net_device |
$dev |
网卡名 |
特别强调各节点填写差异
:
net_device
和
net_device_ip
需根据每个节点的实际网卡信息填写,其他配置项所有节点保持一致。
在
每个集群节点
的
repmgr.conf
文件中
增加
以下内容:
# VIP地址及掩码(根据实际规划填写) virtual_ip='192.168.40.155/24' # ip命令路径(使用操作系统自带的/sbin/ip) ipaddr_path='/sbin' # arping命令路径(建议使用金仓自带的版本,兼容性更好) arping_path='/home/kingbase/cluster/install/kingbase/bin' # 承载VIP的网卡名称(各节点按实际填写) net_device='ens32' # 该网卡的实际IP地址(各节点按实际填写) net_device_ip='192.168.40.107'



卸载依赖
ip
和
arping
命令,需确保数据库用户有执行权限。
ls -l /sbin/ip ls -l /home/kingbase/cluster/install/kingbase/bin/arping

chmod 4755 /sbin/ip chown root:root /home/kingbase/cluster/install/kingbase/bin/arping chmod 4755 /home/kingbase/cluster/install/kingbase/bin/arping
-rwsr-xr-x
)注意:如果arping使用金仓自带版本,需确保属主属组为root用户
ls -l /sbin/ip ls -l /home/kingbase/cluster/install/kingbase/bin/arping

sys_monitor.sh restart
观察启动日志中是否有VIP加载成功的输出,如 下图

repmgr.conf 配置文件中增加VIP参数后,查看集群状态报错:[ERROR] No execute permission for "/home/kingbase/cluster/install/kingbase/bin/arping" 。
增加的参数有:
# VIP地址及掩码(根据实际规划填写) virtual_ip='192.168.40.155/24' # ip命令路径(使用操作系统自带的/sbin/ip) ipaddr_path='/sbin' # arping命令路径(建议使用金仓自带的版本,兼容性更好) arping_path='/home/kingbase/cluster/install/kingbase/bin' # 承载VIP的网卡名称(各节点按实际填写) net_device='ens32' # 该网卡的实际IP地址(各节点按实际填写) net_device_ip='192.168.40.107'

从报错信息来看:
arping
命令没有正确设置执行权限
,导致repmgr无法完成VIP的加载/卸载操作。
设置了
/sbin/ip
和/home/kingbase/cluster/install/kingbase/bin/arping的权限,但
遗漏了对 /home/kingbase/cluster/install/kingbase/bin/arping 文件的属主属组从kingbase更改成root。
cd /home/kingbase/cluster/install/kingbase/etc/ cat repmgr.conf | grep arping_path

使用的是 数据库自带的版本,非操作系统版本。
当前显示的有setuid位但是属主属组是kiingbase而非root
ls -l /home/kingbase/cluster/install/kingbase/bin/arping

# 切换到root用户 su -root # 修改arping属主为root,并添加setuid权限 chown root:root /home/kingbase/cluster/install/kingbase/bin/arping
ls -l /home/kingbase/cluster/install/kingbase/bin/arping

# 在主节点执行,重新加载VIP资源 repmgr cluster reload 或 # 执行服务重启命令 ./sys_monitor.sh restart 或 # 以kingbase用户手动执行arping测试,确认权限生效 /home/kingbase/cluster/install/kingbase/bin/arping -c 3 -I ens32 192.168.40.155
在存活的数据库节点,使用kingbase用户执行(当前数据库故障则无法查看状态) 执行 repmgr cluster show
不再报权限错误,正常显示集群节点状态及VIP绑定信息
如果金仓安装目录下没有arping,可以使用系统自带的:
# 确认系统arping位置 which arping # 通常在 /sbin/arping 或 /usr/sbin/arping # 设置权限 chown root:root /sbin/arping chmod 4755 /sbin/arping
然后修改
repmgr.conf
中的
arping_path
指向系统路径:
arping_path='/sbin'
|
检查项 |
命令 |
预期结果 |
|
ip命令权限 |
|
|
|
arping命令权限 |
|
|
|
配置文件中路径正确性 |
|
指向包含arping的目录 |
|
防火墙/路由是否放通 |
|
能通(仅在主节点有效) |
执行
ip addr show
,
在主节点网卡上能看到新增VIP
192.168.40.155/24

分别从其他2个节点的机器上
ping 192.168.40.155
,
能ping通


通过VIP连接数据库:
ksql -h 192.168.40.155 -p 54321 -U system -d test

手动停止主库,观察VIP是否漂移。VIP自动漂移至新主节点,应用可继续通过VIP访问。
存活的数据库节点,使用kingbase用户执行(当前数据库故障则无法查看状态) 执行 repmgr cluster show
。图略
在准备成为主节点的standby节点运行: repmgr standby switchover --force-rewind --siblings-follow --verbose 。图略
--备机操作(要升主的备机) 2节点 repmgr standby switchover --siblings-follow --verbose >=3节点 repmgr standby switchover --force-rewind --siblings-follow --verbose
会发现主节点ip变为192.168.40.160,备节点是192.168.40.107。图略
在192.168.40.160环境中执行 ip addr show , 发现VIP已经加载在新主节点环境。图略
在192.168.40.107环境中执行 ip addr show , 发现VIP已经被卸载。图略
手动关闭数据库服务命令 sys_ctl stop -D data 目录

在存活的数据库节点,使用kingbase用户执行(当前数据库故障则无法查看状态) 执行 repmgr cluster show

在故障的数据库节点执行 repmgr node rejoin -h 192.168.40.160 -Uesrep -desrep --force-rewind
即node1 节点执行
# 在故障的数据库节点执行
repmgr node rejoin -h ${主库 IP} -d esrep -U esrep -p ${主库 port} [--force-rewind] [--no-check-wal]
# 可以执行简化后的命令 本文采用简化后的命令
kbha -A rejoin -h ${主库 IP}

在存活的数据库节点,使用kingbase用户执行(当前数据库故障则无法查看状态) 执行 repmgr cluster show


略
参考链接: https://blog.csdn.net/2301_76369891/article/details/153977048
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/69963491/viewspace-3173925/ ,如需转载,请注明出处,否则将追究法律责任。