keepalived+glusterd双机热备问题

环境:keepalived+glusterfs进行双机热备,数据库为mariadb,操作系统为麒麟v10的linux系统。
功能要求:主备自动切换,主机若发生宕机,会恢复故障后不抢占主节点;正常运行时,备机不启用mariadb以及应用等服务,主机挂机时,备机通过keepalived配置启动mariadb等服务的启动脚本。
我的实施方案:将两台服务器的数据库分别放入glusterfs的客户端挂载点上,然后修改数据库的配置文件指向挂载点;两台服务器keepalived均设置为双备模式,nopreempt不抢占模式。通过notify_master脚本实现当服务器拥有vip地址成为master状态时执行各应用的启动脚本。
遇到的问题:1、notify_master脚本只有优先级高的backup开机时会执行,后续不会再执行;优先级低的backup一直都不会执行这个脚本;
2、两台服务器数据库没法同时运行,只能一台停止mariadb服务以后,另一台才能启用(附图为数据库同时启用时,无法启用的报错)所以想通过模拟宕机的方式,keepalived主切备时执行停止服务脚本,然后备机切换成主机同时执行启动数据库等服务的脚本。
需求:如何根据以上,做出两台服务器一旦发生主备切换,就各自执行服务启动或者停止的脚本呢?求个详细一点的方案

img

你可以把优先级调整的一样
然后配置nopreemp 再试试
关于你的发生主备切换,就各自执行服务启动或者停止的脚本 "
可以写个脚本监听主机是否有vip,(这个检测vip的脚本可以做成系统服务),有的话就启动服务脚本,没有则相反
"

引用gpt回答
有帮住的话 采纳一下呦
根据你描述的环境和需求,可以这么设计实现自动主备切换时启动/停止服务的方案:

  1. 在两台服务器上都配置Keepalived,优先级不同,一台设为主,一台设为备。
  2. 主机Keepalived配置:
  • 添加notify_master脚本,脚本中包含启动数据库、应用等服务的命令。
  • 添加notify_backup脚本,脚本中包含停止数据库、应用等服务的命令。
  1. 备机Keepalived配置:
  • 添加notify_master脚本,脚本中包含启动数据库、应用等服务的命令。
  • 添加notify_stop脚本,脚本中包含停止数据库、应用等服务的命令。
  1. 配置Keepalived的SMTP检查,这样当主机宕机时,备机就会接管VIP,执行notify_master脚本启动服务。
  2. 主机恢复时,由于nopreempt模式,不会抢占VIP,这时可以人工在主机上执行notify_backup脚本停止服务。
  3. 这样就实现了主机故障时备机自动启动服务,主机恢复后手动停止服务,避免双主冲突。
  4. 也可以通过一些监控系统协助自动执行这些启动/停止脚本,比如在检测到主机恢复时自动在主机上执行notify_backup脚本。
    关键是通过Keepalived的notify机制结合启动/停止脚本来实现主备切换时的服务切换,既保证了高可用性,也避免了双主的问题。