Redis高可用-Sentinel(哨兵)

Sentinel介绍

Sentinel 机制可以解决 master 和 slave 角色的切换问题

Redis 的 Sentinel 系统用于管理多个 Redis 服务器(instance), 该系统执行以下三个任务:

  • 监控 sentinel会不断地检查你的主服务器和从服务器是否运作正常。
  • 提醒 当被监控的某个redis服务器出现问题时,Sentinel可以通过API向管理员或者其他应用程序发送通知。
  • 自动故障迁移 当一个主服务器不能正常工作时,Sentinel会开始一次自动故障迁移操作,它会将失效的主服务器的其中一个从服务器升级为新的主服务器。当客户端试图链接失效的主服务器时,集群会向客户端返回新主服务器的地址。

Sentinel的前提是已经手动实现了一个redis的主从复制环境

配置文件 Sentinel.conf

每个节点有配置哨兵服务。

Ansible的模板文件 sentinel.conf.j2

复制代码
[root@ansible do_redis]# grep -E '^[a-Z]' /data/playbooks/do_redis/roles/redis/templates/sentinel.conf.j2 
bind 127.0.0.1 {{ ansible_default_ipv4['address'] }}
daemonize yes
port 26379
dir /usr/local/redis
pidfile "redis-sentinel.pid
logfile "sentinel-26379.log
sentinel monitor mymaster {{ master_ip }}  6379 2
sentinel auth-pass mymaster {{ redis_password }}
sentinel down-after-milliseconds mymaster 30000
sentinel parallel-syncs mymaster 1
sentinel failover-timeout mymaster 180000
sentinel deny-scripts-reconfig yes

服务脚本

复制代码
[root@ansible do_redis]# cat roles/redis/templates/sentinel.service.j2 
[Unit]
Description=Redis sentinel Server
After=network.target
[Service]
Type=forking
PIDFile=/usr/local/redis/redis-sentinel-26379.pid
User=redis
Group=redis
LimitNOFILE=100000
ExecStart=/usr/local/redis/bin/redis-server /usr/local/redis/etc/sentinel.conf --sentinel
ExecStop=/usr/local/redis/bin/redis-cli -p 26379 shutdown
Restart=on-failure
[Install]
WantedBy=multi-user.target

启动脚本,查看状态

复制代码
systemctl start sentienl

redis-cli -redis-cli -a 123456 info replication

[root@node37 redis]# redis-cli -a 123456 -p 26379 -h 192.168.37.17  info sentinel
# Sentinel
sentinel_masters:1
sentinel_tilt:0
sentinel_running_scripts:0
sentinel_scripts_queue_length:0
sentinel_simulate_failure_flags:0
master0:name=mymaster,status=ok,address=192.168.37.17:6379,slaves=2,sentinels=3
相关推荐
IT大白鼠3 天前
Redis 系列 · 第 01 篇——认知入门:Redis 是什么
redis·nosql
彧azz3 天前
Linux 环境下 Redis 学习总结:数据类型、持久化、锁、事务、主从与缓存问题
linux·redis·笔记·学习·面试
lbb 小魔仙3 天前
OpenClaw + cpolar 实战:远程 NAS、分享小游戏、RDP,再配置公网 AI 入口
数据库·人工智能·redis·oracle·prometheus
夕除3 天前
redis--018
redis
两锭子3 天前
Redis基础
redis
烟沙九洲3 天前
Redis 缓存穿透、缓存击穿、缓存雪崩
数据库·redis
字节探索3 天前
Redis 只会当缓存用?这 10 大实战场景,让你的系统快到飞起
redis·后端
于樱花森上飞舞3 天前
【Redis】哨兵详解
java·开发语言·数据库·redis
Rain的Java大神之路4 天前
如何快速上传10G文件
java·spring boot·redis·后端·mysql·spring cloud·面试
Wang's Blog4 天前
Java 接入Redis: 通用命令与键管理
java·服务器·redis