1. 程式人生 > >Redis叢集搭建(一主多從)

Redis叢集搭建(一主多從)

本文主要介紹一種通過Jedis&Sentinel實現Redis叢集高可用方案,該方案需要使用Jedis2.2.2及以上版本,Redis2.8及以上版本。

一、安裝redis

目的:搭建一主二從環境,192.168.18.19(主)   192.168.18.178 (從) 192.168.18.179(從) 

部署redis完畢,所有埠都使用的預設埠6379

配置檔案目錄:/etc/redis 

備份目錄: /opt/soft/redis/backup 

日誌目錄:  /opt/soft/redis/log 

192.168.18.178/179從伺服器需要配置slaveof 192.168.18.19 6379

配置slave-priority,預設是100

178 配置為50,179配置為100

當Master掛掉的時候Sentinel會優先選擇slave-priority值較小的作為新的Master。


驗證:當往Master寫入資料的時候,slave可以同步資料,說明環境搭建完成。

二、配置sentinel

配置成守護程序

daemonize yes

配置日誌輸出目錄

logfile "/opt/soft/redis/log/sentinel.log” 

配置monitor的Master redis

sentinel monitor mymaster 192.168.18.19 6379 2 

部署了3個sentinel程序,分別在192.168.18.19、 192.168.18.178、192.168.18.179上,

配置檔案sentinel.conf 相同。

你會發現:sentinel.conf 配置檔案是動態的,檔案多瞭如下內容

sentinel known-slave mymaster 192.168.18.179 6379

sentinel known-sentinel mymaster 192.168.18.179 26379 9a00533bb48c8c860b0f373d9594b5126d1a1db9

sentinel known-sentinel mymaster 192.168.18.19 26379 738264461625b563f367683b234d9b4c1d971972

sentinel current-epoch 0  


三、程式驗證

	Set<String> sentinels = new HashSet<String>();
        sentinels.add(new HostAndPort("192.168.18.19", 26379).toString());
        sentinels.add(new HostAndPort("192.168.18.178", 26379).toString());
        sentinels.add(new HostAndPort("192.168.18.179", 26379).toString());
        JedisSentinelPool sentinelPool = new JedisSentinelPool("mymaster", sentinels);
        System.out.println("Current master: " + sentinelPool.getCurrentHostMaster().toString());
        
        Jedis master = sentinelPool.getResource();
        master.set("username","jack");
        sentinelPool.returnResource(master);
        
        Jedis master2 = sentinelPool.getResource();
        String value = master2.get("username");
        System.out.println("username: " + value);

能正常從redis獲取資訊說明配置完成。

四、記憶體升級方案

1)停掉一個從,升級記憶體,掛回

2)停掉另一個從,升級記憶體,掛回

3)停掉主,從兩個從中選出一個主,升級記憶體,掛回  (以前的主變成了從)


五、多主多從叢集搭建

待完善