51的内容长度限制,这里继续 redis cluster 的简单使用和维护。
7,下面简单测试一下 cluster
7.1 测试数据分布
使用 redis-cli 来测试 cluster shard,可以看到 foo->bar 被存储到了 7002 节点上,并且自动跳转到了 7002 上,然后 7002 上 hello-world 是存储在 7000 上,再次重定向到 7000 节点上了。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
|
7.2 reshard
重新分布,这里测试reshard 1000 个 slots 到 7000 节点的情形:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 |
|
7.3 failover 测试(这里没有做一致性检查,只是看一下是否 master-slave 做了切换)
首先通过 debug segfault 命令停止了 7002 节点(从上面的运行日志中,可以看到该节点为 master 节点)
1 2 3 4 5 6 7 8 9 10 |
|
然后从 cluster nodes 命令输出可以看到 7002 节点 fail,同时它的 slave 7005 节点升级为了 master 节点
1 2 3 4 5 6 7 8 |
|
把 7002 节点再次启动后,7002 节点自动成为了 7005 节点的 slave 节点
1 2 3 4 5 6 7 8 |
|
7.4 新增节点 7.4.1 新增 master 节点 默认是新增一个 master 节点,同样的,这里测试是先新增 7006/ 目录,再编辑 redis.conf 配置文件
在 7006 目录下启动 7006 节点 redis-server redis.conf
下面通过 redis-trib 工具在当前的 cluster 中新增 7006 节点
1 2 3 4 5 6 7 8 9 |
|
此时,7006 节点已经加入 cluster,可以接收客户端的指令,并执行 redirection 7.4.2 新增 slave 节点 有两种方式来添加 slave 节点: 1) 通过 --slave 选项添加 slave 节点,这里以新增的 7007 节点作为 7005(当前已经为master节点)的 slave 节点为例
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 |
|
2) 通过 cluster replicate 命令来添加 slave 节点,如下:
1 2 |
|
---------
7.4 删除节点 7.4.1 删除 slave 节点 对于删除 slave 节点,可以直接使用 redis-trib 的 del-node 命令来删除,如:1 |
|
node-id 为待删除的slave节点的 NodeID。 7.4.2 删除 master 节点 也可以使用 del-node 命令来删除 master 节点,但是必须为空,因此需要在删除 master 节点之前先通过 reshard 将数据迁移至其他的 master 节点上。 当然也可以使用上面的 CLUSTER FAILOVER 命令来删除 master 节点,并选择一个 slave 作为新的 master 节点。