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 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)停掉主,從兩個從中選出一個主,升級記憶體,掛回 (以前的主變成了從)
五、多主多從叢集搭建
待完善