Redis HA

部署如下圖


可以分為 Master-Slave Cluster 和 Sentinel HA Solution 兩個部分
??
通常會將其中一個 Sentinel 節(jié)點(diǎn)和一個 Redis 節(jié)點(diǎn)部署在一臺機(jī)上

Master-Slave Cluster
  1. 配置
    ?master 不需要特殊配置
    ?slave 需要在配置文件里添加一項(xiàng)
    ????slaveof <Master IP> <Port>
    ?所有節(jié)點(diǎn)添加以下配置
    ????min-slaves-to-write 1??# 至少要有 1 個健康的 slave 才允許寫數(shù)據(jù),默認(rèn)是 0
    ?讀寫分離,默認(rèn) slave 為只讀奢讨,寫操作要通過 master
  2. 數(shù)據(jù)同步
    ?(1). 配置文件有 slaveof 命令的節(jié)點(diǎn)啟動為 slave
    ?(2). Slave 檢查是否存有 master id
    ?(3). 沒有則向 master 發(fā)送 PSYNC ? -1 做全量復(fù)制庞瘸,有則發(fā)送 PSYNC id offset 做增量復(fù)制
    ?(4). Master 收到 PSYNC 后惜论,將全量或增量寫命令傳給 slave
    ?(5). Slave 更新數(shù)據(jù)
    ?(6). 此后 master 每次執(zhí)行寫命令许赃,都會將命令發(fā)給 slave,slave 收到后更新數(shù)據(jù)
  3. 由于數(shù)據(jù)復(fù)制是異步的来涨,只保證最終一致性图焰,不保證強(qiáng)一致性,強(qiáng)一致性需讀寫都在 master

Sentinel HA
  1. Master 不會自動切換蹦掐,Sentinel 監(jiān)控 Redis 集群技羔,master 故障后從 slave 中選舉新 master
  2. Sentinel 同樣會有單點(diǎn)故障,所以需要 Sentinel 集群
  3. 配置 sentinel.conf
daemonize  yes

# master-name 自定義卧抗,2 個 sentinel 認(rèn)為 master 死了才認(rèn)為該 master 不可用
sentinel  monitor  master-name  <Master IP>  <Master Port>  2

# 30 秒內(nèi)沒返回心跳就被認(rèn)為 master 死了
sentinel  down-after-milliseconds  master-name  30000

# 切換的 timeout 時間
sentinel  failover-timeout  master-name  180000

# 切換時藤滥,可以有多少個 slave 同時對新的 master 進(jìn)行同步
sentinel  parallel-syncs  master-name  1
  1. 監(jiān)控
    ?(1). Sentinel 通過配置文件發(fā)現(xiàn) master,向 master 發(fā)送 info 獲取 master 下的所有 slave
    ?(2). Sentinel 向 redis 發(fā)送 hello 信息(每秒一次)社裆,告知自己的 IP拙绊,端口,id 等信息
    ?(3). Sentinel 通過 redis 訂閱功能發(fā)現(xiàn)其他 sentinel 的 hello 信息泳秀,并建立連接
    ?(4). Sentinel 通過 ping 檢查 redis 狀態(tài)标沪,一定時間內(nèi)沒回復(fù)就被判為下線
    ?(5). 當(dāng)多數(shù) sentinel 都認(rèn)為 master 下線后開始主從切換,選舉新的 master
    ?(6). 向當(dāng)選的 slave 發(fā)送 slaveof no one 命令使其成為新的 master
    ?(7). 向其他 redis 發(fā)送 slaveof new-master-IP 命令嗜傅,與新的 master 同步

  2. 客戶端通過 Sentinel 獲取 redis 集群的信息

from redis.sentinel import Sentinel

sentinel = Sentinel([('sentinel ip 1', 26379), ('sentinel ip 2', 26379), ('sentinel ip 3', 26379)], socket_timeout=0.5)

master = sentinel.master_for('master-name', socket_timeout=0.5, db=15)
master.set(key, value)

slave = sentinel.slave_for('master-name', socket_timeout=0.5, db=15)
value = slave.get(key)

