3 Virtual Machines
192.168.1.52
192.168.1.53
192.168.1.54
Come up and do the operation:
1. The machine is compiled and installed (3.0.7 version) Redis->wget http://download.redis.io/releases/redis-3.0.7.tar.gz
2. Configuration:
Main machine: 192.168.1.52 slave: 192.168.1.53 192.168.1.54
Configuration file (redis.conf):
192.168.1.52:
Daemonize yespidfile "/var/run/redis.pid" Port 6379tcp-backlog 511timeout 0tcp-keepalive 0loglevel noticelogfile "/home /log/redis.log "Databases 16save 1save 10save 10000stop-writes-on-bgsave-error yesrdbcompression Yesrdbchecksum yesdbfilename "Dump.rdb" dir "/usr/local/redis-3.0.7" Slave-serve-stale-data yesslave-read-only Yesrepl-diskless-sync norepl-diskless-sync-delay 5repl-disable-tcp-nodelay noslave-priority 100appendonly Noappendfilename "appendonly.aof" Appendfsync everysecno-appendfsync-on-rewrite noauto-aof-rewrite-percentage 100auto-aof-rewrite-min-size 64mbaof-load-truncated Yeslua-time-limit 5000slowlog-log-slower-than 10000slowlog-max-len 128latency-monitor-threshold 0notify-keyspace-events "" Hash-max-ziplist-entries 512hash-max-ziplist-value 64list-max-ziplist-entries 512list-max-ziplist-value 64set-max-intset-entries 512zset-max-ziplist-entries 128zset-max-ziplist-value 64hll-sparse-max-bytes 3000activerehashing Yesclient-output-buffer-limit Normal 0 0 0client-ouTput-buffer-limit slave 256mb 64mb 60client-output-buffer-limit pubsub 32mb 8MB 60hz 10aof-rewrite-incremental-fsync Yes 
Slave machine (redis.conf): 192.168.1.53 192.168.1.54
[[email protected] redis-3.0.7]# cat redis.conf | Egrep-v "^$|^#" daemonize yespidfile "/var/run/redis.pid" Port 6379tcp-backlog 511timeout 0tcp-keepalive 0loglevel Noticelogfile "/home/log/redis.log" databases 16save 1save 10save 10000stop-writes-on-bgsave-error Yesrdbcompression yesrdbchecksum yesdbfilename "Dump.rdb" dir "/usr/local/redis-3.0.7" slaveof 192.168.1.52 6379slave-serve-stale-data yesslave-read-only Yesrepl-diskless-sync Norepl-diskless-sync-delay 5repl-disable-tcp-nodelay noslave-priority 100appendonly noappendfilename "appendonly.aof" Appendfsync Everysecno-appendfsync-on-rewrite Noauto-aof-rewrite-percentage 100auto-aof-rewrite-min-size 64mbaof-load-truncated Yeslua-time-limit 5000slowlog-log-slower-than 10000slowlog-max-len 128latency-monitor-threshold 0notify-keyspace-events "" Hash-max-ziplist-entries 512hash-max-ziplist-value 64list-max-ziplist-entries 512list-max-ziplist-value 64set-max-intset-entries 512zset-max-ziplist-entries 128zset-max-ziplist-valuE 64hll-sparse-max-bytes 3000activerehashing yesclient-output-buffer-limit normal 0 0 0client-output-buffer-limit Slave 256mb 64mb 60client-output-buffer-limit pubsub 32mb 8MB 60hz 10aof-rewrite-incremental-fsync Yes
3. Run the Redis_server up
View information:
Redis-cli-h 192.168.1.52-p 6379 Info replication
# replicationrole:masterconnected_slaves:0master_repl_offset:0repl_backlog_active:0repl_backlog_size : 1048576repl_backlog_first_byte_offset:0repl_backlog_histlen:0
Redis-cli-h 192.168.1.53-p 6379 Info replication
# Replicationrole:slavemaster_host:192.168.1.52master_port:6379master_link_status:upmaster_last_io_seconds_ago : 2master_sync_in_progress:0slave_repl_offset:15slave_priority:100slave_read_only:1connected_slaves:1slave0:ip= 192.168.1.54,port=6379,state=online,offset=1,lag=0master_repl_offset:1repl_backlog_active:1repl_backlog_size : 1048576repl_backlog_first_byte_offset:2repl_backlog_histlen:0
Redis-cli-h 192.168.1.54-p 6379 Info replication
# Replicationrole:slavemaster_host:192.168.1.52master_port:6379master_link_status:upmaster_last_io_seconds_ago : 1master_sync_in_progress:0slave_repl_offset:169slave_priority:100slave_read_only:1connected_slaves:0master_ Repl_offset:0repl_backlog_active:0repl_backlog_size:1048576repl_backlog_first_byte_offset:0repl_backlog_ histlen:0
Now look at 192.168.1.52 Master and slave information
Syswjdemacbook-air:shell syswj$/watch_redis.sh info52# replicationrole:masterconnected_slaves:2slave0:ip= 192.168.1.53,port=6379,state=online,offset=211,lag=1slave1:ip=192.168.1.54,port=6379,state=online,offset=211, Lag=0master_repl_offset:211repl_backlog_active:1repl_backlog_size:1048576repl_backlog_first_byte_offset:2repl_ backlog_histlen:210
3. Turn on Redis-sentinel for master-slave monitoring switch management (only one instance is enabled) configuration
Port 26379dir "/tmp" Sentinel Monitor MyMaster 192.168.1.52 6379 2daemonize yessentinel down-after-milliseconds MyMaster 1 0000sentinel Config-epoch mymaster 10sentinel leader-epoch mymaster 10logfile "/home/log/sen.log" Sentinel Known-sentinel mymaster 127.0.0.1 26379 efbd30332f50847e0b0e9c5ab0adc5dfb91823d2sentinel Current-epoch 10
After running:
3595:x Apr 11:57:29.146 # Sentinel Runid is fdc1c1d8a5adf48a5fecc229be42810a61eb86033595:x Apr 11:57:29.146 # +monit  or master MyMaster 192.168.1.52 6379 Quorum 23595:x April 11:57:30.146 * +slave slave 192.168.1.53:6379 192.168.1.53 6379 @ mymaster 192.168.1.52 63793595:x Apr 11:57:30.156 * +slave slave 192.168.1.54:6379 192.168.1.54 6379 @ mymaster 192.  168.1.52 63793595:x APR 11:57:30.871 *-dup-sentinel master MyMaster 192.168.1.52 6379 #duplicate of 127.0.0.1:26379 or Fdc1c1d8a5adf48a5fecc229be42810a61eb86033595:x APR 11:57:30.871 * +sentinel Sentinel 127.0.0.1:26379 127.0.0.1 26379 @ MyMaster 192.168.1.52 6379
Two slaves have been monitored
4. Test master switch off off main redis:redis-cli-h 192.168.1.52-p 6379 shutdown
The discovery 54 was switched to master Redis, and 53 was still from Redis, but it belonged to 54.
Syswjdemacbook-air:shell syswj$/watch_redis.sh info54# replicationrole:masterconnected_slaves:1slave0:ip= 192.168.1.53,port=6379,state=online,offset=179,lag=1master_repl_offset:179repl_backlog_active:1repl_backlog_ Size:1048576repl_backlog_first_byte_offset:2repl_backlog_histlen:178syswjdemacbook-air:shell syswj$./watch_ redis.sh info53# Replicationrole:slavemaster_host:192.168.1.54master_port:6379master_link_status:upmaster_last _io_seconds_ago:2master_sync_in_progress:0slave_repl_offset:320slave_priority:100slave_read_only:1connected_ Slaves:0master_repl_offset:0repl_backlog_active:0repl_backlog_size:1048576repl_backlog_first_byte_offset:0repl _backlog_histlen:0syswjdemacbook-air:shell syswj$
To view the master-slave management log:
3670:x Apr 12:06:14.376 # +sdown Master mymaster 192.168.1.52 63793670:x Apr 12:06:14.435 # +odown Master MyMaster 1 92.168.1.52 6379 #quorum 2/23670:x April 12:06:14.435 # +new-epoch 123670:x April Apr 12:06:14.435 # +try-failover Master My Master 192.168.1.52 63793670:x April 12:06:14.444 # +vote-for-leader 96e852d3d56a2dc45b2505e22bd430d1d6c7de13 123670:X Apr 12:06:14.447 # 127.0.0.1:26379 voted for 96e852d3d56a2dc45b2505e22bd430d1d6c7de13 123670:x April 12:06:14.548 # +e Lected-leader Master MyMaster 192.168.1.52 63793670:x April 12:06:14.549 # +failover-state-select-slave Master MyMaster 1 92.168.1.52 63793670:x April 12:06:14.610 # +selected-slave slave 192.168.1.54:6379 192.168.1.54 6379 @ mymaster 192.168. 1.52 63793670:x Apr 12:06:14.610 * +failover-state-send-slaveof-noone slave 192.168.1.54:6379 192.168.1.54 6379 @ mymas ter 192.168.1.52 63793670:x Apr 12:06:14.678 * +failover-state-wait-promotion slave 192.168.1.54:6379 192.168.1.54 637 9 @ MyMaster 192.168.1.52 63793670:x Apr 12:06:15.491 # +promoted-slave slave 192.168.1.54:6379 192.168.1.54 6379 @ mymaster 192.168.1.52 63793670 : X Apr 12:06:15.491 # +failover-state-reconf-slaves Master mymaster 192.168.1.52 63793670:x Apr 12:06:15.548 * +slav e-reconf-sent slave 192.168.1.53:6379 192.168.1.53 6379 @ mymaster 192.168.1.52 63793670:x April Apr 12:06:16.550 * +slave-re Conf-inprog slave 192.168.1.53:6379 192.168.1.53 6379 @ mymaster 192.168.1.52 63793670:x April Apr 12:06:16.550 * +slave-reco Nf-done slave 192.168.1.53:6379 192.168.1.53 6379 @ mymaster 192.168.1.52 63793670:x April Apr 12:06:16.648 # +failover-end m Aster mymaster 192.168.1.52 63793670:x April 12:06:16.648 # +switch-master MyMaster 192.168.1.52 6379 192.168.1.54 637936 70:x Apr 12:06:16.651 * +slave slave 192.168.1.53:6379 192.168.1.53 6379 @ mymaster 192.168.1.54 63793670:x Apr 12:0 6:16.652 * +slave slave 192.168.1.52:6379 192.168.1.52 6379 @ mymaster 192.168.1.54 63793670:x April Apr 12:06:26.683 # +sdow n Slave 192.168.1.52:6379 192.168.1.52 6379 @ mymaster 192.168.1.54 6379 
To test the re-open machine 52: Wait a while. World discovery:
52 became also 54 slave.
Syswjdemacbook-air:shell syswj$/watch_redis.sh info52# replicationrole:slavemaster_host:192.168.1.54master_ Port:6379master_link_status:upmaster_last_io_seconds_ago:2master_sync_in_progress:0slave_repl_offset:8252slave _priority:100slave_read_only:1connected_slaves:0master_repl_offset:0repl_backlog_active:0repl_backlog_size : 1048576repl_backlog_first_byte_offset:0repl_backlog_histlen:0
Sentinel logs are as follows:
3670:x Apr 12:06:16.550 * +slave-reconf-done slave 192.168.1.53:6379 192.168.1.53 6379 @ mymaster 192.168.1.52 63793670 : X Apr 12:06:16.648 # +failover-end Master mymaster 192.168.1.52 63793670:x Apr 12:06:16.648 # +switch-master Mymast Er 192.168.1.52 6379 192.168.1.54 63793670:x April 12:06:16.651 * +slave slave 192.168.1.53:6379 192.168.1.53 6379 @ myma Ster 192.168.1.54 63793670:x Apr 12:06:16.652 * +slave slave 192.168.1.52:6379 192.168.1.52 6379 @ mymaster 192.168.1.5 4 63793670:x Apr 12:06:26.683 # +sdown slave 192.168.1.52:6379 192.168.1.52 6379 @ mymaster 192.168.1.54 63793670:x 15  Apr 12:07:54.741 #-sdown slave 192.168.1.52:6379 192.168.1.52 6379 @ mymaster 192.168.1.54 63793670:x April Apr 12:08:04.734 * +convert-to-slave slave 192.168.1.52:6379 192.168.1.52 6379 @ mymaster 192.168.1.54 6379
5 Bring your own shell script for easy operation
#!/bin/bashset_redis () {    result= ' redis-cli-h 192.168.1.$1-p 6379 set    $ "echo" 192.168.1.$1: $result "}get_ Redis () {   result= ' redis-cli-h 192.168.1.$1-p 6379 get $ '    echo ' 192.168.1.$1: $result '}get_info () {    echo $    redis-cli-h 192.168.1.$1-p 6379 Info Replication}shut_down () {    echo $    redis-cli-h 192.168.1.$1-p 6379 Shu tdown}if [$#-lt 2];then    echo "IP op a B"    exit 0ficase $ in    set)        Set_redis $ $4        ;;    Get)        Get_redis $ $        ;;    Info)        Get_info $        ;;    Shut)        Shut_down $        ;;    *)       echo "Invalid parameter!..."       ;; Esac
Redis_ master-slave configuration and automatic switching