redis cluster群集

1、源码安装
预先安装make、gcc
sudo apt install make gcc
wget http://download.redis.io/releases/redis-5.0.5.tar.gz
cd src
make MALLOC=libc
make test
sudo make install

如果需要使用make test(可能需要安装tcl8.5或更高版本)
You need tcl 8.5 or newer in order to run the Redis test
http://www.tcl.tk/doc/howto/compile.html#unix
https://sourceforge.net/projects/tcl/files/Tcl/

2、配置
复制源码中redis.conf到/etc/redis/7000.conf 7001.conf ... 7005.conf

检查以下配置参数:
port 7000
cluster-enabled yes
cluster-config-file nodes.conf
cluster-node-timeout 5000
appendonly yes

3、创建群集
检16384个槽(从0开始)
redis5可以使用redis-cli,redis4和3可以使用redis-trib.rb(https://redis.io/topics/cluster-tutorial)
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

查看群集节点
redis-cli -p 7000 cluster nodes
redis-cli -p 7000 cluster nodes | grep myself

重新分片
redis-cli --cluster reshard 127.0.0.1:7000

redis-cli --cluster reshard <host>:<port> --cluster-from <node-id> --cluster-to <node-id> --cluster-slots <number of slots> --cluster-yes
redis-cli --cluster reshard 127.0.0.1:7000 --cluster-from all --cluster-to 5c44213202ad32ef8d26ae5bd6e0622db8465fd4 --cluster-slots 1000 --cluster-yes

群集健康检查
redis-cli --cluster check 127.0.0.1:7000

4、连接群集测试:
$ redis-cli -c -p 7000
-c 群集模式
>set foo bar
>set hello world
>get foo
>get hello

5、手动故障转移
主节点需要更换机器,可以把主切换成从

5.1)使用命令查看节点主从状态
redis-cli -p 7000 cluster nodes
7000(主) 7004(从)
7001(主) 7005(从)
7002(主) 7003(从)

5.2)在从节点7004上执行
redis-cli -p 7000 cluster failover

再查看节点状态,7000变成从,7004变成主

6、添加、删除节点
6.1)添加主节点,新加的主节点是空主节点上边未分槽,需要重新分槽才能做为正式主节点
redis-cli --cluster add-node 127.0.0.1:7006 127.0.0.1:7000
127.0.0.1:7006 新加入节点
127.0.0.1:7000 现有群集任意一个节点
添加从节点时需要 指定 --cluster-slave --cluster-master-id 主节点ID
如果没有--cluster-master-id 主节点ID则加到最少从节点的主节点下
redis-cli --cluster add-node 127.0.0.1:7007 127.0.0.1:7000 --cluster-slave --cluster-master-id 2a78f8eb08fad0365cc2f58fbf23929e85c74ff5

6.2)查看节点信息,可以看到7006已加入,是主节点
redis-cli -p 7000 cluster nodes

6.3)添加主节点需要重新分片
redis-cli --cluster reshard 127.0.0.1:7000

6.4)删除节点
可以直接删除从节点或空的主节点,可以把主节点切换成从节点再删除,或把主节点上槽重新分片到其它主节点上
redis-cli --cluster del-node 127.0.0.1:7000 节点ID
127.0.0.1:7000 现有群集任意一个节点
节点ID 要删除的节点ID

原文地址:https://www.cnblogs.com/xiaomacs/p/11697233.html