masterIP, masterPort = sentinel.discover_master('master-name')
slaveList = sentinel.discover_slaves('master-name')    # e.g. [(slave-1 IP, slave-1 Port), (slave-2 IP, slave-2 Port)]




最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末金句,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子吕嘀,更是在濱河造成了極大的恐慌违寞,老刑警劉巖,帶你破解...
    沈念sama閱讀 212,383評論 6 493
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件偶房,死亡現(xiàn)場離奇詭異趁曼,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)棕洋,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,522評論 3 385
  • 文/潘曉璐 我一進(jìn)店門挡闰,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人掰盘,你說我怎么就攤上這事摄悯。” “怎么了庆杜?”我有些...
    開封第一講書人閱讀 157,852評論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長碟摆。 經(jīng)常有香客問我垛吗,道長观蜗,這世上最難降的妖魔是什么合住? 我笑而不...
    開封第一講書人閱讀 56,621評論 1 284
  • 正文 為了忘掉前任逼泣,我火速辦了婚禮,結(jié)果婚禮上碌宴,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好伙菜,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,741評論 6 386
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著命迈,像睡著了一般贩绕。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上壶愤,一...
    開封第一講書人閱讀 49,929評論 1 290
  • 那天淑倾,我揣著相機(jī)與錄音,去河邊找鬼征椒。 笑死娇哆,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的勃救。 我是一名探鬼主播碍讨,決...
    沈念sama閱讀 39,076評論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼蒙秒!你這毒婦竟也來了勃黍?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,803評論 0 268
  • 序言:老撾萬榮一對情侶失蹤税肪,失蹤者是張志新(化名)和其女友劉穎溉躲,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體益兄,經(jīng)...
    沈念sama閱讀 44,265評論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡锻梳,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,582評論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了净捅。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片疑枯。...
    茶點(diǎn)故事閱讀 38,716評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖蛔六,靈堂內(nèi)的尸體忽然破棺而出荆永,到底是詐尸還是另有隱情,我是刑警寧澤国章,帶...
    沈念sama閱讀 34,395評論 4 333
  • 正文 年R本政府宣布具钥,位于F島的核電站,受9級特大地震影響液兽,放射性物質(zhì)發(fā)生泄漏骂删。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 40,039評論 3 316
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望宁玫。 院中可真熱鬧粗恢,春花似錦、人聲如沸欧瘪。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,798評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽佛掖。三九已至妖碉,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間苦囱,已是汗流浹背嗅绸。 一陣腳步聲響...
    開封第一講書人閱讀 32,027評論 1 266
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留撕彤,地道東北人鱼鸠。 一個月前我還...
    沈念sama閱讀 46,488評論 2 361
  • 正文 我出身青樓,卻偏偏與公主長得像羹铅,于是被迫代替她去往敵國和親蚀狰。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,612評論 2 350

推薦閱讀更多精彩內(nèi)容

  • 故障轉(zhuǎn)移 接著上章構(gòu)建的sentinel網(wǎng)絡(luò)構(gòu)建后分析sentinel的故障轉(zhuǎn)移职员。sentinel本身做為redi...
    ben1988閱讀 3,357評論 1 0
  • 標(biāo)簽: redis 緩存 主從 哨兵 集群 本文簡單的介紹redis三種模式在linux的安裝部署和數(shù)據(jù)存儲的總結(jié)...
    luhanlin閱讀 4,318評論 0 5
  • 本篇就一下方面展開分析 如何使用主從復(fù)制麻蹋? 主從復(fù)制的原理(重點(diǎn)是全量復(fù)制和部分復(fù)制、以及心跳機(jī)制) 實(shí)際應(yīng)用中需...
    lucode閱讀 989評論 0 5
  • 1. Redis Sentinel 簡介 redis 的主從復(fù)制模式下焊切,一旦主節(jié)點(diǎn)由于故障不能提供服務(wù)扮授,需要人工將...
    CoderJed閱讀 2,771評論 0 11
  • 本文是對Redis的集群部署模式一個學(xué)習(xí)總結(jié),共包括如下章節(jié)內(nèi)容: 概述 主從集群模式 “哨兵”集群模式 Clus...
    我是老薛閱讀 936評論 0 4