总体部署
一主二从三哨兵
ip地址分配分别为
主 127.0.0.1:6379
从 127.0.0.1:6389
从 127.0.0.1:6399
哨兵 127.0.0.1:26379
哨兵 127.0.0.1:26389
哨兵 127.0.0.1:26399
一主二从的配置文件 redis.conf设置
主的保持默认的不变
二个从的分别打开配置文件
找到设置端口的地方
分别设置为 6389 和6399
# Accept connections on the specified port, default is 6379 (IANA #815344).
# If port0 isspecified Redis will not listen on a TCP socket.
port6389
# Accept connections on the specified port, default is 6379 (IANA #815344).
# If port0 isspecified Redis will not listen on a TCP socket.
port6399
然后都在
# slaveof
一行的下面增加
slaveof 127.0.0.1 6379
这样主从的配置就ok了
三个哨兵的sentinel.conf配置
分别打开sentinel.conf配置文件
修改他们的端口为
26379 26389 26399
sentinel monitor mymaster 127.0.0.1 6379 2
配置中的这一行表示 我们要监视的主的ip和端口,mymaster是主的名称,因为我们的主是127.0.0.1:6379,所以三个哨兵中的这个地方都不用修改。
然后所有的配置就ok了,本地测试环境貌似需要改动的地方不多。
启动
主
进入src目录
./redis-server ../redis.conf
25496:M 18 Feb 21:43:12.616 * Increased maximum number of open files to 10032 (it was originally set to 4864).
_._
_.-``__ ''-._
_.-`` `. `_. ''-._ Redis 3.2.8 (00000000/0) 64bit
.-`` .-```. ```\/ _.,_ ''-._
(', .-` | `, ) Running in standalone mode
|`-._`-...-` __...-.``-._|'` _.-'| Port: 6379
| `-._ `._ / _.-'| PID: 25496
`-._ `-._ `-./ _.-'_.-'
|`-._`-._ `-.__.-'_.-'_.-'|
| `-._`-._ _.-'_.-' | http://redis.io
`-._ `-._`-.__.-'_.-' _.-' |`-._`-._ `-.__.-'_.-'_.-'|
| `-._`-._ _.-'_.-' |`-._ `-._`-.__.-'_.-' _.-' `-._ `-.__.-'_.-'`-._ _.-' `-.__.-'
25496:M 18 Feb 21:43:12.618 # Server started, Redis version 3.2.8
25496:M 18 Feb 21:43:12.618 * DB loaded from disk: 0.000seconds25496:M 18 Feb 21:43:12.618 * The server is now ready to accept connections on port 6379
25496:M 18 Feb 21:43:21.196 * Slave 127.0.0.1:6389 asks forsynchronization25496:M 18 Feb 21:43:21.196 * Full resync requested by slave 127.0.0.1:6389
25496:M 18 Feb 21:43:21.196 * Starting BGSAVE forSYNC with target: disk25496:M 18 Feb 21:43:21.197 * Background saving started by pid 25498
25498:C 18 Feb 21:43:21.198 *DB saved on disk25496:M 18 Feb 21:43:21.198 *Background saving terminated with success25496:M 18 Feb 21:43:21.198 * Synchronization with slave 127.0.0.1:6389succeeded25496:M 18 Feb 21:43:28.979 * Slave 127.0.0.1:6399 asks forsynchronization25496:M 18 Feb 21:43:28.979 * Full resync requested by slave 127.0.0.1:6399
25496:M 18 Feb 21:43:28.979 * Starting BGSAVE forSYNC with target: disk25496:M 18 Feb 21:43:28.980 * Background saving started by pid 25500
25500:C 18 Feb 21:43:28.986 *DB saved on disk25496:M 18 Feb 21:43:29.044 *Background saving terminated with success25496:M 18 Feb 21:43:29.044 * Synchronization with slave 127.0.0.1:6399 succeeded
从1
进入src目录
./redis-server ../redis.conf
25497:S 18 Feb 21:43:21.194 * Increased maximum number of open files to 10032 (it was originally set to 4864).
_._
_.-``__ ''-._
_.-`` `. `_. ''-._ Redis 3.2.8 (00000000/0) 64bit
.-`` .-```. ```\/ _.,_ ''-._
(', .-` | `, ) Running in standalone mode
|`-._`-...-` __...-.``-._|'` _.-'| Port: 6389
| `-._ `._ / _.-'| PID: 25497
`-._ `-._ `-./ _.-'_.-'
|`-._`-._ `-.__.-'_.-'_.-'|
| `-._`-._ _.-'_.-' | http://redis.io
`-._ `-._`-.__.-'_.-' _.-' |`-._`-._ `-.__.-'_.-'_.-'|
| `-._`-._ _.-'_.-' |`-._ `-._`-.__.-'_.-' _.-' `-._ `-.__.-'_.-'`-._ _.-' `-.__.-'
25497:S 18 Feb 21:43:21.196 # Server started, Redis version 3.2.8
25497:S 18 Feb 21:43:21.196 * DB loaded from disk: 0.000seconds25497:S 18 Feb 21:43:21.196 * The server is now ready to accept connections on port 6389
25497:S 18 Feb 21:43:21.196 * Connecting to MASTER 127.0.0.1:6379
25497:S 18 Feb 21:43:21.196 * MASTER SLAVE sync started25497:S 18 Feb 21:43:21.196 * Non blocking connect for SYNC fired the event.25497:S 18 Feb 21:43:21.196 * Master replied to PING, replication can continue...25497:S 18 Feb 21:43:21.196 *Partial resynchronization not possible (no cached master)25497:S 18 Feb 21:43:21.197 * Full resync from master: b17cd8764974c68bedacb2e5927a04e9ff15f7df:1
25497:S 18 Feb 21:43:21.198 * MASTER SLAVE sync: receiving 108 bytes frommaster25497:S 18 Feb 21:43:21.198 * MASTER SLAVE sync: Flushing old data25497:S 18 Feb 21:43:21.198 * MASTER SLAVE sync: Loading DB inmemory25497:S 18 Feb 21:43:21.199 * MASTER SLAVE sync: Finished with success
从2
进入src目录
./redis-server ../redis.conf
25499:S 18 Feb 21:43:28.975 * Increased maximum number of open files to 10032 (it was originally set to 4864).
_._
_.-``__ ''-._
_.-`` `. `_. ''-._ Redis 3.2.8 (00000000/0) 64bit
.-`` .-```. ```\/ _.,_ ''-._
(', .-` | `, ) Running in standalone mode
|`-._`-...-` __...-.``-._|'` _.-'| Port: 6399
| `-._ `._ / _.-'| PID: 25499
`-._ `-._ `-./ _.-'_.-'
|`-._`-._ `-.__.-'_.-'_.-'|
| `-._`-._ _.-'_.-' | http://redis.io
`-._ `-._`-.__.-'_.-' _.-' |`-._`-._ `-.__.-'_.-'_.-'|
| `-._`-._ _.-'_.-' |`-._ `-._`-.__.-'_.-' _.-' `-._ `-.__.-'_.-'`-._ _.-' `-.__.-'
25499:S 18 Feb 21:43:28.977 # Server started, Redis version 3.2.8
25499:S 18 Feb 21:43:28.977 * DB loaded from disk: 0.000seconds25499:S 18 Feb 21:43:28.977 * The server is now ready to accept connections on port 6399
25499:S 18 Feb 21:43:28.979 * Connecting to MASTER 127.0.0.1:6379
25499:S 18 Feb 21:43:28.979 * MASTER SLAVE sync started25499:S 18 Feb 21:43:28.979 * Non blocking connect for SYNC fired the event.25499:S 18 Feb 21:43:28.979 * Master replied to PING, replication can continue...25499:S 18 Feb 21:43:28.979 *Partial resynchronization not possible (no cached master)25499:S 18 Feb 21:43:28.980 * Full resync from master: b17cd8764974c68bedacb2e5927a04e9ff15f7df:15
25499:S 18 Feb 21:43:29.044 * MASTER SLAVE sync: receiving 108 bytes frommaster25499:S 18 Feb 21:43:29.045 * MASTER SLAVE sync: Flushing old data25499:S 18 Feb 21:43:29.045 * MASTER SLAVE sync: Loading DB inmemory25499:S 18 Feb 21:43:29.045 * MASTER SLAVE sync: Finished with success
哨兵1
进入src目录
./redis-sentinel ../sentinel.conf
25501:X 18 Feb 21:43:35.300 * Increased maximum number of open files to 10032 (it was originally set to 4864).
_._
_.-``__ ''-._
_.-`` `. `_. ''-._ Redis 3.2.8 (00000000/0) 64bit
.-`` .-```. ```\/ _.,_ ''-._
(', .-` | `, ) Running in sentinel mode
|`-._`-...-` __...-.``-._|'` _.-'| Port: 26379
| `-._ `._ / _.-'| PID: 25501
`-._ `-._ `-./ _.-'_.-'
|`-._`-._ `-.__.-'_.-'_.-'|
| `-._`-._ _.-'_.-' | http://redis.io
`-._ `-._`-.__.-'_.-' _.-' |`-._`-._ `-.__.-'_.-'_.-'|
| `-._`-._ _.-'_.-' |`-._ `-._`-.__.-'_.-' _.-' `-._ `-.__.-'_.-'`-._ _.-' `-.__.-'
25501:X 18 Feb 21:43:35.301 # Sentinel ID is6f3360c06cafe7807e2c1ae00fe7c791354b8b2425501:X 18 Feb 21:43:35.301 # +monitor master mymaster 127.0.0.1 6379 quorum 2
哨兵2和哨兵3启动过程相同
验证
新开一个命令行窗口进入redis的src目录,用redis-cli工具登录其中一个哨兵
./redis-cli -p 26379
连接成功后运行如下命令
sentinel master mymaster
结果如下
127.0.0.1:26379>sentinel master mymaster1) "name"
2) "mymaster"
3) "ip"
4) "127.0.0.1"
5) "port"
6) "6379"
7) "runid"
8) "b17cd8764974c68bedacb2e5927a04e9ff15f7df"
9) "flags"
10) "master"
11) "link-pending-commands"
12) "0"
13) "link-refcount"
14) "1"
15) "last-ping-sent"
16) "0"
17) "last-ok-ping-reply"
18) "703"
19) "last-ping-reply"
20) "703"
21) "down-after-milliseconds"
22) "30000"
23) "info-refresh"
24) "1090"
25) "role-reported"
26) "master"
27) "role-reported-time"
28) "3253725"
29) "config-epoch"
30) "0"
31) "num-slaves"
32) "2"
33) "num-other-sentinels"
34) "2"
35) "quorum"
36) "2"
37) "failover-timeout"
38) "180000"
39) "parallel-syncs"
40) "1"
参考
插播个广告