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集群