1. 首页
  2. 数据库运维

Redis Sentinel(哨兵)和虚拟IP高可用服务架构搭建

在主从复制的基础上,哨兵模式Sentinel是Redis官方提供的高可用方案。哨兵Sentinel主要有以下几个功能:

1、实时监控Redis主从复制状态;

2、如果Redis主从复制状态改变,可以实现通知;

3、如果主节点宕机,可以进行自动故障切换;

官方建议Sentinel至少配置3个节点,2个节点故障切换不会进行。Sentinel对于不可用有两种不同的看法,一个叫主观不可用(SDOWN),另外一个叫客观不可用(ODOWN)。当Master主节点宕机,只有在大多数的Sentinel都认为Master宕机,也就是ODOWN的时候才会触发故障切换。具体多少数值在Sentinel的配置文件中配置,不能大于Sentinel总数。

架构

如下图所示:

redis_sentinel_vip

搭建步骤

以下是配置环境:

操作系统:centos 7.5 64位
redis版本:3.2.12
主服务器:172.16.10.128 端口:6379
从服务器:172.16.10.129 端口:6379
从服务器:172.16.10.130 端口:6379

一、安装redis、配置主从复制

这个可以参考:http://blog.nbqykj.cn/?p=3063.html

二、配置sentinel集群

修改sentinel的配置,默认在 /etc/redis-sentinel.conf 。三台服务器都需要修改,注意redis-sentinel文件的权限,redis-sentinel进程需要修改该文件。

port 26379
bind 0.0.0.0
dir /tmp
daemonize yes
logfile /var/log/redis/sentinel.log

# 6379
sentinel monitor master-6379 172.16.10.128 6379 2
sentinel down-after-milliseconds master-6379 15000
sentinel auth-pass master-6379 123456

修改后启动sentinel进程。

systemctl enable redis-sentinel
systemctl start redis-sentinel

查看进程和日志,看到如下日志说明redis sentinel哨兵集群配置成功。

20190812155826

三、虚拟VIP高可用

redis和sentinel的集群已经配置完成,最后一步是利用Sentinel配置里的client-reconfig-script参数和自定义脚本实现虚拟IP的绑定和删除。因为绑定VIP需要ROOT权限,所以还需要分别修改三台服务器的sudo配置文件,给redis用户授权。

cat /etc/sudoers.d/redis
redis ALL=(ALL) NOPASSWD:/sbin/ip,NOPASSWD:/sbin/arping

配置自定义脚本

[root@master ~]# cat /var/lib/redis/failover.sh 
#!/bin/bash

MASTER_IP=${6}
MY_IP='172.16.10.128'
VIP='172.16.10.200'
NETMASK='24'
INTERFACE='ens33'

if [ ${MASTER_IP} = ${MY_IP} ]; then
    sudo /sbin/ip addr add ${VIP}/${NETMASK} dev ${INTERFACE}
    sudo /sbin/arping -q -c 3 -A ${VIP} -I ${INTERFACE}
    exit 0
else
    sudo /sbin/ip addr del ${VIP}/${NETMASK} dev ${INTERFACE}
    exit 0
fi
exit 1

MY_IP、VIP和INTERFACE根据实际情况修改。

修改sentinel配置,添加如下内容

sentinel client-reconfig-script master-6379 /var/lib/redis/failover.sh

重启sentinel。

四、测试

关闭master 172.16.10.128的redis,可以看到sentinel已经把master角色给了172.16.10.130 。

20190812161915

登录172.16.10.130 ,虚拟VIP添加成功。

20190812162113

至此redis+sentinel+VIP架构的高可用就已经基本实现,这种方式可以有效避免redis单点故障的问题。

联系我们

0574-55011290

QQ:248687950

邮件:admin@nbhao.org

工作时间:周一至周五,9:00-18:00,节假日休息

QR code