redis sentinel 部署

安装Redis

建议版本不要太低 >= 6.2,我这里是redis 7.2.5

bash 复制代码
curl -fsSL https://packages.redis.io/gpg | sudo gpg --dearmor -o /usr/share/keyrings/redis-archive-keyring.gpg
echo "deb [signed-by=/usr/share/keyrings/redis-archive-keyring.gpg] https://packages.redis.io/deb $(lsb_release -cs) main" | sudo tee /etc/apt/sources.list.d/redis.list
sudo apt-get update
sudo apt-get install redis

配置redis主从复制

配置Redis的主配置文件

$REDIS_PASSWORD 按自己的去配置,masterauth这个需要主从的配置文件里面都有,要么无法主从切换

bash 复制代码
sed -i "s/bind 127.0.0.1/bind 0.0.0.0/g" /etc/redis/redis.conf
sed -i "792i requirepass $REDIS_PASSWORD" /etc/redis/redis.conf
sed -i "539i masterauth $REDIS_PASSWORD" /etc/redis/redis.conf

配置Redis的从配置文件。配置2个从节点

bash 复制代码
sed -i "s/bind 127.0.0.1/bind 0.0.0.0/g" /etc/redis/redis.conf
sed -i "792i requirepass $REDIS_PASSWORD" /etc/redis/redis.conf
sed -i "539i masterauth $REDIS_PASSWORD" /etc/redis/redis.conf
# 配置文件找到这个配置下主节点redis的IP和端口
replicaof <masterip> <masterport>

确认主从关系

bash 复制代码
# 登录主节点,这里密码设置123456,有主从关系说明主从已经配置正常
redis-cli -a 123456 info Replication
# Replication
role:master
connected_slaves:2
slave0:ip=10.204.121.216,port=6379,state=online,offset=12862889,lag=1
slave1:ip=10.204.121.217,port=6379,state=online,offset=12862889,lag=1

配置sentinel

bash 复制代码
sentinel架构,第一种官网不建议,缺点:M1节点宕机不会切换主从:
+----+         +----+
| M1 |---------| R1 |
| S1 |         | S2 |
+----+         +----+

Configuration: quorum = 1

第二种是最常用的,可以作为高可用,每个redis节点一个sentinel实例,当然这些实例可以放到任意可访问主节点的地方。
       +----+
       | M1 |
       | S1 |
       +----+
          |
+----+    |    +----+
| R2 |----+----| R3 |
| S2 |         | S3 |
+----+         +----+

Configuration: quorum = 2

创建sentinel配置文件

bash 复制代码
cat <<EOF > /etc/redis/sentinel.conf
port 5000
sentinel monitor mymaster 10.204.121.218 6379 2
sentinel down-after-milliseconds mymaster 5000
sentinel failover-timeout mymaster 60000
sentinel auth-pass mymaster 123456
sentinel parallel-syncs mymaster 1
logfile "/var/log/sentinel.log"
daemonize yes
EOF

解释:

port 默认是26379,这个设置5000

Redis 监视名为 mymaster 的主服务器,该主服务器位于地址 10.204.121.218 和端口 6379,仲裁数为 2,3个sentinel节点设置2

down-after-milliseconds 是指当 Sentinel 开始认为实例已关闭,发送ping命令没有响应

parallel-syncs 在故障转移后可以同时重新配置为使用新主节点的副本数量,将此选项设置为 1,您可以确保一次只有一个副本不可达

启动

在每个节点上配置好了sentinel需要的配置文件

bash 复制代码
# 启动sentinel
redis-server /etc/redis/sentinel.conf --sentinel
# 所有的sentinel启动完成后,查看状态,当前主节点,slave sentinels为3,说明已经配置完成
redis-cli -p 5000 info Sentinel
# Sentinel
sentinel_masters:1
sentinel_tilt:0
sentinel_tilt_since_seconds:-1
sentinel_running_scripts:0
sentinel_scripts_queue_length:0
sentinel_simulate_failure_flags:0
master0:name=mymaster,status=ok,address=10.204.121.218:6379,slaves=2,sentinels=3

测试主从切换

把其中一台redis关机,tail -f /var/log/sentinel.log 会看到类似的日志

+sdown 说明节点上的sentinel主观认为redis down了,-sdown 说明是客观down了,后面就进行+convert-to-slave 主从切换

bash 复制代码
568520:X 28 Jun 2024 01:33:37.365 * Sentinel new configuration saved on disk
568475:X 28 Jun 2024 01:33:37.368 * Sentinel new configuration saved on disk
568475:X 28 Jun 2024 01:33:42.360 # +sdown slave 10.204.121.218:6379 10.204.121.218 6379 @ mymaster 10.204.121.217 6379
568520:X 28 Jun 2024 01:33:42.372 # +sdown slave 10.204.121.218:6379 10.204.121.218 6379 @ mymaster 10.204.121.217 6379
568335:X 28 Jun 2024 01:33:42.378 # +sdown slave 10.204.121.218:6379 10.204.121.218 6379 @ mymaster 10.204.121.217 6379
568520:X 28 Jun 2024 02:55:33.783 # -sdown slave 10.204.121.218:6379 10.204.121.218 6379 @ mymaster 10.204.121.217 6379
568475:X 28 Jun 2024 02:55:34.050 # -sdown slave 10.204.121.218:6379 10.204.121.218 6379 @ mymaster 10.204.121.217 6379
568335:X 28 Jun 2024 02:55:34.596 # -sdown slave 10.204.121.218:6379 10.204.121.218 6379 @ mymaster 10.204.121.217 6379
568520:X 28 Jun 2024 02:55:43.744 * +convert-to-slave slave 10.204.121.218:6379 10.204.121.218 6379 @ mymaster 10.204.121.217 6379
相关推荐
小小的木头人1 小时前
Redis 集群安装指南
数据库·redis
来一杯龙舌兰4 小时前
【Sentinel】Springboot整合Sentinel、Socket进行熔断限流(生产级熔断限流)
spring boot·后端·sentinel·熔断限流
彭刷子4 小时前
《商户查询缓存案例》使用案例学习Redis的缓存使用;缓存击穿、穿透、雪崩的原理的解决方式
redis·1024程序员节
在等晚安么5 小时前
记录自己写项目的第三天,springbot+redis+rabbitma高并发项目
java·spring boot·redis·1024程序员节
专家大圣10 小时前
Docker+Redis监控新方案:cpolar让远程管理“零配置”
网络·redis·docker·容器·内网穿透
LB211216 小时前
Redis黑马点评 day01
数据库·redis·缓存
爬山算法1 天前
Redis(78) 如何设置Redis的缓存失效策略?
数据库·redis·缓存
DemonAvenger1 天前
深入Redis String:从基础到实战,10年经验的后端工程师带你解锁最佳实践
数据库·redis·性能优化
shuair1 天前
redis大key问题
数据库·redis·缓存
CS_GUIDER1 天前
踩坑记录:Redis 连接报错 “Failed to get reply: connection reset“ 之端口冲突问题
redis