八云計算領(lǐng)域?qū)n}式教學(xué)-nosql數(shù)據(jù)庫之redis sentinel哨兵_第1頁
八云計算領(lǐng)域?qū)n}式教學(xué)-nosql數(shù)據(jù)庫之redis sentinel哨兵_第2頁
八云計算領(lǐng)域?qū)n}式教學(xué)-nosql數(shù)據(jù)庫之redis sentinel哨兵_第3頁
八云計算領(lǐng)域?qū)n}式教學(xué)-nosql數(shù)據(jù)庫之redis sentinel哨兵_第4頁
八云計算領(lǐng)域?qū)n}式教學(xué)-nosql數(shù)據(jù)庫之redis sentinel哨兵_第5頁
已閱讀5頁,還剩8頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)

文檔簡介

1、Redis4.0 數(shù)據(jù)庫(三):Redis-sentinel 哨兵企業(yè)級中間件專題之消息隊列與數(shù)據(jù)庫緩存-私人課件,不公開,不,想做好運維工作,人先要學(xué)會勤快;居安而思危,勤記而補拙,方可不斷提高; 別人資料不論你用著再如何爽那也是別人的;自己總結(jié)東西是你自身特有的一種與理念的展現(xiàn);精髓不是看出來的,精髓是記出來的;請在學(xué)習(xí)的過程中養(yǎng)成好的慣;勤于實踐,拋棄教案,勤于動手,整理文檔。一,單實例模式當(dāng)系統(tǒng)中只有一臺redis 運行時,一旦該redis 掛了,會導(dǎo)致整個系統(tǒng)無法運行。二,主從模式由于單臺redis 出現(xiàn)單點故障,就會導(dǎo)致整個系統(tǒng)不可用,所以想到的辦法自然就是備份。當(dāng)一臺redis

2、出現(xiàn)問題了,另一臺redis 可以繼續(xù)提供服務(wù)。三,自動故障轉(zhuǎn)移機制雖然上面redis 做了備份,看上去很完美。但由于redis 目前只支持主從復(fù)份(不支持主主),當(dāng)主redis 掛了,從redis 只能提供讀服務(wù),無法提供寫服務(wù)。所以,還得想辦法,當(dāng)主redis 掛了,讓從redis 升級成為主redis。這就需要自動故障轉(zhuǎn)移,redis sentinel 帶有這個功能,當(dāng)一個主redis 不能提供服務(wù)時,redis sentinel 可以將一個從redis 升級為主redis,并對其他從redis 進行配置,讓他們使用新的主redis 進行備份。Redis-Sentinel 是 Redis

3、的高可用性(HA)解決方案,當(dāng)用 Redis做Master-slave 的高可用方案時,假如master 宕機了,Redis 本身(包括它的很多客戶端)都沒有實現(xiàn)自動進行主備切換,而 Redis-sentinel 本身也是一個獨立運行的進程,它能多個master-slave 集機后能進行自動切換。它的主要功能有以下幾點現(xiàn)master 宕redis 是否按照預(yù)期良好地運行;實時地如果發(fā)現(xiàn)某個redis 節(jié)點運行出現(xiàn)狀況,能夠通知另外一個進程(例如它的客戶端);能夠進行自動切換。當(dāng)一個master 節(jié)點不可用時,能夠出master 的多個 slave(如果有超過一個 slave 的話)中的一個來作

4、為新的master,其他的 slave 節(jié)點會將它所追隨的master 的地址改為被slave 的新地址。為master 的四,redis 的主從部署4.1 環(huán)境描述這里使用三臺服務(wù)器,每臺服務(wù)器上開啟一個redis-server 和redis-sentinel 服務(wù),redis-server 端口為 8000,redis-sentinel 的端口為 6800,修改默認(rèn)端口是安全的第一步。#部署環(huán)境rootredis-master redis-4.0.10# cat /etc/redhat-release CentOS Linux release 7.3.1611 (Core)rootredi

5、s-master redis-4.0.10# uname -r3.10.0-514.el7.x86_641.2.3.4.5.6.7.8.9.#關(guān)閉和 selinuxrootredis-slaveArootredis-slaveA rootredis-slaveA#systemctl stop firewalldsystemctl disable firewalld setenforce 04.2 redis-server 端的部署#三臺服務(wù)器上都進行如下編譯安裝1.2.rootredis-masterconfrootredis-master rootredis-master rootredis

6、-master rootredis-master allrootredis-master rootredis-master nf/rootredis-master/conf/#yum -y install gcc gcc-c+ make automake auto3.4.5.6.#tar xf redis-4.0.10.tar.gz -C /usr/src/cd /usr/src/redis-4.0.10/redis-4.0.10#redis-4.0.10#make MALLOC=jemallocmake PREFIX=/usr/local/redis inst7.8.redis-4.0.10

