麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 數據庫 > Redis > 正文

Redis服務之高可用組件sentinel詳解

2020-10-28 21:27:22
字體:
來源:轉載
供稿:網友

  前文我們了解了redis的常用數據類型相關命令的使用和說明,回顧請參考http://www.companysz.com/article/120364.htm 今天我們來聊一下redis的高可用組件sentinel;首先來回顧下redis的主從同步,主從同步最主要的作用是讓master的數據在其他服務器上實時存在副本,起到了備份的效果;對于redis的讀寫來說,主從架構能夠讓讀的請求分散到多個從服務器上,從而降低了單臺redis讀請求的io壓力,同時也提高了redis讀請求的并發能力;通常為了數據的一致性,從服務器一旦成為某一臺redis的slave,那么從服務器上之前有的數據會被清空,然后把master發送過來的數據應用到內存,從而實現和master數據一致;除此之外slave通常會是只讀屬性,也就說slave端只能執行讀操作,寫操作會被拒絕,所以寫請求始終是由master來完成;

那么問題來了,對于這種主從復制架構的環境中,如果master宕機了,master宕機意味著整個系統將不能夠寫數據到redis,很顯然這種情況我們應該及時解決;怎么解決呢?有沒有這樣的一組件幫我們對master做實時的監控,一旦發現master宕機就提升一個slave當選新的master,如果原master還有其他slave,將其他slave都從屬于新的master;除此之外它還應該讓系統在發生切換master時觸發報警通知,讓管理員盡快把壞掉的master修復上線;對,sentinel就有我們上述的這些功能,它能夠監控主從同步集群中的master節點,在master發生宕機后能夠自動故障轉移,將提升一臺slave作為新的master,然后通知管理員;

  Sentinel是一個分布式系統,我們可以在一個架構中運行多個sentinel,這些sentinel進程使用流言協議(gossipprotocols)來接收關于 Master是否下線的信息,并使用投票協議(Agreement Protocols)來決定是否執行自動故障遷移,以及選擇哪個 Slave 作為新的 Master。每個sentinel進程會向其他sentinel進程、master、slave定時發送消息,以確保對方是否”活”著,如果發現對方在指定配置時間(可配置的)內未得到回應,則暫時認為對方已掉線,也就是所謂的”主觀認為宕機” ,英文名稱:Subjective Down,簡稱 SDOWN。有主觀宕機,肯定就有客觀宕機。

當多個sentinel進程中多數的sentinel進程在對 Master 做出 SDOWN 的判斷,并且通過 SENTINEL is-master-down-by-addr 命令互相交流之后,得出的 Master Server 下線判斷,這種方式就是“客觀宕機”,英文名稱是:Objectively Down, 簡稱 ODOWN。通過一定的 vote 算法,從剩下的 slave 從服務器節點中,選一臺提升為 Master 服務器節點,然后自動修改相關配置,并開啟故障轉移(failover)。

  配置使用sentinel

  環境說明

角色 ip地址 端口
master 192.168.0.41 6379
slave01 192.168.0.42 6379
slave02 192.168.0.43 6379
sentinel01 192.168.0.41 26379
sentinel02 192.168.0.42 26379
sentinel03 192.168.0.43 26379

  架構圖

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

  redis主從復制集群搭建

  1、在192.168.0.41/42/43上安裝redis,可以使用yum安裝,也可以使用編譯安裝,redis安裝請參考http://www.companysz.com/article/79096.htm

  2、配置192.168.0.41/42/43上的redis監聽在非本機127.0.0.1上并配置42/43上的redis從屬于192.168.0.41

  master

  slave01

  slave02

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

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

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

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

  配置sentinel,讓其監控master

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

  sentinel配置文件說明

  bind:該指令和redis配置文件中的bind是同樣的用法,用于指定sentinel的監聽地址;默認不指定,監聽本機所有可用地址;

  protected-mode:指定是否開啟保護模式;

  port:用于指定sentinel的監聽端口;默認是26379

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

  pidfile:指定pid文件路徑;

  logfile:指定日志文件路徑;

  dir:指定sentinel的工作路徑;

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

  sentinel auth-pass <master-name> <password>:指定master認證密碼;通常都需要設置密碼,并且master的密碼和slave的密碼應該是一樣;

  sentinel down-after-milliseconds <master-name> <milliseconds>:配置監控到指定的集群的主節點異常狀態持續多久方才將標記為“故障”;

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

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

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

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

  master

  slave01

  slave02

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

  查看sentinel日志

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

  查看sentinel狀態

  提示:它提示我們開啟了保護模式;

  關閉保護模式

  重啟sentinel,再次查看sentinel狀態

