自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

Redis集群管理工具Redis-sentinel原理分析

運維 系統(tǒng)運維 Redis
Redis作為高性能的key-value存儲,一直在單實例上表現(xiàn)良好,但是長期以來一直缺乏一種官方的高可用方案支持。于是Redis-sentinel應(yīng)運而生,提供了對客戶端透明的高可用支持。本文對Redis-sentinel的原理進(jìn)行了系統(tǒng)的講解。希望對大家有幫助。

Redis-sentinel是Redis實例的監(jiān)控管理、通知和實例失效備援服務(wù),是Redis集群的管理工具。在一般的分布式中心節(jié)點數(shù)據(jù)庫中,Redis-sentinel的作用是中心節(jié)點的工作,監(jiān)控各個其他節(jié)點的工作情況并且進(jìn)行故障恢復(fù),來提高集群的高可用性。

Redis-sentinel是Redis的作者antirez在今年6月份完成的,因為Redis實例在各個大公司的應(yīng)用,每個公司都需要一個Redis集群的管理工具,被迫都自己寫管理工具來管理Redis集群,antirez考慮到社區(qū)的急迫需要,花了幾個星期寫出了Redis-sentinel。

Redis-sentinel的三大功能:監(jiān)測、通知、自動故障恢復(fù)。首先Redis-sentinel要建立一個監(jiān)控的master列表,然后針對master列表的每個master獲取監(jiān)控其的sentinels和slaves供以后故障恢復(fù)使用。

自動發(fā)現(xiàn)sentinel和slave

一個sentinel實例的監(jiān)控master在配置文件中指定,如sentinel A在配置文件中指定管理的master ip:port列表,并且指定連接失敗超時的時間和是否可以故障恢復(fù)等參數(shù)。這樣,sentinel A就建立了監(jiān)控的master列表。

sentinel A作為客戶端建立對其監(jiān)控master 1的pub/sub連接和命令傳輸連接,pub/sub連接的目的是通過消息傳遞來獲取監(jiān)控master 1的所有sentinels,具體方式是訂閱”sentinel:hello”頻道,并這個頻道publish 自己的host信息,這樣,所有監(jiān)控master 1的sentinels都通過訂閱master 1的“sentinel:hello”頻道來獲取其他sentinels的信息。sentinel A就建立了master 1的sentinels列表。 sentinel A還通過間斷的info命令獲取master 1的slaves列表,如果連接超時或者失敗,就會進(jìn)入故障處理的例程。

故障恢復(fù)準(zhǔn)備

Redis-sentinel定義了故障的master兩種狀態(tài),O_DOWN(objectively)和S_DOWN(subobjectively)。當(dāng)sentinel A連接master 1失敗后,sentinel A認(rèn)定master 1為subobjectively狀態(tài),然后sentinel A查看監(jiān)控master 1的sentinels的認(rèn)定情況。因為sentinel之間會建立連接并且不斷的發(fā)起info命令詢問和回應(yīng),因此在sentinel A認(rèn)定master 1 S_DOWN后,sentinel A通過SENTINEL IS-MASTER-DOWN-BY-ADDR命令來不斷獲得其他sentinel的認(rèn)定情況,如果有超過quorum(配置中指定)個sentinel認(rèn)定master 1已經(jīng)DOWN,那么就確定master 1為O_DOWN。然后sentinel A必須有master 1的can failover權(quán)限,這也是配置文件指定的。接著,sentinel A需要得知master 1的leader sentinel,由leader來進(jìn)行master 1的錯誤恢復(fù)。

master 1的leader sentinel由選舉產(chǎn)生,每個監(jiān)控master 1的,并且具有錯誤恢復(fù)權(quán)限的sentinel都需要進(jìn)行一次叫做subjective leader判斷,也就是sentinel自己認(rèn)定的leader,然后sentinel之間通過SENTINEL IS-MASTER-DOWN-BY-ADDR命令交流leader的認(rèn)定情況,然后最終得到一個共識。

然后由這個master 1的leader sentinel來啟動錯誤恢復(fù)例程。

故障處理

sentinel A作為master 1的leader,會選取一個master 1的slave作為新的master。slave的選取是根據(jù)一個判斷DNS情況的優(yōu)先級來得到,優(yōu)先級相同通過runid的排序得到,但目前優(yōu)先級設(shè)定還沒實現(xiàn),所以直接獲取runid排序得到slave 1。

然后發(fā)送命令slaveof no one來取消slave 1的slave狀態(tài)來轉(zhuǎn)換為master。當(dāng)其他sentinel觀察到該slave成為master后,就知道錯誤處理例程啟動了。sentinel A然后發(fā)送給其他slave slaveof new-slave-ip-port 命令,當(dāng)所有slave都配置完后,sentinel A從監(jiān)測的masters列表中刪除故障master,然后通知其他sentinels。

總結(jié)

Redis-sentinel作為一個集群管理工具,基本滿足了要求。但是Redis集群的需求卻仍然存在。Redis集群作為分區(qū)結(jié)果,分區(qū)的配置仍然需要客戶端或者代理協(xié)議實現(xiàn),Redis集群作為一個整體還需要更長的路。Redis-cluster的草案早于出爐,但是實現(xiàn)卻已經(jīng)停留了很久。antriez承諾在Redis 3.0推出Redis-cluster功能。

責(zé)任編輯:黃丹 來源: wzxue.com
相關(guān)推薦

2015-12-29 10:24:19

管理工具集群管理

2025-01-13 08:30:00

開源Redis可視化

2023-06-10 23:09:40

Redis場景內(nèi)存

2011-08-12 10:38:09

MongoDB

2021-04-01 08:50:54

SentinelRedis 集群原理

2020-04-29 09:42:51

Linux 服務(wù)器 工具

2024-04-17 13:14:46

2012-04-09 09:43:49

云計算云管理

2009-04-24 21:13:45

服務(wù)器虛擬化Vmware

2012-12-06 11:31:40

虛擬化

2020-09-30 14:05:22

網(wǎng)絡(luò)管理

2020-10-30 11:18:47

網(wǎng)絡(luò)技術(shù)工具

2024-12-05 08:55:28

Linux服務(wù)管理

2010-05-25 18:36:54

MySQL管理工具

2011-04-13 16:21:22

SQL Server管理

2012-02-22 13:36:43

云計算

2020-03-03 13:37:23

SSH密鑰管理工具開源工具

2021-03-17 10:29:35

systemdLinux管理工具

2022-06-28 16:30:26

管理工具Python

2009-05-21 10:38:51

MySQLphpMyAdminSun
點贊
收藏

51CTO技術(shù)棧公眾號