欧美一区二区三区老妇人-欧美做爰猛烈大尺度电-99久久夜色精品国产亚洲a-亚洲福利视频一区二区

如何使用Redis中的高可用組件sentinel-創(chuàng)新互聯(lián)

這篇文章主要講解了如何使用Redis中的高可用組件sentinel,內(nèi)容清晰明了,對此有興趣的小伙伴可以學(xué)習(xí)一下,相信大家閱讀完之后會有幫助。

成都創(chuàng)新互聯(lián)公司提供成都網(wǎng)站制作、成都做網(wǎng)站、網(wǎng)頁設(shè)計,品牌網(wǎng)站建設(shè)1元廣告等致力于企業(yè)網(wǎng)站建設(shè)與公司網(wǎng)站制作,十余年的網(wǎng)站開發(fā)和建站經(jīng)驗,助力企業(yè)信息化建設(shè),成功案例突破上1000+,是您實現(xiàn)網(wǎng)站建設(shè)的好選擇.

  今天我們來聊一下redis的高可用組件sentinel;首先來回顧下redis的主從同步,主從同步最主要的作用是讓master的數(shù)據(jù)在其他服務(wù)器上實時存在副本,起到了備份的效果;對于redis的讀寫來說,主從架構(gòu)能夠讓讀的請求分散到多個從服務(wù)器上,從而降低了單臺redis讀請求的io壓力,同時也提高了redis讀請求的并發(fā)能力;通常為了數(shù)據(jù)的一致性,從服務(wù)器一旦成為某一臺redis的slave,那么從服務(wù)器上之前有的數(shù)據(jù)會被清空,然后把master發(fā)送過來的數(shù)據(jù)應(yīng)用到內(nèi)存,從而實現(xiàn)和master數(shù)據(jù)一致;除此之外slave通常會是只讀屬性,也就說slave端只能執(zhí)行讀操作,寫操作會被拒絕,所以寫請求始終是由master來完成;那么問題來了,對于這種主從復(fù)制架構(gòu)的環(huán)境中,如果master宕機(jī)了,master宕機(jī)意味著整個系統(tǒng)將不能夠?qū)憯?shù)據(jù)到redis,很顯然這種情況我們應(yīng)該及時解決;怎么解決呢?有沒有這樣的一組件幫我們對master做實時的監(jiān)控,一旦發(fā)現(xiàn)master宕機(jī)就提升一個slave當(dāng)選新的master,如果原master還有其他slave,將其他slave都從屬于新的master;除此之外它還應(yīng)該讓系統(tǒng)在發(fā)生切換master時觸發(fā)報警通知,讓管理員盡快把壞掉的master修復(fù)上線;對,sentinel就有我們上述的這些功能,它能夠監(jiān)控主從同步集群中的master節(jié)點,在master發(fā)生宕機(jī)后能夠自動故障轉(zhuǎn)移,將提升一臺slave作為新的master,然后通知管理員;

  Sentinel是一個分布式系統(tǒng),我們可以在一個架構(gòu)中運行多個sentinel,這些sentinel進(jìn)程使用流言協(xié)議(gossipprotocols)來接收關(guān)于 Master是否下線的信息,并使用投票協(xié)議(Agreement Protocols)來決定是否執(zhí)行自動故障遷移,以及選擇哪個 Slave 作為新的 Master。每個sentinel進(jìn)程會向其他sentinel進(jìn)程、master、slave定時發(fā)送消息,以確保對方是否”活”著,如果發(fā)現(xiàn)對方在指定配置時間(可配置的)內(nèi)未得到回應(yīng),則暫時認(rèn)為對方已掉線,也就是所謂的”主觀認(rèn)為宕機(jī)” ,英文名稱:Subjective Down,簡稱 SDOWN。有主觀宕機(jī),肯定就有客觀宕機(jī)。當(dāng)多個sentinel進(jìn)程中多數(shù)的sentinel進(jìn)程在對 Master 做出 SDOWN 的判斷,并且通過 SENTINEL is-master-down-by-addr 命令互相交流之后,得出的 Master Server 下線判斷,這種方式就是“客觀宕機(jī)”,英文名稱是:Objectively Down, 簡稱 ODOWN。通過一定的 vote 算法,從剩下的 slave 從服務(wù)器節(jié)點中,選一臺提升為 Master 服務(wù)器節(jié)點,然后自動修改相關(guān)配置,并開啟故障轉(zhuǎn)移(failover)。

  配置使用sentinel

  環(huán)境說明

