1. 程式人生 > >Redis從入門到放棄系列(九) Sentinel

Redis從入門到放棄系列(九) Sentinel

Redis從入門到放棄系列(九) Sentinel

本文例子基於:5.0.4

Redis Sentinel作為Redis高可用方案,具有監聽,通知,自動故障轉移等功能.這一切都是依賴主備同步的大前提(參考上一節:Redis從入門到放棄系列(八) 主備同步).

  • 監聽: Sentinel會不斷檢查master節點跟replica節點是否正常工作
  • 通知: 當某個節點執行出現問題的時候,能夠通知其他的程序(eg:客戶端)
  • 自動故障轉移: 當master節點down了,Sentinel會啟用故障轉移程序,將replica節點提升為master節點,其他的replica節點重新配置新的master節點,並且告知客戶端需要重新連線的是哪個master地址.

在網際網路應用中,程式如果只是單臺部署的話,都會存在單點問題,那麼作為Redis高可用方案的Sentinel是如何解決這一問題呢?

歡迎關注微信公眾號黑搜丶D(black-search)

啟動方式

  • redis-server sentinel配置檔案 --sentinel
  • redis-sentinel sentinel配置檔案

Sentinel配置

sentinel monitor mymaster 127.0.0.1 6379 2
sentinel down-after-milliseconds mymaster 60000
sentinel failover-timeout mymaster 180000
sentinel parallel-syncs mymaster 1


以上配置為Sentinel最少配置。

  • sentinel monitor <master-group-name> <ip> <port> <quorm> 監聽127.0.0.1地址的6379埠,為其命名為mymaster,當叢集有2個Sentinel節點認為mymaster節點down了才客觀的下線。

其他Sentinel配置

sentinel <option_name> <master_name> <option_value>


  • down-after-milliseconds 以毫秒為單位,當超過該時間沒有心跳,Sentinel則主觀認為該節點已經關閉,只有絕大部分Sentinel判定該節點已經關閉,才會啟動故障轉移(即客觀下線)
  • parallel-syncs 指定了在執行故障轉移時,最多可以有多少個從伺服器同時對新的主伺服器進行同步,這個數字越小,完成故障轉移所需的時間就越長(當故障轉移的時候,每次只允許該值數量的replica節點同步到新節點,那麼如果叢集中有比較多的replica節點,就需要耗時長一些,但是設定比較多的replica又會因為RDB造成replica節點短時間不可用)
  • failover-timeout 故障轉移超時時間
    • 在先前的故障轉移已經由一個給定的Sentinel對同一個主機進行了嘗試之後,重新啟動故障轉移所需的時間是故障轉移超時的兩倍
    • 使用新的replicate節點作為master節點,並且強制使用新master的資料備份作為其他replica節點的資料的超時時間
    • 取消已在進行中但未產生任何配置更改的故障轉移所需的時間(新master節點還沒有同步到其他的replica節點)
    • 正在進行的故障轉移等待所有replica重新配置為新master伺服器副本的最長時間

主觀下線 && 客觀下線

  • 主觀下線: 單個sentinel程式對伺服器做出的下線判斷
  • 客觀下線: 指多於quorm個sentinel程式對伺服器做出的下線判斷.

sentinel程式會對redis節點發送PING命令,如果redis節點沒有正確回覆sentinel的請求的話 or 指定時間內沒有回覆,那麼sentinel程式會認為該redis主觀下線.

有效回覆:

  • +PONG
  • -LOADING
  • -MASTERDOWN

客觀下線條件只適用於master節點,對於其他的replica節點,sentinel在將他們判斷為主觀下線的話即下線. 只有參與了判斷客觀下線的sentinel程式才有可能參與故障轉移操作.

我們在設定sentinel叢集程式的時候,不需要在對應的配置檔案中設定不同節點的sentinel的配置資訊,那麼sentinel是如何知道彼此且傳送訊息的呢?

