Redis哨兵集群搭建

主库不进行持久化,保证数据库的效率,从库进行持久化,进行备份

1.环境搭建

IP 主机名 作用
10.206.132.226 redis01 master,sentnel01
10.206.132.227 redis02 slave01,sentnel02
10.206.132.228 redis03 slave02,sentnel03

2.Redis安装

参考:Redis安装教程

3.主从复制搭建

3.1.修改配置文件

10.206.132.227,10.206.132.228修改配置文件

在配置文件Replication部分,添加

# replicaof <masterip> <masterport>
replicaof 10.206.132.226 6379
# masterauth <master-password>
masterauth monkey

10.206.132.226修改配置文件

在配置文件Replication部分,添加

# masterauth <master-password>
masterauth monkey

3.2.查看配置结果

info replication

4.配置哨兵

4.1.创建哨兵配置文件

vi sentinel.conf
------------------------------------------------
daemonize yes
sentinel monitor mymaster 10.206.132.226 6379 2
sentinel auth-pass mymaster monkey
# 从上次接受到主服务器回复30s没有成功收到主服务器回复,主观判断主服务器下线(哨兵每秒ping一次主服务器)
sentinel down-after-milliseconds mymaster 30000
# 客观判断下线后,六分钟内没有成功完成故障切换,就报切换超时错误
sentinel failover-timeout mymaster 180000
# 故障恢复后,同时有几个从服务可以从主服务器同步 
sentinel parallel-syncs mymaster 1
logfile /var/log/redis/sentinel.log
# The following arguments are passed to the script:
# <master-name> <role> <state> <from-ip> <from-port> <to-ip> <to-port>
# 在切换的时候,这些参数会传递给切换脚本
sentinel client-reconfig-script mymaster /usr/local/redis/script/failover_ip.sh
------------------------------------------------

mymaster:监听的master的别名

2:有三个哨兵,两个哨兵客观确认master下线,才可以进行切换

4.2.设置VIP自动切换

4.2.1.redis用户授权sudo

每一个redis服务器都需要增加redis的sudo权限

echo -e "redis\tALL=(ALL)\tNOPASSWD:/sbin/ip,NOPASSWD:/sbin/arping" > /etc/sudoers.d/redis
4.2.2.创建failover脚本
mkdir -p /usr/local/redis/script
cd /usr/local/redis/script
vi failover_ip.sh
---------------------------------------------------------------
#!/bin/bash
MASTER_IP=${6}
MY_IP='10.206.132.226'   # local_ip
VIP='10.206.132.220'     # VIP
NETMASK='24'             # Netmask
INTERFACE='enp0s3'       # DEV

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
---------------------------------------------------------------
chmod 755 failover_ip.sh

4.3.打开sentinel

redis-sentinel sentinel.conf

三台机器sentinel打开后,会自动形成sentinel集群

posted @ 2021-05-14 16:26  monkey6  阅读(180)  评论(0编辑  收藏  举报