角色ip地址端口
master192.168.0.416379
slave01192.168.0.426379
slave02192.168.0.436379
sentinel01192.168.0.4126379
sentinel02192.168.0.4226379
sentinel03192.168.0.4326379

  架構(gòu)圖

如何使用Redis中的高可用組件sentinel

  提示:從上面的架構(gòu)圖可以知道,首先我們必須要有一個主從架構(gòu)的集群,然后在部署sentinel 來對主從同步集群做監(jiān)控;

  redis主從復(fù)制集群搭建

  1、在192.168.0.41/42/43上安裝redis,可以使用yum安裝,也可以使用編譯安裝,redis安裝請參考https://www.cnblogs.com/qiuhom-1874/p/13378138.html;

  2、配置192.168.0.41/42/43上的redis監(jiān)聽在非本機(jī)127.0.0.1上并配置42/43上的redis從屬于192.168.0.41

  master

如何使用Redis中的高可用組件sentinel

  slave01

如何使用Redis中的高可用組件sentinel

  slave02

如何使用Redis中的高可用組件sentinel

  提示:redis支持在線修改配置,保存配置到配置文件;SLAVEOF 指令用于指定redismaster的ip地址和端口,表示把該redis配置成對應(yīng)master的slave角色;CONFIG REWRITE是把我們的配置保存到配置文件;

  在master上查看是否有兩個從節(jié)點連接到master

如何使用Redis中的高可用組件sentinel

  驗證:在master上寫數(shù)據(jù),看看是否能夠及時同步到兩個slave上?

如何使用Redis中的高可用組件sentinel

如何使用Redis中的高可用組件sentinel

如何使用Redis中的高可用組件sentinel

  提示:可以看到在主庫上寫數(shù)據(jù),從庫上能夠及時的同步主庫上的數(shù)據(jù);到此redis的主從集群就搭建完畢了;

  配置sentinel,讓其監(jiān)控master

如何使用Redis中的高可用組件sentinel

  提示:三個sentinel的配置都是一樣的,這里需要明確指定監(jiān)控主從同步集群的master的ip地址和端口,以及有效法定票數(shù),有效法定票數(shù)指的是至少有多少個sentinel主觀認(rèn)為master down了,然后才觸發(fā)選舉新master操作;通常在這種流言協(xié)議中,一般都是大于集群半數(shù),如果是3臺sentinel,至少要2臺主觀認(rèn)為master宕機(jī),才開始觸發(fā)選舉新master;如果是5臺,那至少要3臺;如果master配置的有認(rèn)證密碼,我們還需要在sentinel中指定認(rèn)證密碼;

  sentinel配置文件說明

  bind:該指令和redis配置文件中的bind是同樣的用法,用于指定sentinel的監(jiān)聽地址;默認(rèn)不指定,監(jiān)聽本機(jī)所有可用地址;

  protected-mode:指定是否開啟保護(hù)模式;

  port:用于指定sentinel的監(jiān)聽端口;默認(rèn)是26379

  daemonize:用于指定sentinel是否運行為守護(hù)進(jìn)程,yes表示運行為后臺守護(hù)進(jìn)程;no表示不運行為守護(hù)進(jìn)程,直接在前臺運行;

  pidfile:指定pid文件路徑;

  logfile:指定日志文件路徑;

  dir:指定sentinel的工作路徑;

  sentinel monitor <master-name> <ip> <redis-port> <quorum>:用于指定監(jiān)控master節(jié)點的ip地址和端口以及有效法定票數(shù);其中<master-name>是給監(jiān)控的master一個名稱,可以隨便寫,起標(biāo)識的作用;<quorum>表示sentinel集群的quorum機(jī)制,即至少有quorum個sentinel節(jié)點同時判定主節(jié)點故障時,才認(rèn)為其真的故障;

  sentinel auth-pass <master-name> <password>:指定master認(rèn)證密碼;通常都需要設(shè)置密碼,并且master的密碼和slave的密碼應(yīng)該是一樣;

  sentinel down-after-milliseconds <master-name> <milliseconds>:配置監(jiān)控到指定的集群的主節(jié)點異常狀態(tài)持續(xù)多久方才將標(biāo)記為“故障”;

  sentinel parallel-syncs <master-name> <numslaves>:指在failover過程中,能夠被sentinel并行配置的從節(jié)點的數(shù)量;

  sentinel failover-timeout <master-name> <milliseconds>:sentinel必須在此指定的時長內(nèi)完成故障轉(zhuǎn)移操作,否則,將視為故障轉(zhuǎn)移操作失敗;

  sentinel notification-script <master-name> <script-path>:通知腳本,此腳本被自動傳遞多個參數(shù);

  了解了sentinel的配置文件,接下我們把3臺sentinel都啟動起來

  master

