redis+keepalived实现双机热备

张开发
2026/4/4 17:33:42 15 分钟阅读
redis+keepalived实现双机热备
Redis 虽然提供了哨兵Sentinel模式实现高可用但本方案需要通过VIP虚拟IP漂移来决定当前的主节点即 VIP 漂移到哪台服务器哪台服务器即对外提供主服务。因此本方案采用Redis Keepalived的方式实现双机热备通过 Keepalived 管理 VIP 的漂移当主节点发生故障时VIP 自动切换到备用节点使其接管主服务从而保证服务的高可用性。此操作默认两台服务器中 redis 和keepalived 完成初始化安装服务器A192.168.239.170服务器B192.168.239.1801、配置redis报错recis.conf包含以下配置# 指定redis监听的IP地址0.0.0.0表示监听所有网卡bind0.0.0.0# 指定redis监听端口默认为6379可不改port16379# 设置 Redis 访问密码requirepass123456# 主从复制认证密码即该节点为从节点时需要复制的主节点的密码masterauth123456# 开启 AOF 持久化appendonlyyes若服务器开启了防火墙需对 redis 放行firewall-cmd--zonepublic --add-port16379/tcp--permanentfirewall-cmd--reload两台服务器均按上述配置后重启redissystemctl restart redis2、配置keepalived备份原配置文件mv/etc/keepalived/keepalived.conf /etc/keepalived/keepalived.conf.bak创建配置文件vi/etc/keepalived/keepalived.conf插入如下基础配置按照注释说明修改为自己需要的配置此处主、备服务器的初始状态均设为 BACKUP实际 MASTER 由 priority 决定建议主服务器priority设为100备服务器priority设为90# 定义一个 VRRP 实例vrrp_instance VI_1{# 初始状态为 BACKUP# 实际 MASTER 由 priority 决定state BACKUP# 绑定的网卡interface ens33# VRRP 路由ID# 同一组高可用节点必须一致virtual_router_id51# 节点优先级# 数值越大越容易成为 MASTERpriority100# VRRP 心跳发送间隔秒advert_int1# 不抢占模式# MASTER 恢复后不会自动抢回 VIPnopreempt# VRRP 认证配置authentication{# 认证方式auth_type PASS# 认证密码# 主备必须一致auth_pass1111}# 配置虚拟IPVIP# MASTER 节点会绑定这个IPvirtual_ipaddress{192.168.239.200}# 当节点变为 MASTER 时执行脚本# 通常用于启动 lsyncdnotify_master/etc/keepalived/master.sh# 当节点变为 BACKUP 时执行脚本# 通常用于停止 lsyncdnotify_backup/etc/keepalived/backup.sh# keepalived 服务停止时执行脚本# 防止 lsyncd 残留运行notify_stop/etc/keepalived/backup.sh}创建节点变为 MASTER 时执行脚本vi/etc/keepalived/master.conf插入如下内容#!/bin/bashredis-cli-p16379-a123456SLAVEOF NO ONE创建节点变为 BACKUP 或 keepalived 服务停止时执行脚本vi/etc/keepalived/backup.conf插入如下内容#!/bin/bashredis-cli-p16379-a123456SLAVEOF192.168.239.20016379赋予上述脚本执行权限chmodx /etc/keepalived/*.sh设置开机自启systemctlenablekeepalived启动keepalivedsystemctl start keepalived若服务器开启了防火墙需对vrrp放行firewall-cmd--permanent--add-protocolvrrp firewall-cmd--reload在主、备服务器均按上述流程安装并启用keepalived通过使用以下命令查看主服务器是否存在VIPipaddr停止主服务器的keepalived服务后VIP会飘移至备服务器且主服务器的redis变为从节点备服务器的redis变为主节点3、测试用例在取得VIP的服务器中进入redis-cliredis-cli-p16379-a123456查看当前 Redis 实例的主从复制状态信息role表示当前 Redis 的角色master-主节点connected_slaves当前主库连接的从库数量slave0 / slave1每个从节点的信息info replication在另一台服务器中进入redis-cliredis-cli-p16379-a123456查看当前 Redis 实例的主从复制状态信息role表示当前 Redis 的角色slave-从节点master_host主节点IPmaster_port主节点端口master_link_status主从连接状态info replication以上显示表示主从连接成功在主节点存入测试数据set ha_test ok在从节点查看是否有同步get ha_test将存在VIP的服务器重启 keepalived 服务模拟主节点故障后恢复systemctl restart keepalived查看 Redis 实例的主从复制状态信息是否发生变更即主节点变更为从节点从节点变更为主节点在新主节点中插入测试信息看新从节点能否同步到数据如果能同步即表示配置成功至此rediskeepalived对主备双机文件热备配置完成

更多文章