redis哨兵程序

2021-10-05 06:57:51 字數 2504 閱讀 5577

1 哨兵

哨兵,sentinel,實現管理,監聽功能的特殊redis程序.對主從結構實現的管理監聽.

2 哨兵結構

對於乙個主從結構已經搭建完成的集群(主從結構中沒有分布式,只有乙個資料分片,多個主從才能形成分布式),哨兵是額外的程序實現監聽管理.

哨兵啟動時先連線主節點

呼叫info命令獲取詳細資訊,從中拿到了從節點資訊,從而在哨兵管理list中記錄所有節點資訊

每個1-3秒(預設1秒)給管理的所有主從節點傳送心跳檢測,從而判斷該節點是存活還是宕機

對於宕機的處理

從節點宕機,哨兵只是做記錄

主節點宕機,發起投票選舉,在從節點中選舉乙個新的節點作為主節點繼續提供功能(主從替換,故障轉移)

外界客戶端只要通過連線哨兵,就可以知道當前資料分片中誰才是正在提供服務的master

4 哨兵集群啟動執行

伺服器中配置了3個哨兵監聽6382 6383 6384的乙個一主二從的redis集群

redis根目錄直接執行shell指令碼

這是三個哨兵程序,同時監聽乙個主從結構,主從結構的名稱 mymaster

初始化結構 6382是主節點master 6383 6384掛接的從節點.可以開啟乙個哨兵的程序日誌

5觀察日誌,理解原理

動態檢視日誌的尾部資訊tail

#tail -f /tmp/sentinel26379.log

啟動高可用集群,發現主節點,同時獲取從節點資訊記錄,其他2個哨兵也被發現.

測試從節點宕機

從節點宕機,哨兵通過心跳超時沒有相應判斷宕機,記錄從節點宕機訊息

測試主節點宕機

應該由哨兵來實現故障轉移和主從替換.

首先有3個哨兵中乙個哨兵發現死機主節點,發起投票,只要投票過半判斷主節點確實宕機.

發起投票選舉,從主節點的從節點當中選舉乙個新的master頂替原來的主節點

6382宕機,6383宕機狀態,只能選舉6384作為新的主節點

還要繼續執行邏輯,將6382 和6383記錄為6384的從節點

哨兵擁有主從結構的所有決定權,擁有主從結構的所有詳細資訊.

6 哨兵集群分布式理論結構

7 使用**連線哨兵集群實現客戶端**高可用

通過jedis連線哨兵集群,當主節點宕機之後,依然可以實現增刪查改的操作.

//連線哨兵,實現對乙個高可用redis集群操作的功能

@test

public void test05(){

//**將不再直接連線任意乙個redis 6382 6383 6384 需要連線哨兵

//收集哨兵連線資訊 26379 26380 26381

setinfos=new hashset<>();

infos.add(new hostandport("10.9.104.184",26379).tostring());

infos.add(new hostandport("10.9.104.184",26380).tostring());

infos.add(new hostandport("10.9.104.184",26381).tostring());

//通過哨兵資訊,封裝乙個哨兵連線池

//需要兩個引數,乙個哨兵集群可以管理多個主從,每個主從名字不同,這裡需要指定

//哨兵管理的主從名稱 mymaster

jedissentinelpool pool=new jedissentinelpool("mymaster",infos);

//從哨兵連線池中就能獲取jedis連線物件 當前主節點,還能獲取主從一些資訊

system.out.println("當前主節點:"+pool.getcurrenthostmaster());

jedis jedismaster = pool.getresource();

jedismaster.set("name","aldjflads");

system.out.println("讀取name:"+jedismaster.get("name"));

8 如果實現哨兵分布式有哪些問題

如果使用哨兵實現分布式會有如下難點:

分布式計算方法一致性hash 無法實現頂替後的單調性

一致性hash演算法本身的問題,導致資料與節點分片對應關係行程強耦合

Redis 配置哨兵

關閉兩端 linux 的防火牆 service iptables stop關閉兩端 redis.conf 的受保護機制 protected mode no在從redis 中配置 replicaof 主 redis ip 埠拷貝解壓目錄下的配置檔案 sentinel.conf root admin r...

Redis 配置哨兵

關閉兩端 linux 的防火牆 service iptables stop關閉兩端 redis.conf 的受保護機制 protected mode no在從redis 中配置 replicaof 主 redis ip 埠拷貝解壓目錄下的配置檔案 sentinel.conf root admin r...

redis哨兵機制

為了解決redis主從複製模式致命缺點,當主節點宕機,影響整個系統執行,引入哨兵機制sentinel。sentinel哨兵主要解決以下問題 哨兵配置如下 哨兵工作原理 哨兵是乙個特殊的redis伺服器,不同的是命令以及不會持久化,啟動時,根據配置檔案中master主節點ip和埠,建立兩個連線,一為命...