7、#redis-4.0.10#mkdir -p /usr/local/redis/confcp redis.conf /usr/local/redis/co9.redis-4.0.10#cp sentinel.conf /usr/local/redisredis-server說明redis-sentinel192.168.200.165:8000redis-master192.168.200.164:8000redis-slaveA192.168.200.163:8000redis-slaveB4.3 redis.conf 配置文件修改redis-master 配置文件修改:1.2.3.4.5.

8、port 8000daemonize yes bind 0.0.0.0file /var/run/redis-8000.logfile /var/log/redis/redis-8000.logredis-slave 配置文件修改:1.2.3.4.5.6.port 8000daemonize yes bind 0.0.0.0filelogfile slaveof/var/run/redis-8000./var/log/redis/redis-8000.log 192.168.200.132 8000#比 redis 主多這行4.4 redis-server 的啟動#先啟動 redis-mast

9、er 再啟動兩個從redis-server /usr/local/redis/conf/redis.conf1.2.3.4.5.6.7.#查看 redis-slave 的日志,同步是否成功rootredis-slaveA # tail /var/log/redis/redis-8000.log15348:S15348:Smast27 Jun 11:52:47.401 * DB loaded from disk: 0.000 seconds27 Jun 11:52:47.401 * Before turningo a slave, usingmyarameters to synthesize a

10、 cached master: I may be able to synchronize with the new masterwith just a partial transfer.Ready to accept connectionsConnecting to MASTER 192.168.200.132:88.9.15348:S15348:S0002727JunJun11:52:47.40111:52:47.401*#開始10. 15348:S同步11. 15348:S27Jun11:52:47.401*MASTER SLAVE sync started27Jun11:52:47.40

11、1*blocking connect for SYNC fired the event.12. 15348:S 27Jun11:52:47.402*Master repd to, replication can continue.13. 15348:S 27 Jun11:52:47.402*Trying a partial resynchronization (request 96f402a0df6695a404d5df5d88f2ef111caf33e0:5865).14. 15348:S 27 Jun 11:52:47.402 * Sucith master. #同步成功sful part

12、ial resynchronization w15. 15348:S 27 Jun 11:52:47.402 * MASTER SLAVE sync: Master accepteda Partial Resynchronization.16.17.#通過命令查看主從情況18.rootredis-master # redis-cli -p 8000 info replication# Replicationrole:master #本機是主connected_slaves:2 #兩個從22. slave0:ip=192.168.200.140,port=8000,s23. slave1:ip=

13、192.168.200.139,port=8000,se=online,offset=6498,lag=0e=online,offset=6498,lag=124. master_replid:96f402a0df6695a404d5df5d88f2ef111caf33e025. master_replid2:0000000000000000000000000000000000000000master_repl_offset:6498second_repl_offset:-1repl_backlog_active:1repl_backlog_size:104857630. repl_backl

14、og_byte_offset:131. repl_backlog_histlen:64984.5進行redis 同步測試#redis-master 上執(zhí)行1.2.3.4.5.6.7.8.9.rootredis-masterOK#redis-cli-p8000setaaa 111#redis-slave 上執(zhí)行 rootredis-slaveA 111rootredis-slaveB111#redis-cli-p8000getaaa#redis-cli-p8000getaaa五,redis 的高可用部署(redis-sentinel)(1)修改 sentinel.conf 配置文件#修改配置文件

15、以下行rootredis-master # cat -n /usr/local/redis/conf/sentinel.confsed -n 21p;69p;98p;106p;131p1.2.|3.4.5.6.7.8.216998106131port 26379sentinel monitor mymaster 127.0.0.1 6379 2 sentinel down-after-milliseconds mymaster 30000 sentinel parallel-syncs mymaster 1sentinel failover-timeout mymaster 1800009.

16、#修改成如下內(nèi)容10.rootredis-master # cat -n /usr/local/redis/conf/sentinel.confsed -n 21p;69p;98p;106p;131p|11.12.13.14.15.16.216998106131port 6800sentinel monitor master8000 192.168.200.132 8000 2 sentinel down-after-milliseconds master8000 5000 sentinel parallel-syncs master8000 1sentinel failover-timeou

17、t master8000 1500017.#再在 sentinel.conf 的最后追加以下四句話18.rootlocalhost # tail -4 /usr/local/redis/conf/sentinel.confdaemonize yes#守護進程模式logfile /var/log/redis/sentinel.log21.file /var/run/sentinel.22. protected-mode no#配置文件說明:sentinel monitor master8000 192.168.200.132 8000 2o master8000:的主節(jié)點名字(隨便寫)o 192