自動發現sentinel和replica節點

sentinel通過釋出/訂閱功能來發現其他的sentinel程式,這一功能是通過向頻道__sentinel__:hello傳送資訊來實現的。 發現replica節點是通過詢問master節點來獲取所有從伺服器的資訊.

  • 每個sentinel按照2秒一次的頻率向被它監聽的master跟replica節點的__sentinel__:hello頻道傳送一條包含sentinel的資訊的訊息.
  • 每個sentinel都訂閱了被它監聽的頻道,查詢沒有出現的sentinel,將其加入sentinel列表

搭建sentinel叢集

首先要確保已經搭建了master-replica主備

1.copy一份sentinel.conf配置檔案,分別修改為sentinel_26379.conf sentinel_26380.conf sentinel_26381.conf.修改如下內容:

//指定埠
port 26379
//設定後臺啟動
daemonize yes
//設定pidfile
pidfile "/var/run/redis-sentinel_26379.pid"
//設定日誌存放地點,方便檢視問題
logfile "/var/log/redis-sentinel_26379.log"
//設定監聽的master節點
sentinel monitor mymaster 127.0.0.1 6379 2


2.分別執行 redis-sentinel sentinel_26379.conf配置檔案啟動。 啟動sentinel之前需要先準備好redis master-replica主備已經啟動~

相關推薦

Redis入門放棄系列() Sentinel

Redis從入門到放棄系列(九) Sentinel 本文例子基於:5.0.4 Redis Sentinel作為Re

Redis入門放棄系列(十) Cluster

Redis從入門到放棄系列(十) Cluster 本文例子基於:5.0.4 Redis Cluster叢集高可用方

redis入門放棄 -> 簡介&概念

