10.Redis哨兵架構
概述
sentinel哨兵是特殊的redis服務,不提供讀寫服務,主要用來監控redis例項節點。如果redis的主節點掛掉,利用哨兵機制,可以從剩下的從節點中選出主節點,彌補了上一節講的主從複製架構不能自動選舉主節點的難處。
有了sentinel哨兵之後,客戶端第一次不會主動去找redis的主節點,而是去訪問哨兵主節點的ip與埠,之後客戶端就直接訪問redis的主節點。
當redis的主節點發生變化,哨兵會第一時間感知到,並且將新的redis 主節點通知給client端。
redis的主目錄下有sentinel哨兵的配置檔案,src目錄下有哨兵的啟動服務。
redis哨兵架構搭配步驟
1.
#複製一份sentinel.conf檔案
cp sentinel.conf sentinel_26379.conf
2.
#將相關配置修改為如下值:
port 26379
daemonize yes
pidfile "/var/run/redis‐sentinel_26379.pid"
logfile "26379.log"
dir "/usr/local/redis‐5.0.2/data"
# sentinel monitor <master‐name> <ip> <redis‐port> <quorum>
# quorum是一個數字,指明當有多少個sentinel認為一個master失效時(值一般為:sentinel總數/2 + 1),master才算真正失效
sentinel monitor mymaster 192.168.20.136 6379 2
3.
#啟動sentinel哨兵例項
src/redis‐sentinel sentinel‐26379.conf
4.
#檢視sentinel的info資訊
src/redis‐cli ‐p 26379
127.0.0.1:26379>info
可以看到Sentinel的info裡已經識別出了redis的主從
5.可以自己再配置兩個sentinel,埠26380和26381,注意上述配置檔案裡的對應數字都要修改
搭建結果
一個主節點,兩個從節點,三個哨兵
哨兵的Jedis連線程式碼
public class JedisSentinelTest {
public static void main(String[] args) {
JedisPoolConfig jedisPoolConfig = new JedisPoolConfig();
jedisPoolConfig.setMaxTotal(20);
jedisPoolConfig.setMaxIdle(10);
jedisPoolConfig.setMinIdle(5);
Set<String> sentinels = new HashSet<>();
sentinels.add(new HostAndPort("192.168.20.136", 26379).toString());
sentinels.add(new HostAndPort("192.168.20.136", 26380).toString());
sentinels.add(new HostAndPort("192.168.20.136", 26381).toString());
//JedisSentinelPool其實本質跟JedisPool類似,都是與redis主節點建立的連線池
//JedisSentinelPool並不是說與sentinel建立的連線池,而是通過sentinel發現redis主節點並與其建立連線
//masterName需要與哨兵的配置檔案中配置的主節點名稱一致
String masterName = "mymaster";
JedisSentinelPool jedisSentinelPool = new JedisSentinelPool(masterName, sentinels,
jedisPoolConfig, 3000, null);
Jedis jedis = null;
try {
jedis = jedisSentinelPool.getResource();
System.out.println(jedis.set("sentinel", "zhangsan"));
System.out.println(jedis.get("sentinel"));
} catch (Exception e) {
e.printStackTrace();
} finally {
//注意這裡不是關閉連線,在JedisPool模式下,Jedis會被歸還給資源池。
if(null != jedis)
jedis.close();
}
}
}
相關文章
- redis哨兵架構基礎Redis架構
- Redis持久化、主從與哨兵架構詳解Redis持久化架構
- redis哨兵 ,redis叢集 快取 以及某些問題: 最左字首原則,,celery架構Redis快取架構
- 10.redis cluster介紹與gossip協議RedisGo協議
- 架構之:serverless架構架構Server
- redis 哨兵Redis
- Redis哨兵Redis
- SaaS架構:流程架構分析架構
- 【細品架構4/100】架構之架構切分架構
- 【資料結構】直接插入排序_哨兵位資料結構排序
- 架構師修煉之道(二)——架構?設計?架構師?架構
- 單體架構&微服務架構&中臺服務架構架構微服務
- 架構之:資料流架構架構
- 前端架構之小小node架構前端架構
- 邏輯架構和物理架構架構
- 軟體架構與架構師架構
- 單體架構到垂直架構架構
- Redis哨兵sentinelRedis
- redis系列:哨兵Redis
- Redis哨兵模式Redis模式
- 架構架構
- 業務架構、資訊架構、技術架構三位一體架構
- 書籍:精益架構(敏捷架構 瘦架構 Lean Architecture)架構敏捷
- 架構演進之「微服務架構」架構微服務
- MySQL 高可用架構之 MMM 架構MySql架構
- 架構之:微服務架構漫談架構微服務
- 架構之:軟體架構漫談架構
- 遊戲架構 遊戲架構設計(8)遊戲架構
- 【架構分析】MESA (EGL/GLES)架構分析架構
- REST架構風格的架構元素REST架構
- 網站架構及架構演變網站架構
- 架構C01: 什麼是架構?為什麼做架構?架構師需要做什麼?架構
- 按照業務領域畫資料架構圖 業務架構 資料架構架構
- 架構師眼中的高併發架構架構
- 架構設計之一——基礎架構架構
- Java架構-到底什麼才是業務架構?Java架構
- 軟體架構模式之微服務架構架構模式微服務
- LNMP架構與LNAMP架構的區別LNMP架構