Redis_ master-slave configuration and automatic switching

Source: Internet
Author: User

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

Contact Us

The content source of this page is from Internet, which doesn't represent Alibaba Cloud's opinion; products and services mentioned on that page don't have any relationship with Alibaba Cloud. If the content of the page makes you feel confusing, please write us an email, we will handle the problem within 5 days after receiving your email.

If you find any instances of plagiarism from the community, please send an email to: info-contact@alibabacloud.com and provide relevant evidence. A staff member will contact you within 5 working days.

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.