一、redis簡介 Redis是一款開源的、高效能的鍵-值儲存。它常被稱作是一款資料結構伺服器。 當值支援的主要資料型別為:字串(strings)型別,括雜湊(hashes)、列表(lists)、集合(sets)和 有序集合(sorted sets)等資料型別。 同時Redis可以進行持久化(將資料存到

一站式學習Redis 入門到高可用分散式實踐(慕課)第八章 Redis Sentinel

主從複製高可用?           主從複製,主掛掉後需要手工來操作麻煩           寫能力和儲存能力受限 (主從複製只是備份,單節點儲存能力)  #其實分散式後

.NET分布式緩存Redis入門到實戰

ict 類型 社交 純粹 value redis服務器 使用場景 c# 應用 一、課程介紹 今天阿笨給大家帶來一堂NOSQL的課程,本期的主角是Redis。希望大家學完本次分享課程後對redis有一個基本的了解和認識,並且熟悉和掌握 Redis在.NET中的使用。本次

redis入門

合並 描述 .gz 方式 號碼 config 宋體 即將 設定 下載 首先我們要到GitHub(https://github.com/MicrosoftArchive/redis/releases)上下載Source code?(tar.gz) 上傳到Linux上,我的位置

比MySQL快60倍 redis入門到精通視頻教程

redis Mysql 分布式數據庫 Redis是一個開源的使用ANSI C語言編寫、支持網絡、可基於內存亦可持久化的日誌型、Key-Value數據庫,並提供多種語言的API。 學習視頻下載地址:https://pan.baidu.com/s/17NO3pG9hRL-RtU0bwaTylw Red

redis 入門到遺忘

設置 sub del 測試 keys index email lis lpush Key操作 keys * *: 通配任意多個字符 ?: 通配單個字符 []: 通配括號內的某1個字符 exists key 存在返回1,不存在返回0 type key rename oldke

redis 入門到起飛

1. Redis 介紹 1.1 NoSQL 基本概念 為了解決高併發、高可用、高可擴充套件,大資料儲存等一系列問題而產生的資料庫解決方案,就是NoSql。 NoSql,叫非關係型資料庫,它的全名Not only sql。它不能替代關係型資料庫,只能作為關係型資料庫的一個良好補充。 1

Redis 入門到起飛(上)

1. Redis 介紹 1.1 NoSQL 基本概念 為了解決高併發、高可用、高可擴充套件,大資料儲存等一系列問題而產生的資料庫解決方案,就是NoSql。 NoSql,叫非關係型資料庫,它的全名Not only sql。它不能替代關係型資料庫,只能作為關係型資料庫的一個良好補充。

Redis 入門到起飛(下)

5. keys 命令 5.1 常用命令 keys 返回滿足給定pattern 的所有key redis 127.0.0.1:6379> keys mylist* "mylist" "mylist5" "mylist6" "my

一站式學習Redis 入門到高可用分布式實踐(慕課)第五章 Redis持久化的取舍和選擇

rdb idt http png pan height style nbsp 入門 Redis持久化的取舍和選擇 持久化的作用 RDB AOF RDB和AOF的決擇 一站式學習Redis 從入門到高可用分布式實踐(慕課)第五章 R

一站式學習Redis 入門到高可用分散式實踐

10-1 叢集伸縮目錄 10-2 叢集伸縮原理 10-3 擴充套件叢集-1.加入節點 10-4 擴充套件叢集-2.加入叢集 10-5 擴充套件叢集-3.遷移槽和資料 10-6 叢集擴容演示-1 10-7 叢集擴容演示-2 10-8 叢集縮容-說明 10-9 叢集縮容-操作

Redis入門到精通 Redis入門實戰視訊教程 Redis視訊+文件

課程目錄 第1章:Redis 資料結構的用法與用例—完整 第1節:Redis 簡介 課時1-2:培訓須知.doc 課時3:Redis 簡介(上).mp4 課時4:Redis 簡介(下).mp4 課時5:字串鍵(上).mp4 課時6:字串鍵(中).mp4 課時7:

Redis入門到熟練使用之測試哨兵及主從高可用(詳解,第四篇,共五篇)

測試驗證 首先檢視哨兵監控情況 然後嘗試關閉主機 再檢視剩餘2個從機,這裡會自動選舉產生新的主機 然後,我們再次將剛才停止的主機啟動起來,發現啟動後其自動成為從機 停掉master_redis主資料庫後重啟後變成從資料庫。隨機推選。 至此,

Redis入門到高可用,分散式實踐 四(Redis Cluster)

Redis Cluster 呼喚叢集 redis最高可以達到10萬/s,如果業務需要100萬/s呢? 單機器記憶體太小,無法滿足需求 資料分佈 順序分割槽的資料量不可確定性導致傾斜,不支援批量操作 雜湊分佈 節點取

Redis入門到熟練使用之Sentine哨兵(詳解,第三篇,共五篇)

配置Sentinel哨兵 Redis 的 Sentinel 系統用於管理多個 Redis 伺服器(instance), 該系統執行以下三個任務: 監控(Monitoring): Sentinel 會不斷地檢查你的主伺服器和從伺服器是否運作正常。 提醒(Notificat

redis入門到實踐

####一. Redis安裝使用 1.介紹 redis是一個key-value儲存系統。和Memcached類似,它支援儲存的value型別相對更多, 包括string(字串)、list(連結串列)、set(集合)、zset(sorted set--有序集合)和hash(雜湊

Redis入門到熟練使用之主從,持久化配置(詳解,第二篇,共五篇)

Docker下redis的主從、持久化配置 redis是k-v型nosql資料庫,支援字串(string)、列表(list)、集合(set)、雜湊(hash)、有序集合(zset:形如member:score的雜湊集合,其中member為成員,score為成員得分,必須為f

Redis入門到高可用,分散式實踐 二(高階資料結構和持久化)

慢查詢 pipeline 釋出訂閱 bitmap(點陣圖) string型別,最大512mb 注意setbit偏移量,可能有較大耗時 點陣圖要合理使用