Sentinel版Redis集群搭建
部署Redis数据节点
1.启动主节点
配置:
redis-6379.conf
port 6379
daemonize yes
logfile "6379.log"
dbfilename "dump-6379.rdb"
dir "/opt/soft/redis/data/"
启动主节点:
redis-server redis-6379.conf
认是否启动。一般来说只需要ping命令检测一下就可以,确认Redis数
据节点是否已经启动。
$ redis-cli -h 127.0.0.1 -p 6379 ping
PONG
2.启动两个从节点
配置:
两个从节点的配置是完全一样的,下面以一个从节点为例子进行说明,
和主节点的配置不一样的是添加了slaveof配置。
redis-6380.conf
port 6380
daemonize yes
logfile "6380.log"
dbfilename "dump-6380.rdb"
dir "/opt/soft/redis/data/"
slaveof 127.0.0.1 6379
启动两个从节点:
redis-server redis-6380.conf
redis-server redis-6381.conf
验证:
redis-cli -h 127.0.0.1 -p 6381 ping
PONG
3.确认主从关系
主节点的视角,它有两个从节点,分别是127.0.0.1:6380和127.0.0.1:6381
$ redis-cli -h 127.0.0.1 -p 6379 info replication
Replication
role:master
connected_slaves:2
slave0:ip=127.0.0.1,port=6380,state=online,offset=281,lag=1
slave1:ip=127.0.0.1,port=6381,state=online,offset=281,lag=0
从节点的视角,它的主节点是127.0.0.1:6379
$ redis-cli -h 127.0.0.1 -p 6380 info replication
Replication
role:slave
master_host:127.0.0.1
master_port:6379
master_link_status:up
部署Sentinel节点
3个Sentinel节点的部署方法是完全一致的(端口不同),下面以
sentinel-1节点的部署为例子进行说明。
1.配置Sentinel节点
redis-sentinel-26379.conf
port 26379
daemonize yes
logfile "26379.log"
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 mymaster127.0.0.1 6379 2配置代表sentinel-1节点需要监
控127.0.0.1:6379这个主节点,2代表判断主节点失败至少需要2个Sentinel节
点同意,mymaster是主节点的别名,其余Sentinel配置将在下一节进行详细说
明。
2.启动Sentinel节点
Sentinel节点的启动方法有两种:
方法一,使用redis-sentinel命令:
redis-sentinel redis-sentinel-26379.conf
方法二,使用redis-server命令加--sentinel参数:
redis-server redis-sentinel-26379.conf --sentinel
两种方法本质上是一样的。
3.确认
Sentinel节点本质上是一个特殊的Redis节点,所以也可以通过info命令
来查询它的相关信息,从下面info的Sentinel片段来看,Sentinel节点找到了主
节点127.0.0.1:6379,发现了它的两个从节点,同时发现Redis Sentinel一共
有3个Sentinel节点。这里只需要了解Sentinel节点能够彼此感知到对方,同时
能够感知到Redis数据节点就可以了:
$ redis-cli -h 127.0.0.1 -p 26379 info Sentinel
Sentinel
sentinel_masters:1
sentinel_tilt:0
sentinel_running_scripts:0
sentinel_scripts_queue_length:0
master0:name=mymaster,status=ok,address=127.0.0.1:6379,slaves=2,sentinels=3
当三个Sentinel节点都启动后,整个拓扑结构如图9-16所示。
至此Redis Sentinel已经搭建起来了,整体上还是比较容易的,但是有2
点需要强调一下:
1)生产环境中建议Redis Sentinel的所有节点应该分布在不同的物理机
上。
2)Redis Sentinel中的数据节点和普通的Redis数据节点在配置上没有任
何区别,只不过是添加了一些Sentinel节点对它们进行监控。