Redis哨兵机制
Redis Sentinel物理结构图
角色 | IP | Port | 别名 |
master | 127.0.01 | 6379 | 主节点 |
slave-1 | 127.0.01 | 6380 | slave-1节点 |
slave-2 | 127.0.01 | 6381 | slave-2节点 |
sentinel-1 | 127.0.01 | 26379 | sentinel-1节点 |
sentinel-2 | 127.0.01 | 26380 | sentinel-2节点 |
sentinel-3 | 127.0.01 | 26381 | sentinel-3节点 |
1. 启动主节点
配置:
port 6379
daemonize yes
logfile “6379.log”
dbfilename “dump-6379.rdb”
dir “/opt/soft/redis/data/”
启动主节点,并用一下命令验证主节点是否启动成功:
redis-cli -h 127.0.0.1 -p 6379 ping
此时的拓扑结构图如下:
2. 启动两个从节点
配置:
和主节点一样,只是添加了一条:slaveof 127.0.0.1 6379
启动两个从节点,并验证是否启动成功。
3. 确认主从关系
主节点视角,使用info命令查看
从节点视角,使用info命令查看
此时的拓扑结构图如下:
4. 配置sentinel节点
配置:
port 26379
daemonize yes
dir /opt/soft/redis/data
sentinel monitor mymaster 127.0.0.1 6379 2
sentinel down-after-milliseconds mymaster 30000
sentinel parallel-syncs mymaster 1
sentinel failover-timeout mymaster 180000
1). Sentinel节点的默认端口是26379。
2). sentinel monitor mymaster 127.0.0.1 6379 2配置代表sentinel-1节点需要监控127.0.0.1:6379这个主节点,2代表判断主节点失败至少需要2个sentinel节点同意,mymaster是主节点的别名。
3). 此处有一个坑需要注意,在配置monitor监控的时候,不要使用127.0.0.1这个IP地址,因为在使用其他语言客户端连接的时候,是连接的sentinel,然后获取redis服务的连接,如果配置127.0.0.1的话,是获取不到redis服务的真实地址的,所以这里尽量配置为redis节点的真实地址。
5. 启动sentinel节点
按照上述方法配置其余两个sentinel节点,然后分别启动
redis-sentinel redis-sentinel-26379.conf
6. 确认
redis-cli -h 127.0.0.1 -p 26379 info sentinel
7. 最后的拓扑结构图如下: