Redis 哨兵模式配置 - 在 Rocky Linux 上 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Distributions
Ubuntu
Fedora
CentOS
中文资源站
网易开源镜像站
bigmomo
V2EX    Linux

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

  •  1
     
  •   bigmomo 2023-05-31 00:20:18 +08:00 1964 次点击
    这是一个创建于 940 天前的主题,其中的信息可能已经有所发展或是发生改变。

    介绍

    • Redis 是一个高性能的 key-value 数据库,完全开源,遵守 BSD 协议。Redis 支持数据的持久化,可以将内存中的数据保存在磁盘中,重启的时候可以再次加载进行使用。Redis 不仅仅支持简单的 key-value 类型的数据,同时还提供了 list 、set 、zset 、hash 等数据结构的存储。
    • Redis 有很多应用场景,其中最常见的是作为缓存。Redis 的读写性能优异,逐渐有取代 memcached ,成为首选服务端缓存的组件此外,Redis 还可以用于计数器、消息队列、分布式锁、会话缓存等场景。
    • 在 JumpServer 中,Redis 主要用于存储会话信息和任务队列。
    • 本文介绍了在 Rocky 下载的安装配置哨兵模式。

    订阅

    个人博客: 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 
    4 条回复    2023-05-31 10:55:21 +08:00
    dooonabe
        1
    dooonabe  
       2023-05-31 09:02:51 +08:00
    有三个节点为什么不用 cluster 模式
    7lQM1uTy635LOmbu
        2
    7lQM1uTy635LOmbu  
       2023-05-31 09:57:02 +08:00 via Android
    @dooonabe 自媒体来引流私域的,不用纠结
    bigmomo
        3
    bigmomo  
    OP
       2023-05-31 10:16:26 +08:00
    主要是个人学习来给 jumpserver 用,而 Jumpserver 不支持集群模式。
    julyclyde
        4
    julyclyde  
       2023-05-31 10:55:21 +08:00   1
    @Songxwn 这个回答说明你已经深入了解过了。很赞
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     2712 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 33ms UTC 14:15 PVG 22:15 LAX 06:15 JFK 09:15
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86