版權(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 物流配送車輛運輸安全管理
- 物業(yè)管理法律法規(guī)與實務(wù)(標(biāo)準(zhǔn)版)
- 標(biāo)后管理制度
- 辦案安全制度
- 2026年溫州大學(xué)商學(xué)院臨聘工作人員招聘備考題庫及參考答案詳解一套
- 2026年永康市中醫(yī)院兒童康復(fù)治療師招聘備考題庫及參考答案詳解
- 初中語文七下必考名著《駱駝祥子》各章節(jié)重點考察題
- 2026年青海物產(chǎn)爆破技術(shù)服務(wù)有限公司招聘備考題庫完整參考答案詳解
- 2026年某三甲醫(yī)院招聘后勤輔助崗備考題庫及參考答案詳解一套
- 安全警示周培訓(xùn)課件
- 廣東省深圳市龍華區(qū)2024-2025學(xué)年七年級上學(xué)期期末歷史試題(含答案)
- 74粉色花卉背景的“呵護女性心理健康遇見更美的自己”婦女節(jié)女性健康講座模板
- 2026長治日報社工作人員招聘勞務(wù)派遣人員5人備考題庫新版
- 煤礦兼職教師培訓(xùn)課件
- 2025至2030中國組網(wǎng)專線行業(yè)調(diào)研及市場前景預(yù)測評估報告
- 2025年南京科技職業(yè)學(xué)院單招職業(yè)適應(yīng)性考試模擬測試卷附答案
- 湖北省武漢市東湖新技術(shù)開發(fā)區(qū) 2024-2025學(xué)年七年級上學(xué)期期末道德與法治試卷
- 擋土墻施工安全培訓(xùn)課件
- 慢性腎臟?。–KD)患者隨訪管理方案
- 成人學(xué)歷提升項目培訓(xùn)
- 應(yīng)急預(yù)案批復(fù)意見
評論
0/150
提交評論