Redis cluster -2

目标:测试master down , 是否会有slave节点 替换master

步骤:

对于原本的环境只有2个master节点,暂不支持主从切换(原因后面描述),第一步要做的就是添加节点,添加节点过程异常曲折,最后不得不重新搭建了集群。(参照上一篇blog)

收获:

1 Linux  vi 

dd 删除当前行

u 表示撤销之前操作(和Windows 下 Ctrl+Z 效果一样)

2 redis cluster-config-file

我通过copy 多个文件夹来启动多个节点如  redis_master1 , redis_master2, redis_master3

我在redis_master2/src/的目录下面

扫描二维码关注公众号,回复: 574388 查看本文章

使用如下命令

redis-server /redis_master1/redis.conf 

redis-server /redis_master2/redis.conf

则在redis.conf 中定义的cluster-config-file 都会生成在 /redis_master2/src 目录下面

主从切换的必要条件

判断主节点是否down?

超过半数的master节点 ping-pong 改节点超时,超时是在redis.conf 中 cluster-node-timeout 进行设置的

1 超过半数的master节点存活(例如总共有4个master ,其中2个master 挂掉之后(同时挂掉),集群就失败,无论该master节点是否存在slave)

2 挂掉的master节点必须存在slave节点

以上2点是主从切换的必要条件。

关于挂掉之后的主节点

1 redis-cli 需要先移除失败的节点  ( cluster forget down_master_nodeid)

2 重启 redis 即可

附上cluster 的相关命令(转自 http://hot66hot.iteye.com/blog/2050676)

集群
CLUSTER INFO 打印集群的信息
CLUSTER NODES 列出集群当前已知的所有节点(node),以及这些节点的相关信息。
节点
CLUSTER MEET <ip> <port> 将 ip 和 port 所指定的节点添加到集群当中,让它成为集群的一份子。
CLUSTER FORGET <node_id> 从集群中移除 node_id 指定的节点。
CLUSTER REPLICATE <node_id> 将当前节点设置为 node_id 指定的节点的从节点。
CLUSTER SAVECONFIG 将节点的配置文件保存到硬盘里面。
槽(slot)
CLUSTER ADDSLOTS <slot> [slot ...] 将一个或多个槽(slot)指派(assign)给当前节点。
CLUSTER DELSLOTS <slot> [slot ...] 移除一个或多个槽对当前节点的指派。
CLUSTER FLUSHSLOTS 移除指派给当前节点的所有槽,让当前节点变成一个没有指派任何槽的节点。
CLUSTER SETSLOT <slot> NODE <node_id> 将槽 slot 指派给 node_id 指定的节点,如果槽已经指派给另一个节点,那么先让另一个节点删除该槽>,然后再进行指派。
CLUSTER SETSLOT <slot> MIGRATING <node_id> 将本节点的槽 slot 迁移到 node_id 指定的节点中。
CLUSTER SETSLOT <slot> IMPORTING <node_id> 从 node_id 指定的节点中导入槽 slot 到本节点。
CLUSTER SETSLOT <slot> STABLE 取消对槽 slot 的导入(import)或者迁移(migrate)。
键
CLUSTER KEYSLOT <key> 计算键 key 应该被放置在哪个槽上。
CLUSTER COUNTKEYSINSLOT <slot> 返回槽 slot 目前包含的键值对数量。
CLUSTER GETKEYSINSLOT <slot> <count> 返回 count 个 slot 槽中的键。

猜你喜欢

转载自xyuwe.iteye.com/blog/2164642