本文記錄redis集羣單哨兵的搭建和測試。redis
centos版本:6.7centos
redis版本:3.2.3bash
安裝方式:源碼安裝測試
6379爲主節點,6479和6579爲從節點; 26379爲哨兵節點。ui
cd /usr/local mkdir redis_cluster mkdir redis_cluster/master_6379 mkdir redis_cluster/slave_6479 mkdir redis_cluster/slave_6579
主節點配置spa
vi ./redis_cluster/master_6379/redis.confcode
daemonize yes port 6379 requirepass enen masterauth enen slave-read-only yes
對應哨兵節點配置server
vi ./redis_cluster/master_6379/6379-sentinel.confip
port 26379 sentinel monitor mymaster 192.168.186.92 6379 2 sentinel auth-pass mymaster enen sentinel down-after-milliseconds mymaster 30000 sentinel parallel-syncs mymaster 1 sentinel failover-timeout mymaster 900000
從節點1配置源碼
vi ./redis_cluster/slave_6479/redis.conf
daemonize yes port 6479 requirepass enen masterauth enen slave-read-only yes slaveof 192.168.186.92 6379
從節點2配置
vi ./redis_cluster/slave_6579/redis.conf
daemonize yes port 6579 requirepass enen masterauth enen slave-read-only yes slaveof 192.168.186.92 6379
注意:首次構建sentinel環境時,必須首先啓動master。
啓動master和master-sentinel:
redis-server /usr/local/redis_cluster/master-6379/redis.conf
redis-sentinel /usr/local/redis_cluster/master-6379/6379-sentinel.conf
克隆會話,啓動slave1
redis-server /usr/local/redis_cluster/slave-6479/redis.conf
克隆會話,啓動slave2
redis-server /usr/local/redis_cluster/slave-6579/redis.conf
查看master的狀態
192.168.186.92:6379> info Replication # Replication role:master connected_slaves:2 slave0:ip=192.168.186.92,port=6479,state=online,offset=393,lag=1 slave1:ip=192.168.186.92,port=6579,state=online,offset=393,lag=0 master_repl_offset:393 repl_backlog_active:1 repl_backlog_size:1048576 repl_backlog_first_byte_offset:2 repl_backlog_histlen:392
查看slave的狀態
192.168.186.92:6479> info Replication # Replication role:slave master_host:192.168.186.92 master_port:6379 master_link_status:up master_last_io_seconds_ago:9 master_sync_in_progress:0 slave_repl_offset:449 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
關閉6479節點。
哨兵節點的反應
1588:X 24 Feb 22:51:33.337 # +sdown slave 192.168.186.92:6479 192.168.186.92 6479 @ mymaster 192.168.186.92 6379
同時主節點少了一個從節點
192.168.186.92:6379> info Replication # Replication role:master connected_slaves:1 slave0:ip=192.168.186.92,port=6579,state=online,offset=1149,lag=1 master_repl_offset:1149 repl_backlog_active:1 repl_backlog_size:1048576 repl_backlog_first_byte_offset:2 repl_backlog_histlen:1148
重啓6479節點。
哨兵節點的反應
1588:X 24 Feb 22:57:03.912 * +reboot slave 192.168.186.92:6479 192.168.186.92 6479 @ mymaster 192.168.186.92 6379 1588:X 24 Feb 22:57:03.988 # -sdown slave 192.168.186.92:6479 192.168.186.92 6479 @ mymaster 192.168.186.92 6379
[root@itsecond src]# redis-sentinel /usr/local/redis_cluster/master_6379/6379-sentinel.conf 2959:X 26 Feb 19:23:32.644 * Increased maximum number of open files to 10032 (it was originally set to 1024). _._ _.-``__ ''-._ _.-`` `. `_. ''-._ Redis 3.2.3 (00000000/0) 64 bit .-`` .-```. ```\/ _.,_ ''-._ ( ' , .-` | `, ) Running in sentinel mode |`-._`-...-` __...-.``-._|'` _.-'| Port: 26379 | `-._ `._ / _.-' | PID: 2959 `-._ `-._ `-./ _.-' _.-' |`-._`-._ `-.__.-' _.-'_.-'| | `-._`-._ _.-'_.-' | http://redis.io `-._ `-._`-.__.-'_.-' _.-' |`-._`-._ `-.__.-' _.-'_.-'| | `-._`-._ _.-'_.-' | `-._ `-._`-.__.-'_.-' _.-' `-._ `-.__.-' _.-' `-._ _.-' `-.__.-' 2959:X 26 Feb 19:23:32.645 # WARNING: The TCP backlog setting of 511 cannot be enforced because /proc/sys/net/core/somaxconn is set to the lower value of 128. 2959:X 26 Feb 19:23:32.645 # Sentinel ID is 9c48c3c2e175a32573e2b26fc25cc11d68c690ed 2959:X 26 Feb 19:23:32.645 # +monitor master mymaster 192.168.186.92 6379 quorum 1 2959:X 26 Feb 19:23:32.646 * +slave slave 192.168.186.92:6479 192.168.186.92 6479 @ mymaster 192.168.186.92 6379 2959:X 26 Feb 19:24:52.902 * +slave slave 192.168.186.92:6579 192.168.186.92 6579 @ mymaster 192.168.186.92 6379 2959:X 26 Feb 19:25:34.131 # +sdown master mymaster 192.168.186.92 6379 2959:X 26 Feb 19:25:34.131 # +odown master mymaster 192.168.186.92 6379 #quorum 1/1 2959:X 26 Feb 19:25:34.131 # +new-epoch 1 2959:X 26 Feb 19:25:34.131 # +try-failover master mymaster 192.168.186.92 6379 2959:X 26 Feb 19:25:34.133 # +vote-for-leader 9c48c3c2e175a32573e2b26fc25cc11d68c690ed 1 2959:X 26 Feb 19:25:34.133 # +elected-leader master mymaster 192.168.186.92 6379 2959:X 26 Feb 19:25:34.133 # +failover-state-select-slave master mymaster 192.168.186.92 6379 2959:X 26 Feb 19:25:34.233 # +selected-slave slave 192.168.186.92:6579 192.168.186.92 6579 @ mymaster 192.168.186.92 6379 2959:X 26 Feb 19:25:34.233 * +failover-state-send-slaveof-noone slave 192.168.186.92:6579 192.168.186.92 6579 @ mymaster 192.168.186.92 6379 2959:X 26 Feb 19:25:34.306 * +failover-state-wait-promotion slave 192.168.186.92:6579 192.168.186.92 6579 @ mymaster 192.168.186.92 6379 2959:X 26 Feb 19:25:34.898 # +promoted-slave slave 192.168.186.92:6579 192.168.186.92 6579 @ mymaster 192.168.186.92 6379 2959:X 26 Feb 19:25:34.898 # +failover-state-reconf-slaves master mymaster 192.168.186.92 6379 2959:X 26 Feb 19:25:34.996 * +slave-reconf-sent slave 192.168.186.92:6479 192.168.186.92 6479 @ mymaster 192.168.186.92 6379 2959:X 26 Feb 19:25:35.990 * +slave-reconf-inprog slave 192.168.186.92:6479 192.168.186.92 6479 @ mymaster 192.168.186.92 6379 2959:X 26 Feb 19:25:35.990 * +slave-reconf-done slave 192.168.186.92:6479 192.168.186.92 6479 @ mymaster 192.168.186.92 6379 2959:X 26 Feb 19:25:36.079 # +failover-end master mymaster 192.168.186.92 6379 2959:X 26 Feb 19:25:36.079 # +switch-master mymaster 192.168.186.92 6379 192.168.186.92 6579 2959:X 26 Feb 19:25:36.080 * +slave slave 192.168.186.92:6479 192.168.186.92 6479 @ mymaster 192.168.186.92 6579 2959:X 26 Feb 19:25:36.080 * +slave slave 192.168.186.92:6379 192.168.186.92 6379 @ mymaster 192.168.186.92 6579 2959:X 26 Feb 19:26:06.081 # +sdown slave 192.168.186.92:6379 192.168.186.92 6379 @ mymaster 192.168.186.92 6579
從上面能夠看出,當主節點6379宕機後,選舉產生6579爲新的主節點。
2959:X 26 Feb 19:29:12.167 # -sdown slave 192.168.186.92:6379 192.168.186.92 6379 @ mymaster 192.168.186.92 6579 2959:X 26 Feb 19:29:22.153 * +convert-to-slave slave 192.168.186.92:6379 192.168.186.92 6379 @ mymaster 192.168.186.92 6579