想在3分鐘以內(nèi)搭建一個(gè)Redis Cluster集群?jiǎn)幔空f3分鐘可能有點(diǎn)久痘煤,實(shí)際上好像不到一分鐘就完成了Redis Cluster集群的搭建士骤。
介紹
redis cluster是官方提供的一種集群方案忆蚀,Redis-Cluster采用無(wú)中心結(jié)構(gòu)辩越,每個(gè)節(jié)點(diǎn)保存數(shù)據(jù)和整個(gè)集群狀態(tài),每個(gè)節(jié)點(diǎn)都和其他所有節(jié)點(diǎn)連接嘁扼。
結(jié)構(gòu)特點(diǎn):
- 所有節(jié)點(diǎn)彼此互聯(lián),redis服務(wù)器啟動(dòng)兩個(gè)端口黔攒,一個(gè)為服務(wù)客戶端的端口趁啸,另外一個(gè)為內(nèi)部通訊端口,內(nèi)部通訊端口比服務(wù)端口大10000. 比如:6379與16379
- 超過半數(shù)及以上的節(jié)點(diǎn)時(shí)督惰,節(jié)點(diǎn)才會(huì)失效
- 客戶端與redis服務(wù)器直連不傅,無(wú)代理服務(wù)器,只需連接到集群中的任何一個(gè)節(jié)點(diǎn)即可
- Redis集群預(yù)分好16384個(gè)桶赏胚,當(dāng)需要在 Redis 集群中放置一個(gè) key-value 時(shí)访娶,根據(jù) CRC16(key) mod 16384的值,決定將一個(gè)key放到哪個(gè)桶中觉阅。
快速搭建
今天看官方文檔的時(shí)候發(fā)現(xiàn)redis源碼包中還存在一個(gè)redis-cluster的shell腳本崖疤,可以快速創(chuàng)建集群。
創(chuàng)建
cd utils/create-cluster
gem install redis
./create-cluster start
./create-cluster create
是不是很快就創(chuàng)建了redis集群
內(nèi)部實(shí)現(xiàn)
create-cluster利用的是使用redis-server命令行指定配置參數(shù)讓redis-server啟動(dòng)在不同的端口留拾。
要想搭建redis-cluster集群戳晌,我們需要的最少配置文件為
port 7000
cluster-enabled yes
cluster-config-file nodes.conf
cluster-node-timeout 5000
appendonly yes
create-cluster啟動(dòng)實(shí)例的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"
../../src/redis-server --port $PORT --cluster-enabled yes --cluster-config-file nodes-${PORT}.conf --cluster-node-timeout $TIMEOUT --appendonly yes --appendfilename appendonly-${PORT}.aof --dbfilename dump-${PORT}.rdb --logfile ${PORT}.log --daemonize yes
done
exit 0
fi
if [ "$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
可以看出來(lái)創(chuàng)建集群的腳本本質(zhì)上也是命令行指定配置參數(shù)痴柔,創(chuàng)建腳本則是利用redis-trib.rb
最后
這里簡(jiǎn)單的演示下redis集群的快速搭建,先明白集群搭建疫向,后面詳細(xì)說明其實(shí)現(xiàn)原理咳蔚,Redis集群的搭建非常簡(jiǎn)單豪嚎,深入比較難。