环境:
10.249.2.131 从131
10.249.2.133 主133
10.249.2.134 从134
一、配置三个节点主从
主从已配置完毕
主133上
[root@hivemaster redis]# ./src/redis-cli -p 6379
127.0.0.1:6379> info Replication
# Replication
role:master
connected_slaves:2
slave0:ip=10.249.2.131,port=6379,state=online,offset=6091,lag=1
slave1:ip=10.249.2.134,port=6379,state=online,offset=6091,lag=1
master_repl_offset:6091
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:2
repl_backlog_histlen:6090
[root@hivemaster redis]# ./src/redis-cli -p 6379
127.0.0.1:6379> set name wolf
OK
127.0.0.1:6379> get name
"wolf"
127.0.0.1:6379> save
OK
从131
[root@localhost redis]# ./src/redis-cli -p 6379
127.0.0.1:6379> get name
"wolf"
127.0.0.1:6379> set name wolf
(error) READONLY You can't write against a read only slave.
127.0.0.1:6379>
127.0.0.1:6379> info Replication
# Replication
role:slave
master_host:10.249.2.133
master_port:6379
master_link_status:up
master_last_io_seconds_ago:0
master_sync_in_progress:0
slave_repl_offset:6063
slave_priority:100
slave_read_only:1
connected_slaves:0
master_repl_offset:0
repl_backlog_active:0
repl_backlog_size:1048576
repl_backlog_first_byte_offset:0
repl_backlog_histlen:0
从134上
127.0.0.1:6379> get name
"wolf"
127.0.0.1:6379> set name 123
(error) READONLY You can't write against a read only slave.
[root@hivemaster redis]# ./src/redis-cli -p 6379
127.0.0.1:6379> info Replication
# Replication
role:slave
master_host:10.249.2.133
master_port:6379
master_link_status:up
master_last_io_seconds_ago:1
master_sync_in_progress:0
slave_repl_offset:6525
slave_priority:100
slave_read_only:1
connected_slaves:0
master_repl_offset:0
repl_backlog_active:0
repl_backlog_size:1048576
repl_backlog_first_byte_offset:0
repl_backlog_histlen:0
二、哨兵配置(详细参数研究还得深入)
三台主机都编辑
[root@hivemaster redis]# vi sentinel.conf
port 26379
#MyMaster
sentinel monitor MyMaster 10.249.2.133 6379 1
sentinel down-after-milliseconds MyMaster 5000
sentinel failover-timeout MyMaster 900000
sentinel parallel-syncs MyMaster 2
三台主机都启动
[root@hivemaster redis]# ./src/redis-sentinel sentinel.conf
18329:X 09 Dec 17:47:55.211 * Increased maximum number of open files to 10032 (it was originally set to 1024).
_._
_.-``__ ''-._
_.-`` `. `_. ''-._ Redis 3.0.0 (00000000/0) 64 bit
.-`` .-```. ```\/ _.,_ ''-._
( ' , .-` | `, ) Running in sentinel mode
|`-._`-...-` __...-.``-._|'` _.-'| Port: 26379
| `-._ `._ / _.-' | PID: 18329
`-._ `-._ `-./ _.-' _.-'
|`-._`-._ `-.__.-' _.-'_.-'|
| `-._`-._ _.-'_.-' | http://redis.io
`-._ `-._`-.__.-'_.-' _.-'
|`-._`-._ `-.__.-' _.-'_.-'|
| `-._`-._ _.-'_.-' |
`-._ `-._`-.__.-'_.-' _.-'
`-._ `-.__.-' _.-'
`-._ _.-'
`-.__.-'
18329:X 09 Dec 17:47:55.213 # Sentinel runid is 6a6744a61159c56b86b5b11dd48ac0491085aae5
18329:X 09 Dec 17:47:55.213 # +monitor master MyMaster 10.249.2.133 6379 quorum 1
18329:X 09 Dec 17:47:56.214 * +slave slave 10.249.2.131:6379 10.249.2.131 6379 @ MyMaster 10.249.2.133 6379
18329:X 09 Dec 17:47:56.215 * +slave slave 10.249.2.134:6379 10.249.2.134 6379 @ MyMaster 10.249.2.133 6379
18329:X 09 Dec 17:47:56.987 * +sentinel sentinel 10.249.2.131:26379 10.249.2.131 26379 @ MyMaster 10.249.2.133 6379
18329:X 09 Dec 17:47:57.020 * +sentinel sentinel 10.249.2.133:26379 10.249.2.133 26379 @ MyMaster 10.249.2.133 6379
三、测试哨兵
1、终止主133redis服务。
[root@hivemaster redis]# ps -ef | grep redis
root 16550 1 0 17:44 ? 00:00:00 ./src/redis-server *:6379
root 16607 16130 0 17:54 pts/1 00:00:00 ./src/redis-sentinel *:26379 [sentinel]
root 16611 16568 0 17:55 pts/2 00:00:00 grep redis
[root@hivemaster redis]# ./src/redis-cli -p 6379 shutdown
[root@hivemaster redis]# ps -ef | grep redis
root 16607 16130 0 17:54 pts/1 00:00:00 ./src/redis-sentinel *:26379 [sentinel]
root 16614 16568 0 17:55 pts/2 00:00:00 grep redis
2、查看log
18347:X 09 Dec 17:54:48.769 # +odown master MyMaster 10.249.2.133 6379 #quorum 1/1
18347:X 09 Dec 17:54:48.769 # Next failover delay: I will not start a failover before Fri Dec 9 18:24:49 2016
18347:X 09 Dec 17:54:49.826 # +config-update-from sentinel 10.249.2.133:26379 10.249.2.133 26379 @ MyMaster 10.249.2.133 6379
18347:X 09 Dec 17:54:49.826 # +switch-master MyMaster 10.249.2.133 6379 10.249.2.134 6379 看到切换过程已经切换到134
18347:X 09 Dec 17:54:49.826 * +slave slave 10.249.2.131:6379 10.249.2.131 6379 @ MyMaster 10.249.2.134 6379
18347:X 09 Dec 17:54:49.861 * +slave slave 10.249.2.133:6379 10.249.2.133 6379 @ MyMaster 10.249.2.134 6379
3、进入131和134查看配置文件(发现写入很多配置)
sentinel config-epoch MyMaster 1
sentinel leader-epoch MyMaster 1
sentinel known-slave MyMaster 10.249.2.131 6379
sentinel known-slave MyMaster 10.249.2.133 6379
sentinel known-sentinel MyMaster 10.249.2.133 26379 87abcd43db6cdc29d76f0e5a85e3dee5876eae0e
sentinel known-sentinel MyMaster 10.249.2.134 26379 fa83ecbc2346928da1a8c8e5b788cc39e5c70df3
sentinel current-epoch 1
4、进入134测试
[root@hivemaster redis]# ./src/redis-cli -p 6379
127.0.0.1:6379>
127.0.0.1:6379>
127.0.0.1:6379> info Replication
# Replication
role:master
connected_slaves:1
slave0:ip=10.249.2.131,port=6379,state=online,offset=94090,lag=0
master_repl_offset:94090
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:2
repl_backlog_histlen:94089
127.0.0.1:6379> get name
"wolf"
127.0.0.1:6379> set name laolang
OK
127.0.0.1:6379> save
OK
5、进入131测试
127.0.0.1:6379> info Replication
# Replication
role:slave
master_host:10.249.2.134
master_port:6379
master_link_status:up
master_last_io_seconds_ago:1
master_sync_in_progress:0
slave_repl_offset:67915
slave_priority:100
slave_read_only:1
connected_slaves:0
master_repl_offset:0
repl_backlog_active:0
repl_backlog_size:1048576
repl_backlog_first_byte_offset:0
repl_backlog_histlen:0
127.0.0.1:6379>
[root@localhost redis]# ./src/redis-cli -p 6379
127.0.0.1:6379> get name
"wolf"
127.0.0.1:6379> set name laolang
(error) READONLY You can't write against a read only slave.
三、原主节点恢复
[root@hivemaster redis]# ./src/redis-server redis.conf
[root@hivemaster redis]# ps -ef | grep redis
root 16607 16130 0 17:54 pts/1 00:00:02 ./src/redis-sentinel *:26379 [sentinel]
root 16648 1 0 18:04 ? 00:00:00 ./src/redis-server *:6379
root 16652 16568 0 18:05 pts/2 00:00:00 grep redis
现在的主节点上查看(未回切)
[root@hivemaster redis]# ./src/redis-cli -p 6379
127.0.0.1:6379> info Replication
# Replication
role:master
connected_slaves:2
slave0:ip=10.249.2.131,port=6379,state=online,offset=127316,lag=1
slave1:ip=10.249.2.133,port=6379,state=online,offset=127316,lag=1
master_repl_offset:127455
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:2
repl_backlog_histlen:127454
10.249.2.131 从131
10.249.2.133 主133
10.249.2.134 从134
一、配置三个节点主从
主从已配置完毕
主133上
[root@hivemaster redis]# ./src/redis-cli -p 6379
127.0.0.1:6379> info Replication
# Replication
role:master
connected_slaves:2
slave0:ip=10.249.2.131,port=6379,state=online,offset=6091,lag=1
slave1:ip=10.249.2.134,port=6379,state=online,offset=6091,lag=1
master_repl_offset:6091
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:2
repl_backlog_histlen:6090
[root@hivemaster redis]# ./src/redis-cli -p 6379
127.0.0.1:6379> set name wolf
OK
127.0.0.1:6379> get name
"wolf"
127.0.0.1:6379> save
OK
从131
[root@localhost redis]# ./src/redis-cli -p 6379
127.0.0.1:6379> get name
"wolf"
127.0.0.1:6379> set name wolf
(error) READONLY You can't write against a read only slave.
127.0.0.1:6379>
127.0.0.1:6379> info Replication
# Replication
role:slave
master_host:10.249.2.133
master_port:6379
master_link_status:up
master_last_io_seconds_ago:0
master_sync_in_progress:0
slave_repl_offset:6063
slave_priority:100
slave_read_only:1
connected_slaves:0
master_repl_offset:0
repl_backlog_active:0
repl_backlog_size:1048576
repl_backlog_first_byte_offset:0
repl_backlog_histlen:0
从134上
127.0.0.1:6379> get name
"wolf"
127.0.0.1:6379> set name 123
(error) READONLY You can't write against a read only slave.
[root@hivemaster redis]# ./src/redis-cli -p 6379
127.0.0.1:6379> info Replication
# Replication
role:slave
master_host:10.249.2.133
master_port:6379
master_link_status:up
master_last_io_seconds_ago:1
master_sync_in_progress:0
slave_repl_offset:6525
slave_priority:100
slave_read_only:1
connected_slaves:0
master_repl_offset:0
repl_backlog_active:0
repl_backlog_size:1048576
repl_backlog_first_byte_offset:0
repl_backlog_histlen:0
二、哨兵配置(详细参数研究还得深入)
三台主机都编辑
[root@hivemaster redis]# vi sentinel.conf
port 26379
#MyMaster
sentinel monitor MyMaster 10.249.2.133 6379 1
sentinel down-after-milliseconds MyMaster 5000
sentinel failover-timeout MyMaster 900000
sentinel parallel-syncs MyMaster 2
三台主机都启动
[root@hivemaster redis]# ./src/redis-sentinel sentinel.conf
18329:X 09 Dec 17:47:55.211 * Increased maximum number of open files to 10032 (it was originally set to 1024).
_._
_.-``__ ''-._
_.-`` `. `_. ''-._ Redis 3.0.0 (00000000/0) 64 bit
.-`` .-```. ```\/ _.,_ ''-._
( ' , .-` | `, ) Running in sentinel mode
|`-._`-...-` __...-.``-._|'` _.-'| Port: 26379
| `-._ `._ / _.-' | PID: 18329
`-._ `-._ `-./ _.-' _.-'
|`-._`-._ `-.__.-' _.-'_.-'|
| `-._`-._ _.-'_.-' | http://redis.io
`-._ `-._`-.__.-'_.-' _.-'
|`-._`-._ `-.__.-' _.-'_.-'|
| `-._`-._ _.-'_.-' |
`-._ `-._`-.__.-'_.-' _.-'
`-._ `-.__.-' _.-'
`-._ _.-'
`-.__.-'
18329:X 09 Dec 17:47:55.213 # Sentinel runid is 6a6744a61159c56b86b5b11dd48ac0491085aae5
18329:X 09 Dec 17:47:55.213 # +monitor master MyMaster 10.249.2.133 6379 quorum 1
18329:X 09 Dec 17:47:56.214 * +slave slave 10.249.2.131:6379 10.249.2.131 6379 @ MyMaster 10.249.2.133 6379
18329:X 09 Dec 17:47:56.215 * +slave slave 10.249.2.134:6379 10.249.2.134 6379 @ MyMaster 10.249.2.133 6379
18329:X 09 Dec 17:47:56.987 * +sentinel sentinel 10.249.2.131:26379 10.249.2.131 26379 @ MyMaster 10.249.2.133 6379
18329:X 09 Dec 17:47:57.020 * +sentinel sentinel 10.249.2.133:26379 10.249.2.133 26379 @ MyMaster 10.249.2.133 6379
三、测试哨兵
1、终止主133redis服务。
[root@hivemaster redis]# ps -ef | grep redis
root 16550 1 0 17:44 ? 00:00:00 ./src/redis-server *:6379
root 16607 16130 0 17:54 pts/1 00:00:00 ./src/redis-sentinel *:26379 [sentinel]
root 16611 16568 0 17:55 pts/2 00:00:00 grep redis
[root@hivemaster redis]# ./src/redis-cli -p 6379 shutdown
[root@hivemaster redis]# ps -ef | grep redis
root 16607 16130 0 17:54 pts/1 00:00:00 ./src/redis-sentinel *:26379 [sentinel]
root 16614 16568 0 17:55 pts/2 00:00:00 grep redis
2、查看log
18347:X 09 Dec 17:54:48.769 # +odown master MyMaster 10.249.2.133 6379 #quorum 1/1
18347:X 09 Dec 17:54:48.769 # Next failover delay: I will not start a failover before Fri Dec 9 18:24:49 2016
18347:X 09 Dec 17:54:49.826 # +config-update-from sentinel 10.249.2.133:26379 10.249.2.133 26379 @ MyMaster 10.249.2.133 6379
18347:X 09 Dec 17:54:49.826 # +switch-master MyMaster 10.249.2.133 6379 10.249.2.134 6379 看到切换过程已经切换到134
18347:X 09 Dec 17:54:49.826 * +slave slave 10.249.2.131:6379 10.249.2.131 6379 @ MyMaster 10.249.2.134 6379
18347:X 09 Dec 17:54:49.861 * +slave slave 10.249.2.133:6379 10.249.2.133 6379 @ MyMaster 10.249.2.134 6379
3、进入131和134查看配置文件(发现写入很多配置)
sentinel config-epoch MyMaster 1
sentinel leader-epoch MyMaster 1
sentinel known-slave MyMaster 10.249.2.131 6379
sentinel known-slave MyMaster 10.249.2.133 6379
sentinel known-sentinel MyMaster 10.249.2.133 26379 87abcd43db6cdc29d76f0e5a85e3dee5876eae0e
sentinel known-sentinel MyMaster 10.249.2.134 26379 fa83ecbc2346928da1a8c8e5b788cc39e5c70df3
sentinel current-epoch 1
4、进入134测试
[root@hivemaster redis]# ./src/redis-cli -p 6379
127.0.0.1:6379>
127.0.0.1:6379>
127.0.0.1:6379> info Replication
# Replication
role:master
connected_slaves:1
slave0:ip=10.249.2.131,port=6379,state=online,offset=94090,lag=0
master_repl_offset:94090
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:2
repl_backlog_histlen:94089
127.0.0.1:6379> get name
"wolf"
127.0.0.1:6379> set name laolang
OK
127.0.0.1:6379> save
OK
5、进入131测试
127.0.0.1:6379> info Replication
# Replication
role:slave
master_host:10.249.2.134
master_port:6379
master_link_status:up
master_last_io_seconds_ago:1
master_sync_in_progress:0
slave_repl_offset:67915
slave_priority:100
slave_read_only:1
connected_slaves:0
master_repl_offset:0
repl_backlog_active:0
repl_backlog_size:1048576
repl_backlog_first_byte_offset:0
repl_backlog_histlen:0
127.0.0.1:6379>
[root@localhost redis]# ./src/redis-cli -p 6379
127.0.0.1:6379> get name
"wolf"
127.0.0.1:6379> set name laolang
(error) READONLY You can't write against a read only slave.
三、原主节点恢复
[root@hivemaster redis]# ./src/redis-server redis.conf
[root@hivemaster redis]# ps -ef | grep redis
root 16607 16130 0 17:54 pts/1 00:00:02 ./src/redis-sentinel *:26379 [sentinel]
root 16648 1 0 18:04 ? 00:00:00 ./src/redis-server *:6379
root 16652 16568 0 18:05 pts/2 00:00:00 grep redis
现在的主节点上查看(未回切)
[root@hivemaster redis]# ./src/redis-cli -p 6379
127.0.0.1:6379> info Replication
# Replication
role:master
connected_slaves:2
slave0:ip=10.249.2.131,port=6379,state=online,offset=127316,lag=1
slave1:ip=10.249.2.133,port=6379,state=online,offset=127316,lag=1
master_repl_offset:127455
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:2
repl_backlog_histlen:127454