1、下载最新的redis安装包:redis下载地址
2.解压redis压缩包后,将redis.conf 文件进行修改,修改关键代码如下:
port 7005
cluster-enabled yes
cluster-config-file nodes.conf
cluster-node-timeout 5000
appendonly yes
文件中的 cluster-enabled
选项用于开实例的集群模式, 而 cluster-conf-file
选项则设定了保存节点配置文件的路径, 默认值为 nodes.conf
。
3、为了能够演示集群3主3从的环境,我们分别在redis解压包的根目录下建立6个文件夹,文件夹名称以端口号命名,将redis.conf 分别拷贝到对应的端口文件夹下面,并修改对应文件中的端口地址及cluster-config-file 后面的文件名
4、使用下面的命令,启动对应的redis 服务器
redis-server ./redis.conf
Note:实例会一直使用同一个 ID , 从而在集群中保持一个独一无二(unique)的名字。
每个节点都使用 ID 而不是 IP 或者端口号来记录其他节点, 因为 IP 地址和端口号都可能会改变, 而这个独一无二的标识符(identifier)则会在节点的整个生命周期中一直保持不变。
5、创建集群
现在我们已经有了六个正在运行中的 Redis 实例, 接下来我们需要使用这些实例来创建集群, 并为每个节点编写配置文件。
通过使用 Redis 集群命令行工具 redis-trib
,下载地址, 它是一个 Ruby 程序, 这个程序通过向实例发送特殊命令来完成创建新集群, 检查集群, 或者对集群进行重新分片(reshared)等工作。 为了能够运行Ruby程序,我们需要安装Ruby运行环境地址如下:Ruby
我们需要执行以下命令来创建集群:
./redis-trib.rb create --replicas 1 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
Note:redis-trib.rb create:创建一个集群
--replicas :集群中每一个主节点创建一个从节点
在运行完这个命令之后,redis-trib会打印出一份配置列表,里面包含了主从库的配置信息,输入yes并继续安装
>>> Creating cluster Connecting to node 127.0.0.1:7000: OK Connecting to node 127.0.0.1:7001: OK Connecting to node 127.0.0.1:7002: OK Connecting to node 127.0.0.1:7003: OK Connecting to node 127.0.0.1:7004: OK Connecting to node 127.0.0.1:7005: OK >>> Performing hash slots allocation on 6 nodes... Using 3 masters: 127.0.0.1:7000 127.0.0.1:7001 127.0.0.1:7002 127.0.0.1:7000 replica #1 is 127.0.0.1:7003 127.0.0.1:7001 replica #1 is 127.0.0.1:7004 127.0.0.1:7002 replica #1 is 127.0.0.1:7005 M: 9991306f0e50640a5684f1958fd754b38fa034c9 127.0.0.1:7000 slots:0-5460 (5461 slots) master M: e68e52cee0550f558b03b342f2f0354d2b8a083b 127.0.0.1:7001 slots:5461-10921 (5461 slots) master M: 393c6df5eb4b4cec323f0e4ca961c8b256e3460a 127.0.0.1:7002 slots:10922-16383 (5462 slots) master S: 48b728dbcedff6bf056231eb44990b7d1c35c3e0 127.0.0.1:7003 S: 345ede084ac784a5c030a0387f8aaa9edfc59af3 127.0.0.1:7004 S: 3375be2ccc321932e8853234ffa87ee9fde973ff 127.0.0.1:7005 Can I set the above configuration? (type 'yes' to accept): yes
当配置完成之后,redis-trib输出一下信息:
>>> Check for open slots... >>> Check slots coverage... [OK] All 16384 slots covered.
从输出信息可以看出所有的槽至少有一个主节点,这标识运行正常。
测试集群:使用redis-cli.exe
E:\study\Redis-x64-3.2.100>redis-cli.exe -c -p 7005 127.0.0.1:7005> get k1 -> Redirected to slot [12706] located at 127.0.0.1:7002 "v2" 127.0.0.1:7002> get k2 -> Redirected to slot [449] located at 127.0.0.1:7000 "v2" 127.0.0.1:7000>我们可以看到它依靠redis来将它转向正确的节点。