下面由Redis教學欄位來介紹Redis三種群集模式-Cluster群集模式,希望對需要的朋友有幫助!
一、 在之前有看過redis叢集部署的三種方案,不過效能最高的還是redis官方推薦的redis-cluster,效能最高,以下介紹一下redis-cluster這種模式。
1、redis-cluster
A、採用去中心化的思想,沒有中心節點的說法,它使用hash slot方式將16348個hash slot覆蓋到所有節點上,對於儲存的每個key值,使用CRC16(KEY)&16348=slot得到他對應的hash slot,
並在訪問key的時候就去找他的hash slot在哪一個節點上,然後由當前訪問節點從實際被分配了這個hash slot的節點去取數據,節點之間使用輕量級協議通信減少頻寬佔用性能很高,
自動實現負載平衡與高可用,自動實作failover並且支援動態擴充。
B、其內部中也需要配置主從,並且內部也是採用哨兵模式,如果有半數節點發現某個異常節點,共同決定更改異常節點的狀態,如果改節點是主節點,則對應的從節點自動頂替為主節點,當原先的主節點上線後,則會變成從節點。
如果叢集中的master沒有slave節點,則master掛掉後整個叢集就會進入fail狀態,因為叢集的slot對應不完整。如果叢集超過一半以上的master掛掉,無論是否有slave,叢集都會進入fail狀態。
C、依據官方推薦 叢集部署至少要3台以上的master節點。那麼接下來就開始部署吧
2、在每一路徑下我們加入設定檔
都為: redis.conf
1.建立目錄
/usr/software/redis/redis-cluster/1001
/usr/software/redis/redis-cluster/1002
##soft 〔is /〕 cluster/1003 /usr/software/redis/redis-cluster/1004 /usr/software/redis/redis-cluster/10052.修改redis.conf
cd /usr/software/redis/redis-cluster/1001
四 〷 〷〷 〷 redis # #修改如下鍵值對
################################## NETWORK ##################################### #bind 127.0.0.1protected-mode no port 1001################################# GENERAL ##################################### daemonize yes pidfile "/var/run/redis_1001.pid"logfile "/usr/software/redis/redis-cluster/1001/log/redis.log"################################ SNAPSHOTTING ################################dir "/usr/software/redis/redis-cluster/1001/data"################################ REDIS CLUSTER ############################### cluster-enabled yes cluster-config-file nodes-1001.conf cluster-node-timeout 15000################################## SECURITY ################################### requirepass "ww"
port 100x"/var/run/redis_100x.pid" logfile "/usr/software/redis/redis-cluster/100x/log/redis.log""/usr/software/redis/redis-cluster/100x/data"-config-file nodes-100x.conf
2、啟動後我們就可以建立叢集啦
注意:在redis5.0後建立叢集統一使用redis-cli,之前的版本使用redis-trib.rb,但是需要安裝ruby軟體相對複雜,相比之前的版本5.0不需要安裝額外的軟體,方便。具體的可以參考redis官方網站查看 https://redis.io/topics/cluster-tutorial
建立叢集指令:其中cluster-replicas 1 代表 一個master後有幾個slave ,1代表為1個slave節點redis-cli --cluster create 127.0.0.1:1001 127.0.0.1:1002 127.0.0.1:1003 127.0.0.1:1004 127.0.0.1:1005 127.0.0.1:1006 --cluster-replicas 1 -a ww
3、驗證叢集是否建立成功
先查看主從配對情況 執行:redis-cli -c -p 1001 -a ww資料自動分配到1002節點,連線也轉移到1002 節點
# 4、驗證故障轉移
結論是主節點故障後,下掛從節點會升級成主節點,並接替主節點的插槽。舊主節點上線後,也只能作為其從節點。 kill 掉1001 ,發現其從節點1004轉為了master 重新啟動1001,其變成slave節點### ##以上是介紹Redis三種集群模式(Cluster集群模式)的詳細內容。更多資訊請關注PHP中文網其他相關文章!