1. Redis Sentinel 简介
Redis Sentinel 是 Redis 高可用解决方案的一部分。它提供了监控、通知和自动故障转移功能,确保 Redis 集群在主节点发生故障时仍然可以继续工作。以下是 Redis Sentinel 的主要功能和作用:
监控: Sentinel 会不断检查每个 Redis 主节点和从节点的运行状态,以确保它们正常工作。
通知: 如果 Redis 实例出现故障,Sentinel 会通知系统管理员或其他应用程序,告知故障情况。
自动故障转移: 当主节点发生故障时,Sentinel 会将其中一个从节点提升为新的主节点,并通知其他从节点更新它们的配置,从而完成故障转移。
配置提供者: Sentinel 可以作为客户端的配置提供者,向客户端提供当前主节点的信息,以确保客户端能够始终连接到主节点。
2. Sentinel 配置示例
以下是一个典型的 Sentinel 配置文件示例:
port 26379
sentinel monitor mymaster 127.0.0.1 6379 2
sentinel auth-pass mymaster yourpassword
sentinel down-after-milliseconds mymaster 5000
sentinel parallel-syncs mymaster 1
sentinel failover-timeout mymaster 60000
port 26379
:指定 Sentinel 监听的端口。sentinel monitor mymaster 127.0.0.1 6379 2
:mymaster
是主节点的名称,可以自定义。127.0.0.1
是主节点的 IP 地址或主机名。6379
是主节点的端口。2
是 Sentinel 判断主节点失效所需的最小 Sentinel 数量。
sentinel auth-pass mymaster yourpassword
:设置访问主节点的密码。sentinel down-after-milliseconds mymaster 5000
:如果主节点在 5000 毫秒内没有响应,Sentinel 会认为它已下线。sentinel parallel-syncs mymaster 1
:在故障转移期间,同时可以有多少个从节点与新的主节点进行同步。sentinel failover-timeout mymaster 60000
:设置故障转移操作的超时时间为 60000 毫秒。
3. 使用 Docker 和 Docker Compose 来配置 Redis 哨兵模式
1. 创建目录结构
redis-sentinel/
├── docker-compose.yml
├── master/
│ ├── redis.conf
├── slave1/
│ ├── redis.conf
├── slave2/
│ ├── redis.conf
├── sentinel/
├── sentinel.conf
2. 配置 Redis 主服务器和从服务器
在 master/redis.conf
中配置主服务器:
port 6379
bind 0.0.0.0
daemonize no
requirepass m123456
save 900 1
save 300 10
save 60 10000
dir /data
appendonly yes
appendfilename "myappendonly.aof"
appendfsync everysec
dbfilename mydump.rdb
在 slave1/redis.conf
和 slave2/redis.conf
中配置从服务器:
port 6379
bind 0.0.0.0
daemonize no
requirepass m123456
save 900 1
sa