18、.168.200.132 8000 :主節(jié)點的IP 和端口2:一共有兩臺Sentinel 發(fā)現(xiàn)有問題就會發(fā)生故障轉(zhuǎn)移sentinel down-after-milliseconds master8000 5000(5 秒)當(dāng)master8000 節(jié)點宕機后多久進行檢查sentinel parallel-syncs master8000 1設(shè)定 sentinel 并發(fā)還是串行,1 代表每次只能master 壓力sentinel failover-timeout master8000 15000(15 秒)表示故障轉(zhuǎn)移的超時時間一個,可以減輕(2)啟動 redis-sentinel#三臺都啟動ro

19、otlocalhost # redis-sentinel /usr/local/redis/conf/sentinel.conf &1.2.3.4.5.6.7.8.#啟動以后,查看 sentinel 信息rootlocalhost # redis-cli -p 6800 info sentinel # Sentinelsentinel_masters:1 #1 個 mastersentinel_tilt:0sentinel_running_scripts:0sentinel_scripts_queue_length:0sentinel_simulate_failure_flags:012. m

20、aster0:name=master8000,sus=ok,address=192.168.200.132:8000,slaves=2,sentinels=3 #2 從 3sentinel(3)進行 redis-master 的宕機測試宕掉redis-master 的redis-server 服務(wù),然后查看 sentinel 日志#停掉 redis-masterrootredis-master # redis-cli -p 8000 shutdown1.2.3.4.5.6.#查看 redis-sentinel 日志rootredis-slaveB # cat /var/log/redis/se

21、ntinel.log16705:X 28 Jun 12:32:11.75632 800016705:X 28 Jun 12:32:11.82832 8000 #quorum 2/216705:X 28 Jun 12:32:11.82816705:X 28 Jun 12:32:11.8288.200.132 8000#+sdownmastermaster8000 192.168.200.17.#+odownmastermaster8000 192.168.200.18.9.#+neoch 3+try-failovermaster master8000 192.1610. 16705:X 28 J

22、un 12:32:11.8294b67fd4faede5791703a 311. 16705:X 28 Jun 12:32:11.831#+vote-for-leader c475ebe6805f41a8cbc8#6c742feab7744f6aa1ff975429ccc7d6e5a3bad1 voted for c475ebe6805f41a8cbc84b67fd4faede5791703a 312. 16705:X 28 Jun 12:32:11.832 # a65cb3bfc9385b5bb91ddcd7c38f9ba2c2169 1b0 voted for c475ebe6805f41

23、a8cbc84b67fd4faede5791703a 313. 16705:X 28 Jun 12:32:11.886 # +elected-leader master master8000 192.168.200.132 800014. 16705:X 28 Jun 12:32:11.886 # +failover-sster8000 192.168.200.132 8000e-select-slave master ma15. 16705:X 28 Jun 12:32:11.9438000 192.168.200.140 8000 16. 16705:X 28 Jun 12:32:11.9

24、43# +selected-slave slave 192.168.200.140:master8000 192.168.200.132 8000* +failover-se-send-slaveof-noone slave 192.168.200.140:8000 192.168.200.140 8000 master8000 192.168.200.132 800017. 16705:X 28 Jun 12:32:12.009 * +failover-s92.168.200.140:8000 192.168.200.140 8000 32 8000e-wait-promotion slav

25、e 1master8000 192.168.200.118. 16705:X 28 Jun 12:32:12.8988000 192.168.200.140 8000 19. 16705:X 28 Jun 12:32:12.898# +promoted-slave slave 192.168.200.140:master8000 192.168.200.132 8000# +failover-se-reconf-slaves master master8000 192.168.200.132 800020. 16705:X39:800021. 16705:X28 Jun 12:32:12.99

26、4 * +slave-reconf-sent slave 192.168.200.1192.168.200.139 8000 master8000 192.168.200.132 800028 Jun 12:32:13.906 * +slave-reconf-inprog slave 192.168.200.139:8000 192.168.200.139 8000 master8000 192.168.200.132 800022. 16705:X39:800023. 16705:X32 800024. 16705:X28 Jun 12:32:13.906 * +slave-reconf-d

27、one slave 192.168.200.1192.168.200.139 8000 master8000 192.168.200.132 800028 Jun 12:32:13.968#-odown master master8000 192.168.200.128 Jun 12:32:13.968#+failover-end master master8000 192.168.200.132 800025. 16705:X 28 Jun 12:32:13.968#+switaster master8000 192.168.200.132 8000 192.168.200.140 8000

28、26. 16705:X 28 Jun 12:32:13.968 * +slave slave 192.168.200.139:8000168.200.139 8000 master8000 192.168.200.140 800027. 16705:X 28 Jun 12:32:13.969 * +slave slave 192.168.200.132:8000168.200.132 8000 master8000 192.168.200.140 800028. 16705:X 28 Jun 12:32:19.025 # +sdown slave 192.168.200.132:8000168

