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 @   monkey6  阅读(182)  评论(0编辑  收藏  举报
编辑推荐:
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 使用C#创建一个MCP客户端
· ollama系列1:轻松3步本地部署deepseek,普通电脑可用
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 按钮权限的设计及实现
点击右上角即可分享
微信分享提示