1.安装redis,执行命令brew install redis
2.安装完成后,brew info redis,可以查看redis的安装路径
3.cd /usr/local/Cellar/redis/3.0.7 进入redis安装路径
4.在/usr/local/etc下建立cluster/7001,7002,7003目录
5.复制3步骤中的bin目录下的redis-server redis.conf 文件到7001,7002,7003目录,
修改redis.conf中端口为7000,7001,7002;
修改redis.conf文件的cluster-config-file参数为
nodes-7000.conf
nodes-7001.conf
nodes-7002.conf
开启集群相关参数
daemonize yes
cluster-enabled yes
cluster-config-file nodes.conf
cluster-node-timeout 5000
appendonly yes
6.分别启动3个实例
cd /usr/local/etc/cluster/7000
redis-server redis.conf
cd /usr/local/etc/cluster/7001
redis-server redis.conf
cd /usr/local/etc/cluster/7002
redis-server redis.conf
对应节点的配置文件路径:/usr/local/var/db/redis
7.通过客户端登录查看启动情况
redis-cli -p 7000
到目前3各服务端已经启动成功,但并没有自动构建集群,因为三者还处于“我不认识你,你不属于我”的状态,它们每个都是孤零零的Redis节点,或者是只包含了一个节点的集群 ,通过cluster meet 命令来完成集群的构建
8. 127.0.0.1:7000> cluster meet 127.0.0.1 7001
OK
127.0.0.1:7000> cluster meet 127.0.0.1 7002
OK
127.0.0.1:7000> cluster nodes
c9c6e633a6a5500a92dfffd899bc9dd547eff3fb 127.0.0.1:7000 myself,master - 0 0 0 connected
99263f7ebfba6a86b6755b1defb3a83d8d5e78df 127.0.0.1:7001 master - 0 1469926275334 1 connected
b1cb76440c85df5fc100e4034d6dd6c890d81d9f 127.0.0.1:7002 master - 0 1469926276376 2 connected
通过cluster nodes 查看集群构建成功,是否集群搭建工作就完成了呢?非也,我们通过cluster info命令来查看集群的状态
9.127.0.0.1:7000> cluster info
cluster_state:fail
cluster_slots_assigned:6
cluster_slots_ok:6
cluster_slots_pfail:0
cluster_slots_fail:0
cluster_known_nodes:3
cluster_size:3
cluster_current_epoch:2
cluster_my_epoch:1
cluster_stats_messages_sent:35
cluster_stats_messages_received:35
可以看到集群状态是fail状态,为什么是fail状态?通过查询redis fail状态解释,就是16384个hash slot 还没有被分配给集群中节点。我们接下来分配slot
10.有两种方式来分配slot:
一种是通过cluster addslots命令来分配在slot,这种方式是一个个slot添加到指定节点,比较麻烦。
第二种是直接在配置文件中指定,就是第五步中指定的nodes-7000/7001/7002.conf配置文件,在每个文件中包含myself中的行的末尾添加slot
c9c6e633a6a5500a92dfffd899bc9dd547eff3fb 127.0.0.1:7000 myself,master - 0 0 0 connected 0-5000
99263f7ebfba6a86b6755b1defb3a83d8d5e78df 127.0.0.1:7001 master - 0 1469925269256 1 connected 5001-10000
b1cb76440c85df5fc100e4034d6dd6c890d81d9f 127.0.0.1:7002 master - 0 1469925270085 2 connected 10001-16383
配置完成后重启3个节点的redis服务端
11.127.0.0.1:7000> 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:2
cluster_my_epoch:0
cluster_stats_messages_sent:3497
cluster_stats_messages_received:3413
至此redis集群配置完成,可以在客户端进去set,get等操作
127.0.0.1:7000> set hello world
OK
127.0.0.1:7000> get hello
"world"
127.0.0.1:7000>