sentinel架构说明:
主机: 10.10.10.47 Sentinel节点: testdb47 Sentinel端口: 6378 Redis实例端口: 6379 角色:Master
主机: 10.10.10.62 Sentinel节点: testdb62 Sentinel端口: 6378 Redis实例端口: 6379 角色:Slave
主机: 10.10.10.63 Sentinel节点: testdb63 Sentinel端口: 6378 Redis实例端口: 6379 角色:Slave
在10.10.10.47/62/63 上安装Redis软件,步骤省略
建立复制关系
登录 testdb62
# su redis
$ redis-cli -h 10.10.10.62 -p 6379 -a 'AY*s23y7Qt5w+J#rz^FoEBBB*Rc$u^qg'
10.10.10.62:6379> SLAVEOF 10.10.10.47 6379
OK
10.10.10.62:6379> INFO replication
# Replication
role:slave
master_host:10.10.10.47
master_port:6379
master_link_status:up
master_last_io_seconds_ago:4
master_sync_in_progress:0
slave_repl_offset:14
slave_priority:100
slave_read_only:1
connected_slaves:0
master_replid:30018a98ae864edff807a94f50b8d0c2b714e35d
master_replid2:0000000000000000000000000000000000000000
master_repl_offset:14
second_repl_offset:-1
repl_backlog_active:1
repl_backlog_size:2147483648
repl_backlog_first_byte_offset:15
repl_backlog_histlen:0
登录 testdb63
# su redis
$ redis-cli -h 10.10.10.63 -p 6379 -a 'AY*s23y7Qt5w+J#rz^FoEBBB*Rc$u^qg'
10.10.10.63:6379> SLAVEOF 10.10.10.47 6379
OK
10.10.10.63:6379> INFO replication
# Replication
role:slave
master_host:10.10.10.47
master_port:6379
master_link_status:up
master_last_io_seconds_ago:6
master_sync_in_progress:0
slave_repl_offset:14
slave_priority:100
slave_read_only:1
connected_slaves:0
master_replid:30018a98ae864edff807a94f50b8d0c2b714e35d
master_replid2:0000000000000000000000000000000000000000
master_repl_offset:14
second_repl_offset:-1
repl_backlog_active:1
repl_backlog_size:2147483648
repl_backlog_first_byte_offset:1
repl_backlog_histlen:14
一主两从架构自此搭建成功。
参数配置和启动 Redis sentinel
su - redis
vi /data/redis/conf/sentinel_6378.conf
bind 0.0.0.0
port 6378
daemonize yes
dir /data/redis/data
logfile "sentinel_6378.log"
loglevel debug
sentinel monitor mymaster 127.0.0.1 6379 2
sentinel auth-pass mymaster AY*s23y7Qt5w+J#rz^FoEBBB*Rc$u^qg
sentinel down-after-milliseconds mymaster 30000
sentinel parallel-syncs mymaster 1
sentinel failover-timeout mymaster 180000
sentinel deny-scripts-reconfig yes
启动 Redis sentinel
redis-sentinel /data/redis/conf/sentinel_6378.conf
检测当前所有已启动的sentinel实例的状态。
$ redis-cli -h 10.10.10.47 -p 6378 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=127.0.0.1:6379,slaves=2,sentinels=4
或者登录任意一个已启动的sentinel实例
$ redis-cli -h 10.10.10.47 -p 6378
10.10.10.47:6378> sentinel sentinels mymaster
1) 1) "name"
2) "c4db878bff2796c617d34d3a8492c3d54067e8c7"
3) "ip"
4) "10.10.10.62"
5) "port"
6) "6378"
7) "runid"
8) "c4db878bff2796c617d34d3a8492c3d54067e8c7"
9) "flags"
10) "sentinel"
11) "link-pending-commands"
12) "0"
13) "link-refcount"
14) "1"
15) "last-ping-sent"
16) "0"
17) "last-ok-ping-reply"
18) "271"
19) "last-ping-reply"
20) "271"
21) "down-after-milliseconds"
22) "30000"
23) "last-hello-message"
24) "316"
25) "voted-leader"
26) "?"
27) "voted-leader-epoch"
28) "0"
2) 1) "name"
2) "f39ef24c41889c458ac93552819d202e575625d0"
3) "ip"
4) "127.0.0.1"
5) "port"
6) "6378"
7) "runid"
8) "f39ef24c41889c458ac93552819d202e575625d0"
9) "flags"
10) "sentinel"
11) "link-pending-commands"
12) "0"
13) "link-refcount"
14) "1"
15) "last-ping-sent"
16) "0"
17) "last-ok-ping-reply"
18) "619"
19) "last-ping-reply"
20) "619"
21) "down-after-milliseconds"
22) "30000"
23) "last-hello-message"
24) "639"
25) "voted-leader"
26) "?"
27) "voted-leader-epoch"
28) "0"
3) 1) "name"
2) "3fcd7c5285251eaba1a674acf2a5e8fb0219aa83"
3) "ip"
4) "127.0.0.1"
5) "port"
6) "6378"
7) "runid"
8) "3fcd7c5285251eaba1a674acf2a5e8fb0219aa83"
9) "flags"
10) "sentinel"
11) "link-pending-commands"
12) "0"
13) "link-refcount"
14) "1"
15) "last-ping-sent"
16) "0"
17) "last-ok-ping-reply"
18) "959"
19) "last-ping-reply"
20) "959"
21) "down-after-milliseconds"
22) "30000"
23) "last-hello-message"
24) "338"
25) "voted-leader"
26) "?"
27) "voted-leader-epoch"
28) "0"
至此,Redis sentinel搭建完毕。