想在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 客觀下線,當半數以上的持有槽的主節點都標...