Redis哨兵机制

本文进行哨兵机制的测试,在一个单板上搭建三个Redis服务进行测试。

服务类型 是否主服务器 ip地址 端口号
Redis 10.31.35.192 6377
Redis 10.31.35.192 6378
Redis 10.31.35.192 6379
Sentinel 10.31.35.192 26377
Sentinel 10.31.35.192 26378
Sentinel 10.31.35.192 26379

首先创建三个目录分别为redis,redis2,redis3,每个目录中放置redis安装包,解压编译
##Redis哨兵机制

配置主从复制

  1. 配置Redis主从服务器
    修改每个工程中对应的redis.conf中的port端口号为6377,6378,6379
    例如

Redis哨兵机制

把Redis的6377作为master服务器,6378,6379作为slave服务器
6377服务不需要设置
6378和6379服务中在redis.conf中添加 slaveof 10.31.35.192 6377
启动三个服务
./redis-server …/redis.conf
此时主从服务配置成功

Redis哨兵机制

通过客户端连接redis主服务(./redis-cli -p 6377 -h 10.31.35.192),通过info replication查询集群状态,可以看出该节点为主节点,有两个从服务节点

Redis哨兵机制

通过客户端连接redis主服务(./redis-cli -p 6378 -h 10.31.35.192),通过info replication查询集群状态,可以看出该节点为从节点,且主节点为up状态

Redis哨兵机制

通过客户端连接redis主服务(./redis-cli -p 6379 -h 10.31.35.192),通过info replication查询集群状态,可以看出该节点为从节点,且主节点为up状态

Redis哨兵机制

测试主从节点

在主节点上创建新的key,set newKey newValue,然后在从节点上进行获取

Redis哨兵机制

Redis哨兵机制

Redis哨兵机制

可以看出主从复制就这么easy的配置成功了

配置哨兵

在三个服务中sentinel.conf文件中配置sentinel monitor mymaster 10.31.35.192 6377 2
启动sentinel服务
./redis-sentinel …/sentinel.conf

Redis哨兵机制

三个sentinel节点监听的都是主节点10.31.35.192 6377
此时如果关闭掉master节点,则sentinel会重新推选出一个master节点出来
[[email protected] src]# ./redis-cli -p 6378 -h 10.31.35.192

10.31.35.192:6378> info replication
role:slave
master_host:10.31.35.192
master_port:6379
master_link_status:up
master_last_io_seconds_ago:0
master_sync_in_progress:0
slave_repl_offset:50665
slave_priority:100
slave_read_only:1
connected_slaves:0
master_replid:ac30e1ac9fe7b436a594e73b2a8c0ac1586f9c60
master_replid2:454f224815f3d5618fd51c321581476a6865ecd9
master_repl_offset:50665
second_repl_offset:4493
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:673


[[email protected] src]# ./redis-cli -p 6379 -h 10.31.35.192

10.31.35.192:6379> info replication
role:master
connected_slaves:1
slave0:ip=10.31.35.192,port=6378,state=online,offset=63259,lag=1
master_replid:ac30e1ac9fe7b436a594e73b2a8c0ac1586f9c60
master_replid2:454f224815f3d5618fd51c321581476a6865ecd9
master_repl_offset:63676
second_repl_offset:4493
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:1
repl_backlog_histlen:63676

可以看出6379节点被推选为master节点
同时redis.conf由slaveof 10.31.35.192 6377修改为replicaof 10.31.35.192 6379

Redis哨兵机制

sentinel切换master的整个过程

Redis哨兵机制