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偏移量,可能有較大耗時 點陣圖要合理使用