Redis 哨兵模式配置 - 在 Rocky Linux 上

2023-05-31 00:20:18 +08:00
 Songxwn

介绍

订阅

个人博客: https://songxwn.com/redis-sentinel/

RSS: https://songxwn.com/atom.xml

知乎: https://zhuanlan.zhihu.com/p/633493210

环境

Redis 版本: 6.27

系统:Rocky Linux 8.8 (关闭 SElinux ,关闭防火墙)

安装

dnf module install redis:6

systemctl enable --now redis

systemctl status redis

基础配置

vim /etc/redis.conf 

# 修改业务配置

配置绑定 IP (默认绑定 lookback ,监听 6379 端口)

#bind 127.0.0.1 -::1

bind * -::*

# 注释原来的配置,配置绑定所有 IPv4 和 IPv6 地址

配置访问密码(默认无密码)

requirepass pass@word

配置内存满载策略(默认为noeviction 即不做任何淘汰)

maxmemory-policy allkeys-lru

# 从所有的键中选择最近最少使用的键进行淘汰。

配置最大使用内存(默认无限制)

maxmemory 512MB

# 默认数字单位为 bytes ,可根据业务和实际物理内存配置。

重启生效

systemctl restart redis

systemctl status redis

redis-cli --version

# 查看版本

PS:至此,单机部署已完成。

配置哨兵( sentinel )模式

Redis 哨兵模式是 Redis 在主从复制基础上构建的一套高可用解决方案,它可以自动监控 Redis 主节点和从节点的状态,当主节点出现故障时,哨兵会自动将一个从节点切换为新的主节点,以保证系统的高可用性。哨兵模式的优势包括:

  1. 自动故障转移:当主节点出现故障时,哨兵会自动将一个从节点切换为新的主节点,以保证系统的高可用性。
  2. 自动配置提醒:哨兵会自动监控 Redis 主节点和从节点的状态,并在发现异常时发送邮件或短信提醒管理员。
  3. 自动恢复:当 Redis 主节点恢复正常时,哨兵会自动将其切换回主节点,并将之前选举出来的从节点切换回从节点。

优缺点

优点:

  • 对节点进行监控,来完成自动的故障发现与转移

缺点:

  • 特别是在主从切换的瞬间存在访问瞬断的情况,等待时间比较长,至少十来秒不可用。
  • 哨兵模式只有一个主节点对外提供服务,没法支持很高的并发
  • 单个主节点内存也不宜设置得过大,否则会导致持久化文件过大,影响数据恢复或主从同步的效率。

PS:与主从相比,哨兵仅解决了手动切换主从节点问题,至于其他的问题,基本上仍然存在。

节点规划(哨兵要奇数个,建议 3 节点起步)

主机名 角色 IP 地址
Redis_S1 Master 192.168.205.1
Redis_S2 slaves 192.168.205.2
Redis_S3 slaves 192.168.205.3

配置主从复制

Redis_S1 主节点配置

vim /etc/redis.conf

protected-mode no

# 关闭保护模式,默认为打开的。关闭此模式是为了让 slaves 连接进来。

requirepass pass123

# 配置访问密码,slaves 也要配置对应的 masterauth 密码。

bind * -::*

# 配置绑定 IP

maxmemory-policy allkeys-lru

maxmemory 512MB

Redis_S2 从节点配置

vim /etc/redis.conf

protected-mode no

# 关闭保护模式,默认为打开的。

masterauth pass123

# 配置访问密码,slaves 也要配置对应的 masterauth 密码。

replicaof 192.168.205.1 6379

# 从节点配置,配置主节点的 IP

bind * -::*

# 配置绑定 IP

maxmemory-policy allkeys-lru

maxmemory 512MB

Redis_S3 从节点配置

vim /etc/redis.conf

protected-mode no

# 关闭保护模式,默认为打开的。

masterauth pass123

# 配置访问密码,slaves 也要配置对应的 masterauth 密码。

replicaof 192.168.205.1 6379


# 从节点配置,配置主节点的 IP

bind * -::*

# 配置绑定 IP

maxmemory-policy allkeys-lru

maxmemory 512MB

所有节点

systemctl restart redis

# 重启配置生效

验证主从配置

redis-cli 
127.0.0.1:6379> AUTH password
127.0.0.1:6379> info replication

# 输入密码查看状态

哨兵模式配置

每节点配置启动

systemctl enable --now redis-sentinel

systemctl status redis-sentinel

ss -an | grep 26379

# 哨兵服务默认监听端口号 26379

每节点修改配置

vim /etc/redis-sentinel.conf


sentinel monitor mymaster 192.168.205.1 6379 2

# 配置监控主节点的 IP 、端口号、2 代表多少个 Sentinel 实例认为主服务器不可用,才会触发自动故障转移。

sentinel auth-pass mymaster pass123

# 主节点的密码

sentinel down-after-milliseconds mymaster 10000

# 指定 Sentinel 在多长时间内未收到来自主服务器的回复后,将主服务器标记为主观下线。
# 单位为毫秒


sentinel parallel-syncs mymaster 1

# 用于指定在自动故障转移期间,最多可以有多少个从服务器同时对新的主服务器进行同步。
# 为 1 即可

PS:mymaster 为自定义名称

检查

redis-cli -p 26379 info sentinel

1649 次点击
所在节点    Linux
4 条回复
dooonabe
2023-05-31 09:02:51 +08:00
有三个节点为什么不用 cluster 模式
7lQM1uTy635LOmbu
2023-05-31 09:57:02 +08:00
@dooonabe 自媒体来引流私域的,不用纠结
Songxwn
2023-05-31 10:16:26 +08:00
主要是个人学习来给 jumpserver 用,而 Jumpserver 不支持集群模式。
julyclyde
2023-05-31 10:55:21 +08:00
@Songxwn 这个回答说明你已经深入了解过了。很赞

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/944357

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX