好湿?好紧?好多水好爽自慰,久久久噜久噜久久综合,成人做爰A片免费看黄冈,机机对机机30分钟无遮挡

主頁 > 知識庫 > Redis服務之高可用組件sentinel詳解

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

熱門標簽:臺灣電銷 一個地圖標注多少錢 四川穩定外呼系統軟件 400電話辦理的口碑 南京手機外呼系統廠家 廊坊外呼系統在哪買 地圖標注工廠入駐 b2b外呼系統 高碑店市地圖標注app

  前文我們了解了redis的常用數據類型相關命令的使用和說明,回顧請參考https://www.jb51.net/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安裝請參考https://www.jb51.net/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 -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>

  提示:從上面的狀態信息可以看到當前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內容請搜索腳本之家以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持腳本之家!

您可能感興趣的文章:
  • 淺談Redis在微服務架構中的幾種應用場景
  • redis三種高可用方式部署的實現
  • Redis5之后版本的高可用集群搭建的實現
  • 詳解三分鐘快速搭建分布式高可用的Redis集群
  • Redis為什么快如何實現高可用及持久化
  • Redis Sentinel實現高可用配置的詳細步驟
  • 解析高可用Redis服務架構分析與搭建方案

標簽:拉薩 定州 河源 泰州 畢節 伊春 甘南 南寧

巨人網絡通訊聲明:本文標題《Redis服務之高可用組件sentinel詳解》,本文關鍵詞  Redis,服務,之高,可用,組件,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《Redis服務之高可用組件sentinel詳解》相關的同類信息!
  • 本頁收集關于Redis服務之高可用組件sentinel詳解的相關信息資訊供網民參考!
  • 推薦文章
    主站蜘蛛池模板: 让男人吃奶咋这么舒服| 我在卫生间洗澡公把我要了| 欧美另类z0z变态| 国精产品无人区一码二码三| 蜜桃视频www在线观看免费视频| 我被老头摸了一晚| 免费在线日韩| 免费观看暖暖遇见你西瓜| 久久久久久综合对白国产| 国产亚洲AV综合人人澡3454| 波多野结衣人妻性游戏| 99久久久无码| 亚洲精品久久久久牙一区| 免费观看老外特级毛片| 鞠婧祎ai智能人脸造梦| 国产一区亚洲二区三区| 美国豪放女大兵| 大尺度做爰床戏呻吟舌吻床戏片段| 宝贝下面好紧| 三级经典三级日本三级欧美| 欧美精品一区二区三区很污很色的 | 91丨亚洲丨国产熟女??| 国产午夜鲁丝片AV无码蜜臀| 久久嫩草影院免费看夜色| 男人j放进女人j网站免费| 国产精品9999久久久久| 欧美又粗又长又湿又黄的视频 | 巨大巨粗巨长黑人长吊视频| 麻花影视免费下载软件| 女人被狂躁到高潮视频免费网站| 尤物tv在线观看| 男男做受呻吟声不断| japanesesex人妖| 秋霞电影免费理论久久| 亚洲精品h| 人人妻人人澡人人爽电台app| 男男Gay做受XXXⅩ106| 和老师同居的日子| 国产精品久久久久久麻豆一区| 综合色婷婷一区二区亚洲欧美国产 | 91久久久爱一区二区三区|