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集群
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 使用C#创建一个MCP客户端
· ollama系列1:轻松3步本地部署deepseek,普通电脑可用
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 按钮权限的设计及实现