Redis當中的Sentinel架構

Redis當中的Sentinel架構

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

第一步:三臺機器修改哨兵配置文件

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

cd /export/servers/redis-3.2.8
vim sentinel.conf
# 配置監聽的主服務器,這裏sentinel monitor代表監控,mymaster代表服務器的名稱,可以自定義,192.168.11.128代表監控的主服務器,6379代表端口,2代表只有兩個或兩個以上的哨兵認爲主服務器不可用的時候,纔會進行failover操作。
#修改bind配置,每臺機器修改爲自己對應的主機名
bind node01  
#配置sentinel服務後臺運行
daemonize yes
#修改三臺機器監控的主節點,現在主節點是node01服務器
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兩個都要啓動

第三步:node01服務器殺死redis服務進程

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

第四步:redis的sentinel模式代碼開發連接

 public static void main(String[] args) {
        //設置數據庫連接池
        JedisPoolConfig jedisPoolConfig = new JedisPoolConfig();
        //設置連接池的最大連接數
        jedisPoolConfig.setMaxTotal(50);
        //設置最大空閒數量
        jedisPoolConfig.setMaxIdle(10);
        //設置最小的空閒的數量
        jedisPoolConfig.setMinIdle(5);
        //連接超時時間(最大等待的時間)
        jedisPoolConfig.setMaxWaitMillis(30000);
        Set<String> sentinels = new HashSet<>(Arrays.asList("node01:26379","node02:26379","node03:26379"));
        JedisSentinelPool jedisSentinelPool = new JedisSentinelPool("mymaster",sentinels,jedisPoolConfig);
        Jedis jedis = jedisSentinelPool.getResource();
        jedis.set("44","55");
        String s = jedis.get("44");
        System.out.println(s);
    }
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章