Redis雙機熱備

      雙機熱備特指基於高可用系統中的兩臺服務器的熱備(或高可用),因兩機高可用在國內使用較多,故得名雙機熱備,雙機高可用按工作中的切換方式分爲:主-備方式(Active-Standby方式)和雙主機方式(Active-Active方式),主-備方式即指的是一臺服務器處於某種業務的激活狀態(即Active狀態),另一臺服務器處於該業務的備用狀態(即Standby狀態)。而雙主機方式即指兩種不同業務分別在兩臺服務器上互爲主備狀態(即Active-Standby和Standby-Active狀態)。

大白話就是,當主服務器掛了之後,從服務器立馬切換爲主服務器繼續工作,當原先主服務器修復完善啓動後,會自動充當從服務器的角色繼續工作。這樣就很好的避免了,由於一臺主機出現故障,系統掛點的現象出現。

Sentinel(哨兵)是用於監控redis集羣中Master狀態的工具,已經集成在redis官方版本中,可以直接配置使用。

 

1. 兩個linux系統,ip分別爲192.11.3.1 和 192.11.3.2;

2. 兩個linux分別安裝redis

#網絡下載redis壓縮包
wget http://download.redis.io/releases/redis-4.0.6.tar.gz

#解壓下載完成的redis包
tar -xzvf redis-4.0.6.tar.gz

#進入到redis目錄內
cd redis-4.0.6 

#編譯
make
 

3.修改redis的redis.conf

1.在 redis.conf 中,
2.找到 bind 127.0.0.1 註釋掉(不註釋只能本機訪問)
3.找到  protected-mode yes ,修改yes爲no (關閉保護模式)

4.主從複製 

  • 192..11.3.1(master) 192.11.3.2(slave)
  • 是什麼:redis中的複製(master/slave)主從複製,主機數據更新後根據配置和策略自動同步到備機的master/slaver機制,master以寫爲主,slaver以讀爲主
  • 作用:讀寫分離、容災恢復
在 192.11.3.2 的 redis.conf 文件底部添加 slaveof 192.11.3.1 6379,使其成爲192.11.3.1的slave,會自動保持和master的數據保持一致

5.雙機熱備

找到兩個redis的 sentinel.conf (和redis.conf同目錄),修改如下:                                                          
  1. 找到 sentinel monitor mymaster 127.0.0.1 6379 2 ,替換爲 sentinel monitor mymaster 192.11.3.1 6379 1  (兩個conf都需要替換)(配置內容說明 參考 http://blog.csdn.net/a1282379904/article/details/52335051 )                           
  2. 找到 # protected-mode no   去掉#

6.啓動

依次啓動兩機的redis 服務和sentinel服務

7. java 連接 redis

   Set<String> sentinels = new HashSet<String>();
        String hostAndPort1 = "192.11.3.1:26379";
        String hostAndPort2 = "192.11.3.2:26379";
        sentinels.add(hostAndPort1);
        sentinels.add(hostAndPort2);

        String clusterName = "mymaster";

        JedisSentinelPool redisSentinelJedisPool = new JedisSentinelPool(clusterName, sentinels);

        Jedis jedis = null;
        try {
            jedis = redisSentinelJedisPool.getResource();
            jedis.set("RNG", "niubi");
            System.out.println(jedis.get("RNG"));
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            redisSentinelJedisPool.returnBrokenResource(jedis);
        }

當kill掉192.11.3.1的redis服務後,192.11.3.2的redis會自動升爲成爲master,redis服務依然可用。
 

 

 

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