本文基于 Redis 5.0.5
首先安装 Redis
wget http://download.redis.io/releases/redis-5.0.5.tar.gztar xzf redis-5.0.5.tar.gzcd redis-5.0.5/sudo make && make install
修改配置文件 redis.conf
:
# 同一台机器上,每个 Redis 实例的端口要不一样port 7000# 开启实例的集群模式cluster-enabled yes# 保存节点配置文件的路径cluster-config-file nodes.conf# 节点间通信的超时时间cluster-node-timeout 5000# 采用 AOFappendonly yes
拷贝并配置集群实例
cd ..mkdir -p redis-cluster/{7000,7001,7002,7003,7004,7005}
把 redis.conf 拷贝到上面建立的数字目录下,修改相应的端口号为目录名。
建立一个启动集群的脚本 start-cluster.sh
:
#!/bin/bashcd ./7000 && redis-server redis.confcd ../7001 && redis-server redis.confcd ../7002 && redis-server redis.confcd ../7003 && redis-server redis.confcd ../7004 && redis-server redis.confcd ../7005 && redis-server redis.confcd ..
再建立一个粗暴停止集群的脚本shutdown-cluster.sh
:
#!?bin/bashps -ef | grep redis-serve[r] | awk '{print $2}' | xargs -exec kill -9
启动所有实例后创建集群,三个主节点各带一个从节点:
ubuntu@VM-15-78-ubuntu:~/redis/redis-cluster$ redis-cli --cluster create 127.0.0.1:7000 127.0.0.1:7001 127.0.0.1:7002 127.0.0.1:7003 127.0.0.1:7004 127.0.0.1:7005 --cluster-replicas 1>>> Performing hash slots allocation on 6 nodes...Master[0] -> Slots 0 - 5460Master[1] -> Slots 5461 - 10922Master[2] -> Slots 10923 - 16383Adding replica 127.0.0.1:7004 to 127.0.0.1:7000Adding replica 127.0.0.1:7005 to 127.0.0.1:7001Adding replica 127.0.0.1:7003 to 127.0.0.1:7002>>> Trying to optimize slaves allocation for anti-affinity[WARNING] Some slaves are in the same host as their masterM: f1a5db8416619c93b96669edd630841e851a9edf 127.0.0.1:7000slots:[0-5460] (5461 slots) masterM: bcd86a4637ccde99d097f1ed02785ae8099a8094 127.0.0.1:7001slots:[5461-10922] (5462 slots) masterM: e62850a3b7bee767e5f599480483705b4743bb5b 127.0.0.1:7002slots:[10923-16383] (5461 slots) masterS: 51d1f1f81ab83ab335e774035518d0a41b3307cd 127.0.0.1:7003replicates f1a5db8416619c93b96669edd630841e851a9edfS: 774d705cabd67755f4e95841240b52b9504f28f6 127.0.0.1:7004replicates bcd86a4637ccde99d097f1ed02785ae8099a8094S: eaab05cf216b0948017c8f055b1cf1c8f8b0f1aa 127.0.0.1:7005replicates e62850a3b7bee767e5f599480483705b4743bb5bCan I set the above configuration? (type 'yes' to accept): yes>>> Nodes configuration updated>>> Assign a different config epoch to each node>>> Sending CLUSTER MEET messages to join the clusterWaiting for the cluster to join...>>> Performing Cluster Check (using node 127.0.0.1:7000)M: f1a5db8416619c93b96669edd630841e851a9edf 127.0.0.1:7000slots:[0-5460] (5461 slots) master1 additional replica(s)S: 51d1f1f81ab83ab335e774035518d0a41b3307cd 127.0.0.1:7003slots: (0 slots) slavereplicates f1a5db8416619c93b96669edd630841e851a9edfM: bcd86a4637ccde99d097f1ed02785ae8099a8094 127.0.0.1:7001slots:[5461-10922] (5462 slots) master1 additional replica(s)S: eaab05cf216b0948017c8f055b1cf1c8f8b0f1aa 127.0.0.1:7005slots: (0 slots) slavereplicates e62850a3b7bee767e5f599480483705b4743bb5bM: e62850a3b7bee767e5f599480483705b4743bb5b 127.0.0.1:7002slots:[10923-16383] (5461 slots) master1 additional replica(s)S: 774d705cabd67755f4e95841240b52b9504f28f6 127.0.0.1:7004slots: (0 slots) slavereplicates bcd86a4637ccde99d097f1ed02785ae8099a8094[OK] All nodes agree about slots configuration.>>> Check for open slots...>>> Check slots coverage...[OK] All 16384 slots covered.
然后查看下集群节点的状态
redis-cli -c -p 7000 cluster nodes:ubuntu@VM-15-78-ubuntu:~/redis/redis-cluster$ redis-cli -c -p 7000 cluster nodes51d1f1f81ab83ab335e774035518d0a41b3307cd 127.0.0.1:7003@17003 slave f1a5db8416619c93b96669edd630841e851a9edf 0 1561520522545 4 connectedbcd86a4637ccde99d097f1ed02785ae8099a8094 127.0.0.1:7001@17001 master - 0 1561520523000 2 connected 5461-10922eaab05cf216b0948017c8f055b1cf1c8f8b0f1aa 127.0.0.1:7005@17005 slave e62850a3b7bee767e5f599480483705b4743bb5b 0 1561520522000 6 connectedf1a5db8416619c93b96669edd630841e851a9edf 127.0.0.1:7000@17000 myself,master - 0 1561520521000 1 connected 0-5460e62850a3b7bee767e5f599480483705b4743bb5b 127.0.0.1:7002@17002 master - 0 1561520523046 3 connected 10923-16383774d705cabd67755f4e95841240b52b9504f28f6 127.0.0.1:7004@17004 slave bcd86a4637ccde99d097f1ed02785ae8099a8094 0 1561520522044 5 connected
— 向集群添加新的节点redis-cli --cluster add-node 127.0.0.1:7006 127.0.0.1:7007 --cluster-replicas 1
— 迁移slot到新节点redis-cli --cluster reshard 127.0.0.1:7006 --cluster-from
bcd86a4637ccde99d097f1ed02785ae8099a8094 --cluster-to
12758e5525bd853f834a6d8f437211b5c91d31a1 --cluster-slots 108
— 对于 master,需要先把slot迁移到其他节点redis-cli --cluster del-node 127.0.0.1:7006 12758e5525bd853f834a6d8f437211b5c91d31a1

文章转载自coderbee笔记,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