29、.200.132 8000 master8000 192.168.200.140 800029.30.#查看 sentinel 信息31.rootredis-master # redis-cli -p 6800 info sentinel# Sentinelsentinel_masters:1sentinel_tilt:0sentinel_running_scripts:0sentinel_scripts_queue_length:0sentinel_simulate_failure_flags:0192.192.192.38. master0:name=master8000,sus=ok,a

30、ddress=192.168.200.140:8000,slaves=2,sentinels=3 #已經(jīng)切換到 192.168.200.140 為主了39.40.#啟動 redis-master 然后再停掉 192.168.200.140 的 redis-server41.rootredis-slaveB # redis-cli -p 8000 shutdown 42.43.#查看 sentinel 信息44.rootredis-master # redis-cli -p 6800 info sentinel# Sentinelsentinel_masters:1sentinel_tilt:0

31、sentinel_running_scripts:0sentinel_scripts_queue_length:0sentinel_simulate_failure_flags:051. master0:name=master8000,sus=ok,address=192.168.200.132:8000,slaves=2,sentinels=3 #redis-master 恢復(fù)為 192.168.200.132 了六,redis-sentinel 的VIP 漂移假如在redis 上,也建立一個VIP 機制,一旦redis-master 宕機,那么本來在master 上的VIP 就會飄逸到新的

32、master 上。如此一來開發(fā)在連接redis 的時候,即便redis-master 發(fā)生切換,那么開發(fā)也不需要修改代碼了。這里可以使用redis sentinel 的一個參數(shù)cnt-reconfig-script,這個參數(shù)配置執(zhí)行,sentinel 在做failover 的時候會執(zhí)行這個,并且傳遞 6 個參數(shù),其中是新主redis 的IP 地址,可以在這個里做VIP 漂移操作.#在 sentinel.conf 里增加一句話rootlocalhost # sed -n 170,175p /usr/local/redis/conf/sentine l.conf1.2.3.4.5.6.7.# C#

33、NTS RECONFIGURATION SCRIPT# sentinel cnt-reconfig-script sentinel cnt-reconfig-script master8000 /usr/local/redis/notify_master6800.sh#增加漂移路徑8.# When the master changed because of a failover a script can be called in9.10.#寫一個漂移11.rootlocalhost redis# cat /usr/local/redis/notify_master6800.sh12. #!/b

34、in/bash 13.#第六個參數(shù)就是 sentinel 傳入進行來的新 master 的 IP14. MASTER_IP=$615.16. LOCAL_IP=192.168.200.132 #所在服務(wù)器的本地 IP(每個服務(wù)器都不同)17.18. VIP=192.168.200.24419.20. NETMASK=24 21.22.23.24. if 25. 26.27.ERFACE=ens32 $MASTER_IP = $LOCAL_IP ;then/usr/sbin/ip addr add $VIP/$NETMASK dev $ERFACE/usr/sbin/arexit 0-q -c

35、3 -A $VIP -I $ERFACEelse/usr/sbin/ip addr del $VIP/$NETMASK dev $exit 0fiexit 1 33.ERFACE34.#給加 x 權(quán)限35.rootlocalhost redis#36.od +x notify_master6800.sh37.#重新啟動所有的 redis-sentinel 進程38.rootlocalhost # pkill redis-sentinel39.rootlocalhost # redis-sentinel /usr/local/redis/conf/sentinel.c onf40.41.#第一次

36、時手動給 master 添加 VIP42.rootredis-master #43.44.#讓 ip 地址即刻生效45.rootredis-master #46.ipaddr 192.168.200.244/24 dev ens32ar-q -c 3 -A 192.168.200.244 -I ens32接下來進行 ip 飄逸測試#查看 VIP 所在服務(wù)器rootredis-master #1.2.3.ipaddr show ens322:stens32: mtu 1500 qdisc pfifo_fase UP qlen 10004.5.link/ether 00:0c:29:73:91:2

37、9 brd:inet 192.168.200.132/24 brd 192.168.200.255 scope global dynamicens32valid_lft 1711sec preferred_lft 1711secinet 192.168.200.244/24 scope global secondary ens32#VIP 在 1 32 上6.7.8.9.10.11.valid_lft forevinet6 fe80:20c:29 valid_lft forevreferred_lft forevere73:9129/64 scope link referred_lft for

38、ever12.#查看 redis-master 所屬服務(wù)器13.rootredis-master # redis-cli -p 6800 info sentinel# Sentinelsentinel_masters:1sentinel_tilt:0sentinel_running_scripts:0sentinel_scripts_queue_length:019. sentinel_simulate_failure_flags:020. master0:name=master8000,ses=2,sentinels=3 #132 是主21.22.us=ok,address=192.168.200.132:8000,slav23.#停止 132 服務(wù)器的 redis-server 服務(wù)24.rootredis-master # redis-cli -p 8000 shutdown 25.26.#查看 redis-master 的所屬服

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論