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
相关推荐
摇滚侠15 小时前
Redis7 零基础到进阶 Linux 离线安装 Redis 09-10
数据库·redis·缓存
techdashen17 小时前
Uber 的全局限流系统:从零散 Redis 限流到服务网格里的自动化流量保护
数据库·redis·自动化
这不小天嘛1 天前
JAVA八股——redis篇
java·开发语言·redis
烟漠河洛2 天前
线上事故复盘:Redis幂等性设计边界没覆盖跨状态请求,订单状态机直接崩了
数据库·redis·缓存
北极星日淘2 天前
实时汇率结算系统开发|SpringBoot+Redis实现无差价跨境计费解决方案
spring boot·后端·bootstrap
夜影风2 天前
Redis集群创建时出现“Node xxx.xxx is not empty”问题处理
数据库·redis·缓存
utf8mb4安全女神2 天前
【Redis数据库】哨兵集群/redis集群/安装配置/主从复制/数据持久化操作/数据结构/安全限制/PHP redis/
linux·服务器·数据结构·数据库·redis·缓存
烤代码的吐司君2 天前
Redis IO 多路复用原理与引入原因深度解析
数据库·redis·php
无小道2 天前
Redis——redis和mysql的数据同步
数据库·redis·mysql