如何利用 Keepalived 监控后端 Redis 哨兵状态实现数据库负载均衡

落墨酱_4628

落墨酱_4628

2026-05-22

602人浏览

原创

Keepalived可通过自定义脚本检测Redis哨兵主节点状态并动态调整VRRP优先级,实现VIP漂移至当前master所在主机,从而完成故障转移而非负载均衡。

如何利用 keepalived 监控后端 redis 哨兵状态实现数据库负载均衡

Keepalived 本身不直接支持 Redis 哨兵(Sentinel)状态的原生监控,也不具备七层(应用层)协议解析能力,无法像 HAProxy 或 Nginx 那样主动连接 Sentinel 查询 SENTINEL get-master-addr-by-name 或判断主从切换结果。但它可以通过自定义健康检查脚本 + VRRP 主备控制,间接实现“基于 Redis 哨兵状态的 VIP 漂移”,从而支撑数据库访问层的高可用切换——这常被误称为“负载均衡”,实则是故障转移驱动的读写入口收敛。

要达成目标,核心思路是:
✅ 让 Keepalived 的 VIP 绑定在当前 Redis 主节点所在宿主机上;
✅ 通过脚本实时探测本地是否为哨兵选出的 master;
✅ 若不是,则主动降低优先级或触发故障转移,让 VIP 漂移到真正持有 master 角色的机器。

以下分三部分说明关键实现:

一、前置条件与架构约束

  • Redis 部署为 3 节点哨兵集群(至少 1 主 2 从 + 3 Sentinel),所有 Redis 实例和 Sentinel 进程运行在物理机或 Docker 宿主机(非容器网络隔离环境);
  • Keepalived 安装在每台 Redis 服务器宿主机上(即与 Redis + Sentinel 共存),而非独立 LB 节点;
  • VIP(如 192.168.3.200)绑定在宿主机网卡(如 eth0),客户端直连该 VIP 访问 Redis;
  • Redis 配置中 bind 0.0.0.0 且 protected-mode no(或配密码),确保 VIP 流量可到达;
  • 禁用 vrrp_strict,避免因缺少 VIP 或单播配置导致启动失败。

二、编写 Redis 哨兵状态检测脚本

在每台 Redis 服务器上创建 /etc/keepalived/check_redis_master.sh:

#!/bin/bash
# 检查本机 Redis 是否为哨兵认定的 master(以 mymaster 为例)
MASTER_IP=$(redis-cli -h 127.0.0.1 -p 26379 SENTINEL get-master-addr-by-name mymaster | head -n1 | tr -d '\r\n')
LOCAL_IP=$(hostname -I | awk '{print $1}')

if [ "$MASTER_IP" = "$LOCAL_IP" ]; then
    exit 0  # 是 master,健康
else
    exit 1  # 不是 master,标记为不健康
fi

赋予执行权限:

chmod +x /etc/keepalived/check_redis_master.sh

⚠️ 注意:mymaster 是你在 sentinel.conf 中配置的监控名;若使用密码,需加 -a 参数;脚本超时建议加 timeout 3 包裹。

redis-tools
redis-tools

按类别查找Redis命令、检测服务器连接、监控键数量和内存占用,支持离线速查表。

下载

三、Keepalived 配置(每台均部署,仅 state/priority 差异)

编辑 /etc/keepalived/keepalived.conf:

global_defs {
    router_id redis_master_ha
}

vrrp_script chk_redis {
    script "/etc/keepalived/check_redis_master.sh"
    interval 2          # 每2秒检查一次
    weight -20          # 检测失败时,优先级减20(触发降级)
    fall 2              # 连续2次失败才判定异常
    rise 2              # 连续2次成功才恢复
}

vrrp_instance VI_REDIS {
    state BACKUP        # 所有节点初始设为 BACKUP(避免脑裂)
    interface eth0
    virtual_router_id 88
    priority 100        # 初始优先级统一设为100(实际由脚本动态调整)
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass redispw123
    }
    virtual_ipaddress {
        192.168.3.200/24 dev eth0 label eth0:0
    }
    track_script {
        chk_redis
    }
}
  • 启动后,Keepalived 会持续运行检测脚本;
  • 当某台机器成为哨兵选举出的 master,其脚本返回 0 → 优先级保持 100 → 成为 VRRP Master,VIP 自动绑定;
  • 其他机器脚本返回 1 → 优先级变为 80 → 保持 BACKUP 状态,VIP 不绑定;
  • 若原 master 故障,哨兵重新选举,新 master 上脚本恢复返回 0 → 优先级回升 → VIP 漂移完成。

