一、源码安装
预先安装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 installhtml
若是须要使用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/node
二、配置
复制源码中redis.conf到/etc/redis/7000.conf 7001.conf ... 7005.confredis
检查如下配置参数:
port 7000
cluster-enabled yes
cluster-config-file nodes.conf
cluster-node-timeout 5000
appendonly yesapp
三、建立群集
检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.net
从新分片
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-yesunix
群集健康检查
redis-cli --cluster check 127.0.0.1:7000htm
四、链接群集测试:
$ redis-cli -c -p 7000
-c 群集模式
>set foo bar
>set hello world
>get foo
>get helloget
五、手动故障转移
主节点须要更换机器,能够把主切换成从源码
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.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 节点ID127.0.0.1:7000 现有群集任意一个节点节点ID 要删除的节点ID