在Redis-Sentinel的client-reconfig-script指令碼中設定VIP

來源:互聯網
上載者:User

標籤:redis   sentinel   vip   

在Redis-Sentinel的client-reconfig-script指令碼中設定VIP

當使用Redis-Sentinel做冗餘時,如何以不同方式使用VIP,我認為使用client-reconfig-script指令碼是一種可行方法,讓我們試試。

環境
CentOS 6.5 x86_64redis-2.8.9-1.el6.remi.x86_64

三台機器構成一個可用的Redis叢集。
連接埠預設6379,在這三台Redis中,分別安裝redis-sentinel。

redis1 192.168.0.1/24redis2 192.168.0.2/24redis3 192.168.0.3/24VIP 192.168.0.4/24
Redis,Redis-Sentinel 安裝

使用yum安裝remi, redis 2.8。
設定Reids1作為Master,複製到其他Slave。

yum install --enablerepo=epel,remi redis -ysed -i "s|bind 127.0.0.1|bind 0.0.0.0|g" /etc/redis.confservice redis startchkconfig redis on

設定Redis2, Redis3作為Slave。

redis-cli127.0.0.1:6379> SLAVEOF 192.168.0.1 6379
VIP設定指令碼

這個是在failover時執行的指令碼。
如下所示的參數會傳遞給指令碼client-reconfig-script。

# The following arguments are passed to the script:## <master-name> <role> <state> <from-ip> <from-port> <to-ip> <to-port>

第6個增加VIP,將成為一個Master,其它的則刪除VIP。在failover時,僅僅使用ip命令可能會產生arp問題,因此使用arping命令來拋出GRAP。在使用ip、arping命令時需要root許可權,這裡使用sudo來執行命令。

vim /var/lib/redis/failover.shchmod 755 /var/lib/redis/failover.shchown redis: /var/lib/redis/failover.shecho -e "redis\tALL=(ALL)\tNOPASSWD:/sbin/ip,NOPASSWD:/sbin/arping" > /etc/sudoers.d/redissed -i "s|Defaults.*requiretty|#Defaults\trequiretty|" /etc/sudoerschmod 440 /etc/sudoers.d/redis
#!/bin/bashMASTER_IP=${6}MY_IP=‘192.168.0.1‘   # 每個Server本身的IPVIP=‘192.168.0.4‘     # VIPNETMASK=‘24‘          # NetmaskINTERFACE=‘eth0‘      # 介面if [ ${MASTER_IP} = ${MY_IP} ]; then        sudo /sbin/ip addr add ${VIP}/${NETMASK} dev ${INTERFACE}        sudo /sbin/arping -q -c 3 -A ${VIP} -I ${INTERFACE}        exit 0else        sudo /sbin/ip addr del ${VIP}/${NETMASK} dev ${INTERFACE}        exit 0fiexit 1
Redis-Sentinel設定

開始設定redis-sentonel。
你只需在第一次手工設定VIP。

vim /etc/redis-sentinel.confservice redis-sentinel startchkconfig redis-sentinel onip addr add 192.168.0.4/24 dev eth0
# sentinel.confport 26379logfile /var/log/redis/sentinel.logsentinel monitor mymaster 192.168.0.1 6379 2sentinel down-after-milliseconds mymaster 3000sentinel parallel-syncs mymaster 1sentinel failover-timeout mymaster 60000sentinel client-reconfig-script mymaster /var/lib/redis/failover.sh
結論

之後你可以嘗試kill master而不是宕機來測試failover,我認為這是個比較好且容易實現的方法。
sentinel down-after-milliseconds mymaster 3000
大約在3秒左右會檢測到redis的宕機。在更惡劣的環境,可以嘗試減小這個值。

原文:http://blog.youyo.info/blog/2014/05/24/redis-cluster/
b.com/benweet/stackedit

在Redis-Sentinel的client-reconfig-script指令碼中設定VIP

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

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.