主要步骤
- 下载3.0版本以上的redis客户端
- 在redis主目录下新建n个子目录(每个子目录代表一个集群节点),并分别拷贝一份redis.conf到子目录中
- 编辑每个子目录中的redis.conf,修改以下设置:
# 修改端口号,每个集群节点设置一个端口号
port 6379
# 开启集群模式
cluster-enabled yes
# 开启节点配置,并修改6379为与port对应的端口好
cluster-config-file nodes-6379.conf
- 分别启动各节点
./redis-server redis.conf
./redis-server redis-6380.conf
./redis-server redis-6381.conf
-
组建集群
# 将6380、6381端口节点加入到6379的集群中
redis-cli -c -p 6379 cluster meet 127.0.0.1 6380
redis-cli -c -p 6379 cluster meet 127.0.0.1 6381
- 为每个实例分配slots
redis总共有16834个槽,以键的hash值CRC16('key')%16384的余数存放到对应的槽位
在redis/src下执行命令
# 为6379端口节点分配0-3的槽位
./redis-cli -c -p 6379 cluster addslots 0 1 2 3
因为redis-cli不支持指定slots范围参数,单个输入又太麻烦,可以使用脚本执行:
新建一个文件命名为slots.sh,写入
port=$1
first=$2
last=$3
for slot in `seq ${first} ${last}`
do
./redis-cli -c -p ${port} cluster addslots ${slot}
done
保存并执行脚本,为每个集群节点分配槽位(0-16833)
# 为6379端口节点分配0-5000的slot
sh addslots.sh 6379 0 5000
sh addslots.sh 6380 5001 10000
sh addslots.sh 6381 10001 16833
- 完成后检查节点信息
# 检查节点槽位分配
./redis-cli -c -p 6379 cluster nodes
# 检查节点信息
./redis-cli -c -p 6379 cluster info
./redis-cli -c -p 6380 cluster info
./redis-cli -c -p 6381 cluster info
检查输出:
localhost:src liguosheng$ ./redis-cli -c -p 6379 cluster info
cluster_state:ok
cluster_slots_assigned:16384
cluster_slots_ok:16384
cluster_slots_pfail:0
cluster_slots_fail:0
cluster_known_nodes:3
cluster_size:3
cluster_current_epoch:1
cluster_my_epoch:1
cluster_stats_messages_ping_sent:4242
cluster_stats_messages_pong_sent:4221
cluster_stats_messages_meet_sent:1
cluster_stats_messages_sent:8464
cluster_stats_messages_ping_received:4221
cluster_stats_messages_pong_received:4243
cluster_stats_messages_received:8464