最近在复习redis的集群配置, 因为之前用的都是redis主从复制然后加3 个sentinel节点,没用过redis-cluster, 今天心血来潮 搞一下。
话不多说开始
1、 当然是安装redis,这个网上教程一堆,请自行查阅
2、最重要的配置文件 redis.conf。
默认redis-cluster至少3个节点(加上主从,总共6个节点),所以直接复制3 份 重新命名,7000.conf, 7001.conf, 7002.conf
因置的是集群,所以修改下里面的参数
2.1、修改conf文件中端口为7000,7001,7002
2.2、
修改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
3、分别 启动3个实例, redis-server 7000.conf , redis-server 7001.conf , redis-server 7002.conf
4、 通过客户端登录查看启动情况
redis-cli -p 7000(本机可以这样操作) , 如果是不同机器,redis-cli -h ip -p 7000
到目前3各服务端已经启动成功,但并没有自动构建集群,因为三者还处于“我不认识你,你不属于我”的状态,它们每个都是孤零零的Redis节点,或者是只包含了一个节点的集群 ,通过cluster meet 命令来完成集群的构建
5、
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
这一步的 意思是让7000这个端口去相遇其他节点,这样就构成了一个集群
6、输入命令cluster nodes
结果如下:
XXXXXXXXXXXXXXXXXXXXXXXXX(节点的名字) 127.0.0.1:7000 myself,master - 0 0 0 connected
YYYYYYYYYYYYYYYYYYYYYYYYY 127.0.0.1:7001 master - 0 1469926275334 1 connected
ZZZZZZZZZZZZZZZZZZZZZZZZZZZZ 127.0.0.1:7002 master - 0 1469926276376 2 connected
通过cluster nodes 查看集群构建成功,是否集群搭建工作就完成了呢?非也,我们通过cluster info命令来查看集群的状态
7、输入cluster nodes
主要看这个参数 cluster_state:fail
为啥是个fail? 因为还没有分配槽
8、槽的分配
8.1、命令 cluster addslots,这个命令比较操蛋,我网上搜了一大圈,好像只有一个个节点添加,或者1 2 3 这样写明的批量添加
8.2、另外一种方法 就是修改配置 文件。我们之前在配置 文件中 指定了nodes-7000.conf这个文件, 回到redis目录下,会发现 这个文件自动 生成了, 然后手动去修改 里面带有myself的那行,表示自己,然后最后加上分配的槽
XXXXXXXXXXXXXXXXXXXXXX 127.0.0.1:7000 myself,master - 0 0 0 connected 0-5000
YYYYYYYYYYYYYYYYYYYYYY 127.0.0.1:7001 master - 0 1469925269256 1 connected 5001-10000
ZZZZZZZZZZZZZZZZZZZZZZZZ 127.0.0.1:7002 master - 0 1469925270085 2 connected 10001-16383
之后重启 一下就OK了