【Redis】Redis中的Sentinel架構介紹與部署

目錄

介紹

三臺機器修改哨兵配置文件

三臺機器啓動哨兵服務

模擬redis故障宕機情況

redis的sentinel模式代碼開發連接


  • 介紹

Sentinel(哨兵)是Redis 的高可用性解決方案:由一個或多個Sentinel 實例 組成的Sentinel 系統可以監視任意多個主服務器,以及這些主服務器屬下的所有從服務器,並在被監視的主服務器進入下線狀態時,自動將下線主服務器屬下的某個從服務器升級爲新的主服務器。

 

 

在Server1 掉線後:

 

升級Server2 爲新的主服務器:

 

 

  • 三臺機器修改哨兵配置文件

三臺機器執行以下命令修改redis的哨兵配置文件

cd /export/servers/redis-3.2.8
vim sentinel.conf
#修改bind配置,每臺機器修改爲自己對應的主機名
bind node01 

#配置sentinel服務後臺運行
daemonize yes

#修改三臺機器監控的主節點,現在主節點是node01服務器
#那臺節點是主節點則寫入那臺節點ip
#代表監控的主服務器,6379代表端口 
#2代表只有兩個或兩個以上的哨兵認爲主服務器不可用的時候,纔會進行failover操作
sentinel monitor mymaster node01 6379 2

# sentinel author-pass定義服務的密碼,mymaster是服務名稱,123456是Redis服務器密碼
# sentinel auth-pass <master-name> <password>

 

  • 三臺機器啓動哨兵服務

cd /export/servers/redis-3.2.8
src/redis-sentinel sentinel.conf

注意:此時redis-server和sentinel兩個都要啓動

 

  • 模擬redis故障宕機情況

使用kill  -9命令殺死redis服務進程,模擬redis故障宕機情況,過一段時間之後,就會在node02與node03服務器選擇一臺服務器來切換爲主節點

 

測試主節點與從節點:

主節點:允許讀寫數據

從節點:只允許讀數據

 

殺死主節點:

主節點

 

查看從節點:從節點會變成主節點,變成能讀寫

 

  • redis的sentinel模式代碼開發連接

JedisPoolConfig jedisPoolConfig = new JedisPoolConfig();
jedisPoolConfig.setMaxTotal(10);
jedisPoolConfig.setMaxIdle(5);
jedisPoolConfig.setMinIdle(5);
// 哨兵信息
Set<String> sentinels = new HashSet<>(Arrays.asList("node01:26379",
                "node02:26379","node03:26379"));
// 創建連接池
JedisSentinelPool pool = new JedisSentinelPool("mymaster", sentinels,jedisPoolConfig);
// 獲取客戶端
Jedis jedis = pool.getResource();
// 執行兩個命令
jedis.set("mykey", "myvalue");
String value = jedis.get("mykey");
System.out.println(value);

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章