Redis Cluster集群快速搭建

2021-09-19 21:04:03 字數 1832 閱讀 5903

想在3分鐘以內搭建乙個redis cluster集群嗎?說3分鐘可能有點久,實際上好像不到一分鐘就完成了redis cluster集群的搭建。

redis cluster是官方提供的一種集群方案,redis-cluster採用無中心結構,每個節點儲存資料和整個集群狀態,每個節點都和其他所有節點連線。

結構特點:

所有節點彼此互聯,redis伺服器啟動兩個埠,乙個為服務客戶端的埠,另外乙個為內部通訊埠,內部通訊埠比服務埠大10000. 比如:6379與16379

超過半數及以上的節點時,節點才會失效

客戶端與redis伺服器直連,無**伺服器,只需連線到集群中的任何乙個節點即可

redis集群預分好16384個桶,當需要在 redis 集群中放置乙個 key-value 時,根據 crc16(key) mod 16384的值,決定將乙個key放到哪個桶中。

今天看官方文件的時候發現redis原始碼包中還存在乙個redis-cluster的shell指令碼,可以快速建立集群。

是不是很快就建立了redis集群

create-cluster利用的是使用redis-server命令列指定配置引數讓redis-server啟動在不同的埠。

要想搭建redis-cluster集群,我們需要的最少配置檔案為

port 7000

cluster-enabled yes

cluster-config-file nodes.conf

cluster-node-timeout 5000

create-cluster啟動例項的shell指令碼。

port=30000

timeout=2000

nodes=6

replicas=1

endport=$((port+nodes))

if [ "$1" == "start" ]

then

while [ $((port < endport)) != "0" ]; do

port=$((port+1))

echo "starting $port"

done

exit 0

fiif [ "$1" == "create" ]

then

hosts=""

while [ $((port < endport)) != "0" ]; do

port=$((port+1))

hosts="$hosts 127.0.0.1:$port"

done

../../src/redis-trib.rb create --replicas $replicas $hosts

exit 0

fi

可以看出來建立集群的指令碼本質上也是命令列指定配置引數,建立指令碼則是利用redis-trib.rb

這裡簡單的演示下redis集群的快速搭建,先明白集群搭建,後面詳細說明其實現原理,redis集群的搭建非常簡單,深入比較難。

Redis Cluster集群原理

一 redis cluster 官方推薦的 redis 集群解決方案,優點在於去中心化,去中介軟體,也就是說,集群中的每個節點都是平等的關係,都是對等的,每個節點都儲存各自的資料和整個集群的狀態。每個節點都和其他所有節點連線,而且這些連線保持活躍,這樣就保證了我們只需要連線集群中的任意乙個節點,就可...

redis cluster 集群重啟關閉

找遍了redis cluster官方文件,沒發現有關集群重啟和關閉的方法。為啥會沒有呢,猜測redis cluster至少要三個節點才能執行,三颱同時掛掉的可能性比較小,只要不同時掛掉,掛掉的機器修復後在加入集群,集群都能良好的運作,萬一同時掛掉,資料又沒有備份的話,就有 煩了。redis clus...

Redis Cluster集群故障轉移

1.故障發現 1.1 主觀下線,redis集群通過gossip的ping,pong訊息來互相通訊,比如a節點向b節點傳送ping,如果在 cluster node timeout時間內一直失敗,則節點a會認為b是主觀下線,同時將此狀態資訊在集群內廣播 1.2 客觀下線,當半數以上的持有槽的主節點都標...