四、客户端访问方式

  • 应用连接 redis://192.168.3.200:6379(VIP);
  • 写操作始终落在当前 VIP 所在节点(即真实 Redis master);
  • 读操作也可走 VIP,但若需读从库,需额外在应用层通过 Sentinel 获取从节点地址 —— Keepalived 不参与读负载分发。

本质上,这不是传统意义的“负载均衡”,而是强一致性主节点服务入口的自动漂移。真正的 Redis 读负载均衡需配合客户端 SDK(如 JedisPool + Sentinel 支持)或中间件(如 Twemproxy、Redis Cluster、或 HAProxy + Lua 脚本)实现。

不复杂但容易忽略。

相关文章

PHP速学视频免费教程(入门到精通)
PHP速学视频免费教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

相关标签:

redis

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
python是前端还是后端
python是前端还是后端

Python属于前端也属于后端,其灵活性和丰富的生态系统使得开发人员能够在不同的领域中灵活运用。本专题为大家提供python相关的文章、下载、课程内容,供大家免费下载体验。

2023.08.11

2703

5

前端和后端的区别
前端和后端的区别

前端关注的是用户界面的设计和交互,而后端则注重数据处理和逻辑控制。想了解更多前端后端的相关内容,可以阅读本专题下面的文章。

2024.03.19

6830

13

后端的主要工作内容介绍
后端的主要工作内容介绍

后端是应用程序的服务端部分,负责核心任务,如数据库交互、业务逻辑处理和响应客户端请求。想了解更多后端的相关内容,可以阅读本专题下面的文章。

2024.03.19

6286

10

服务器是什么
服务器是什么

服务器是一种计算机硬件设备或软件程序,它具有强大的计算和存储能力,用请求、存储数据和提供服务。它在互联网中着关重要的作用,为用户提供各种服务和资源。本专题为大家提供服务器相关的文章、下载、课程内容,供大家免费下载体验。

2023.08.15

457

5

连接apple id服务器时出错
连接apple id服务器时出错

连接apple id服务器时出错的原因包括网络连接问题、服务器问题、Apple ID账户问题、设备问题、防火墙或安全软件问题、时间和日期设置问题、Apple服务器维护等。本专题为大家提供apple id相关的文章、下载、课程内容,供大家免费下载体验。

2023.09.08

960

5

搭建互联网服务器
搭建互联网服务器

搭建互联网服务器需要:1、选择合适的硬件和操作系统,第一步是选择合适的硬件和操作系统;2、安装和配置操作系统,是搭建互联网服务器的关键步骤;3、安装和配置服务器软件,是搭建互联网服务器的下一步,常见的服务器软件包括Apache、Nginx、Tomcat等;4、配置防火墙和安全性,是搭建互联网服务器的重要步骤;5、域名解析和配置,是搭建互联网服务器的最后一步。

2023.09.19

3212

5

如何查看服务器状态
如何查看服务器状态

查看服务器状态的方法有使用命令行工具、图形界面工具、监控工具、日志文件和远程管理工具等。本专题为大家提供服务器状态相关的文章、下载、课程内容,供大家免费下载体验。

2023.10.09

1056

5

服务器域名转接慢怎么解决
服务器域名转接慢怎么解决

服务器域名转接慢的解决办法有DNS优化、服务器优化、CDN加速、前端优化和网络优化等。本专题为大家提供服务器相关的文章、下载、课程内容,供大家免费下载体验。

2023.10.17

949

5

服务器评测软件
服务器评测软件

服务器评测软件有PassMark Software、CPU-Z、GPU-Z、CrystalDiskMark、IOmeter、JMeter、LoadRunner、Apache Bench等等。详细介绍:1、PassMark Software是一款综合性的服务器性能测试软件,可以评估服务器在各种负载条件下的性能;2、CPU-Z是一款可以提供服务器CPU详细信息的软件等等。

2023.10.17

494

3

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
phpEnv手册
phpEnv手册

共0课时 | 0人学习