redis主从故障自动切换IP漂移

本文介绍如何通过Redis主从复制、哨兵及Keepalived实现高可用性部署。具体包括配置主从复制、设置哨兵进行故障自动切换以及利用Keepalived实现虚拟IP漂移等关键技术。

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

随着web2.0时代的到来,对web服务QPS要求越来越高,天下武功唯快不破,将数据存储到内存无疑是IO最快的方式。内存容量和价格已经不能再限制我们的想象力,因此使用redis代替传统数据库可以成为高QPS的一个选择。

本文将介绍redis主从复制模式,故障自动切换和虚拟IP的漂移。redis主从复制可以提供数据冗余容灾,sentinel实现故障自动切换保证服务高可用,keepalived 可使客户端不必在redis故障切换后做任何操作,只需要访问固定的虚拟IP即可。

redis主从复制配置

master: 192.168.1.103

slave :192.168.1.104 

master配置redis.conf

1. 注释bind 127.0.0.1,不然slave无法同步数据。

2.

protected-mode yes  # 开启保护模式

requirepass "123456"   #访问密码

daemonize yes  #后台方式启动

masterauth "123456"  #slave的密码,当slave切换成master时需要同步新master的数据

slave配置redis.conf

配置同master,只需要添加

slaveof 192.168.1.103 6379


哨兵故障自动切换

哨兵sentinel是redis自带的故障自动切换工具。

master配置sentinel.conf

daemonize yes  #后台方式启动

sentinel monitor mymaster1 192.168.1.103 6379 1  #监控103,最后的1表示只要一个哨兵标志103 down,则认为down. 

sentinel down-after-milliseconds mymaster1 3000   #多长时间连不上则认为他down,单位毫秒

sentinel auth-pass mymaster1 123456  #认证密码

slave配置sentinel.conf

daemonize yes  #后台方式启动

sentinel monitor mymaster2 192.168.1.104 6379 1  #监控103,最后的1表示只要一个哨兵标志104 down,则认为down. 

sentinel down-after-milliseconds mymaster2 3000   #多长时间连不上则认为他down,单位毫秒

sentinel auth-pass mymaster2 123456  #认证密码


keepalived IP漂移

虚拟ip的添加,略。。。

添加keepalived监控redis脚本

master和slave相同

vim check_redis.sh

#!/bin/bash  
###/etc/keepalived/scripts/redis_check.sh  
ALIVE=`/usr/redis-4.0.9/src/redis-cli PING`          #参考使用只修改redis-cli的路径即可  
if [ "$ALIVE" == "PONG" ]; then
  echo $ALIVE  
  exit 0
else
  echo $ALIVE  
  exit 1

fi

添加执行权限

chmod 777 check_redis.sh

修改keepalived.conf
master配置如下:

global_defs {
   notification_email {
     1277205804@qq.com
   }
   #notification_email_from keepalived_adm
   #smtp_server 192.168.200.1
   smtp_connect_timeout 30
   router_id LVS_DEVEL
}


vrrp_script check_redis {
    script "/usr/redis-4.0.9/check_redis.sh"  #要执行的脚本
    interval 1     # 执行脚本间隔时间
    weight -10   #满足监控的脚本(redis down),权重减10
}


vrrp_instance VI_1 {
    state BACKUP   # master和slave都配置为backup,keepalived根据权重选出master
    interface eth0
    virtual_router_id 51  # 与slave的值要一致
    nopreempt    #master挂掉重启后不抢占
    priority 100   # 优先级,要比slave大
    advert_int 0.5
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        192.168.1.100   #虚拟ip
    }


    track_script {
       check_redis   #执行脚本
    }


}

slave配置

global_defs {
   notification_email {
     1277205804@qq.com
   }
   #notification_email_from keepalived_adm
   #smtp_server 192.168.200.1
   smtp_connect_timeout 30
   router_id LVS_DEVEL
}


vrrp_script check_redis {
    script "/usr/redis-4.0.9/check_redis.sh"  #要执行的脚本
    interval 1     # 执行脚本间隔时间
    weight -10   #满足监控的脚本(redis down),权重减10
}


vrrp_instance VI_1 {
    state BACKUP   # master和slave都配置为backup,keepalived根据权重选出master
    interface eth0
    virtual_router_id 51  # 与master的值要一致
    priority 99   # 优先级,要比master小
    advert_int 0.5
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        192.168.1.100   #虚拟ip
    }


    track_script {
       check_redis   #执行脚本
    }


}

测试

启动master和slave

启动redis

src/redis-server redis.conf

启动哨兵

src/redis-sentinel sentinel.conf

启动keepalived

sudo service keepalived restart

测试验证

关闭master。。。略

重启master。。。略


ok, done.



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值