如何使用Redis中的高可用組件sentinel

  slave01

如何使用Redis中的高可用組件sentinel

  slave02

如何使用Redis中的高可用組件sentinel

  提示:從上面的信息可以看到3個sentinel都監(jiān)控master的ip地址和端口,其實他們3個的配置文件都是一樣的;

  查看sentinel日志

如何使用Redis中的高可用組件sentinel

  提示:從上面的日志信息可以了解到sentinel監(jiān)控的master是192.168.0.41:6379;并且有兩個slave分別是192.168.0.42:6379和192.168.0.43:6379;

  查看sentinel狀態(tài)

如何使用Redis中的高可用組件sentinel

  提示:它提示我們開啟了保護(hù)模式;

  關(guān)閉保護(hù)模式

如何使用Redis中的高可用組件sentinel

  重啟sentinel,再次查看sentinel狀態(tài)

[root@master ~]# systemctl restart redis-sentinel.service
[root@master ~]# ss -tnl
State  Recv-Q Send-Q  Local Address:Port      Peer Address:Port    
LISTEN  0  511      *:26379         *:*     
LISTEN  0  511      *:6379         *:*     
LISTEN  0  128      *:22         *:*     
LISTEN  0  100    127.0.0.1:25         *:*     
LISTEN  0  511      :::26379        :::*     
LISTEN  0  128      :::22         :::*     
LISTEN  0  100      ::1:25         :::*     
[root@master ~]# redis-cli -h 192.168.0.41 -p 26379  
192.168.0.41:26379> info sentinel
# Sentinel
sentinel_masters:1
sentinel_tilt:0
sentinel_running_scripts:0
sentinel_scripts_queue_length:0
sentinel_simulate_failure_flags:0
master0:name=mymaster,status=ok,address=192.168.0.41:6379,slaves=2,sentinels=3
192.168.0.41:26379> info clients
# Clients
connected_clients:3
client_longest_output_list:0
client_biggest_input_buf:0
blocked_clients:0
192.168.0.41:26379> CLIENT LIST
id=2 addr=192.168.0.42:59048 fd=14 name=sentinel-f60b324b-cmd age=38 idle=0 flags=N db=0 sub=0 psub=0 multi=-1 qbuf=0 qbuf-free=0 obl=0 oll=0 omem=0 events=r cmd=ping
id=3 addr=192.168.0.43:37480 fd=15 name=sentinel-eada229c-cmd age=38 idle=1 flags=N db=0 sub=0 psub=0 multi=-1 qbuf=0 qbuf-free=0 obl=0 oll=0 omem=0 events=r cmd=publish
id=4 addr=192.168.0.41:36706 fd=16 name= age=32 idle=0 flags=N db=0 sub=0 psub=0 multi=-1 qbuf=0 qbuf-free=32768 obl=0 oll=0 omem=0 events=r cmd=client
192.168.0.41:26379>

分享名稱:如何使用Redis中的高可用組件sentinel-創(chuàng)新互聯(lián)
文章網(wǎng)址:http://www.chinadenli.net/article0/djdooo.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供ChatGPTApp開發(fā)品牌網(wǎng)站建設(shè)標(biāo)簽優(yōu)化外貿(mào)網(wǎng)站建設(shè)Google

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

成都定制網(wǎng)站網(wǎng)頁設(shè)計