Redis Cluster集群快速搭建

想在3分钟以内搭建一个Redis Cluster集群吗?说3分钟可能有点久,实际上好像不到一分钟就完成了Redis Cluster集群的搭建。

介绍

redis cluster是官方提供的一种集群方案,Redis-Cluster采用无中心结构,每个节点保存数据和整个集群状态,每个节点都和其他所有节点连接。

结构特点:

1. 所有节点彼此互联,redis服务器启动两个端口,一个为服务客户端的端口,另外一个为内部通讯端口,内部通讯端口比服务端口大10000. 比如:6379与16379

2. 超过半数及以上的节点时,节点才会失效

3. 客户端与redis服务器直连,无代理服务器,只需连接到集群中的任何一个节点即可

4. Redis集群预分好16384个桶,当需要在 Redis 集群中放置一个 key-value 时,根据 CRC16(key) mod 16384的值,决定将一个key放到哪个桶中。

快速搭建

今天看官方文档的时候发现redis源码包中还存在一个redis-cluster的shell脚本,可以快速创建集群。

创建

cd utils/create-cluster

gem install redis

./create-cluster start

./create-cluster create

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

内部实现

create-cluster利用的是使用redis-server命令行指定配置参数让redis-server启动在不同的端口。

要想搭建redis-cluster集群,我们需要的最少配置文件为

port 7000

cluster-enabled yes

cluster-config-file nodes.conf

cluster-node-timeout 5000

appendonly yes

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

../../src/redis-server --port $PORT --cluster-enabled yes --cluster-config-file nodes-$.conf --cluster-node-timeout $TIMEOUT --appendonly yes --appendfilename appendonly-$.aof --dbfilename dump-$.rdb --logfile $.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

可以看出来创建集群的脚本本质上也是命令行指定配置参数,创建脚本则是利用redis-trib.rb

最后

这里简单的演示下redis集群的快速搭建,先明白集群搭建,后面详细说明其实现原理,Redis集群的搭建非常简单,深入比较难。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20190810A084NR00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。

扫码关注云+社区

领取腾讯云代金券