[root@master ~]# systemctl restart redis-sentinel.service[root@master ~]# ss -tnlState 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# Sentinelsentinel_masters:1sentinel_tilt:0sentinel_running_scripts:0sentinel_scripts_queue_length:0sentinel_simulate_failure_flags:0master0:name=mymaster,status=ok,address=192.168.0.41:6379,slaves=2,sentinels=3192.168.0.41:26379> info clients# Clientsconnected_clients:3client_longest_output_list:0client_biggest_input_buf:0blocked_clients:0192.168.0.41:26379> CLIENT LISTid=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=pingid=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=publishid=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=client192.168.0.41:26379>

  提示:從上面的狀態信息可以看到當前sentinel監控的master是出于正常ok狀態,有兩個slave和3個sentinel;對于192.168.0.41:26379目前有3個客戶端連接,二個是sentinel,一個本機;到此3臺sentinel搭建啟動完成;

  驗證:把master宕機,看看sentinel是否將在兩個從節點選舉一個為新master?是否將另外一個slave重新指向新master?

  在slave01上查看主從同步信息

  提示:第一次查看只是告訴我們master宕機了,第二次查看就告訴我們當前節點為master,并且擁有一個slave節點,這說明已經完成了故障轉移,slave01已經被提升為新的master了;

  在192.168.0.43上查看主從信息,看看是否指向新的master?

  提示:在slave02上看主從同步信息,可以看到slave02已經從屬新master了;

  查看故障轉移時 sentinel日志

  提示:從上面的日志信息可以了解到,在從sdown到odown后,就會觸發vote算法開始選舉leader;然后將原master降級為slave,然后將選舉出來的leader原salve屬性去除(slaveof no one);然后提升新master,然后將剩下的slave重新配置新master為主;最后是切換master,開始新的監控;

  查看故障 轉移后的 redis 配置文件

  提示:故障轉移后 redis.conf 中的 slaveof 行的 master IP 會被修改,sentinel.conf 中的 sentinel monitor IP 會被修改。同時在sentinel配置文件的末尾還會有添加known-slave和known-sentinel等信息;

  修復舊master 讓其重新上線

  提示:把原master啟動后,它自動就成為了新主的slave;這主要是因為sentinel在故障轉移時把其配置文件中的slaveof 修改成新的master地址了;

  在新master上查看主從同步信息

  提示:在沒有恢復原master時,在新master上查看主從同步信息,只能看到一個salve,啟動原master后,在看就有兩個slave是在線;

總結

到此這篇關于Redis服務之高可用組件sentinel的文章就介紹到這了,更多相關Redis服務之高可用組件sentinel內容請搜索武林網以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持武林網!

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 欧美日韩高清一区 | 免费午夜视频在线观看 | 91九色视频 | 成品片a免人视频 | 最新黄色电影网站 | 7777欧美 | 久久精品2019中文字幕 | 国产做爰全免费的视频黑人 | 免费一级毛片网站 | 亚洲国产成人一区 | 国产成人高清在线观看 | 免费观看国产视频 | 日韩精品久久久久久久电影99爱 | 一级免费在线视频 | 在线看一区二区三区 | 国产一区影院 | 久久国产乱子伦精品 | 99精品国产一区二区三区 | 一级网站片 | 在线成人免费网站 | 天天操天天碰 | 久久久久91视频 | 国产精品视频导航 | 一级成人黄色片 | 国产在线精品一区二区三区 | 久久久亚洲欧美综合 | 99精品视频免费看 | 黄色大片免费网站 | 久久国产亚洲精品 | 成人毛片视频在线播放 | 特级西西444www大精品视频免费看 | 久久999精品久久久 国产噜噜噜噜久久久久久久久 | 久久亚洲线观看视频 | 经典三级在线视频 | 女18一级大黄毛片免费女人 | 日日做夜夜操 | 视频一区二区三区视频 | 亚洲国产精品久久久久 | 男女羞羞视频在线观看免费 | 欧美不卡 | 黄色特级片黄色特级片 |