Redis集群管理

原文链接:http://blog.youkuaiyun.com/xyang81/article/details/51895011

在上一篇《Redis3.2集群担建与验证》文章中分享了集群的详细担建过程,本篇主要分享集群管理的常见操作,如:添加节点、删除节点、slot分配。如果你还没有担建集群环境,建议先看上篇《Redis3.2集群担建与验证》过程,再来阅读本文比较好理解。

1、集群管理常用命令

<code class="hljs r has-numbering" style="display: block; padding: 0px; color: inherit; box-sizing: border-box; font-family: 'Source Code Pro', monospace;font-size:undefined; white-space: pre; border-radius: 0px; word-wrap: normal; background: transparent;">// 集群(cluster)  
CLUSTER INFO                                打印集群的状态信息  
CLUSTER NODES                               列出集群当前已知的所有节点(node),以及这些节点的相关信息 

// 节点(node)  
CLUSTER MEET <ip> <port>                    将ip和port所指定的节点添加到集群当中,让它成为集群的一份子
CLUSTER FORGET <node_id>                    从集群中移除node_id指定的节点
CLUSTER REPLICATE <node_id>                 将当前节点设置为node_id指定节点的从节点
CLUSTER SAVECONFIG                          将当前节点的配置信息手动保存到硬盘(nodes-port.conf) 
CLUSTER SLAVES <master_node_id>             查询指定的master_node_id主节点有哪些从(slave)节点

// 槽(slot)  
CLUSTER ADDSLOTS <slot> [slot <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">...</span>]          将一个或多个槽(slot)指派(assign)给当前节点
CLUSTER DELSLOTS <slot> [slot <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">...</span>]          将一个或多个槽从当前节点移除
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 SLOTS                               查看槽(slot)在集群中的分配情况

// 键 (key)  
CLUSTER KEYSLOT <key>                       计算键key应该被分配在哪个槽上  
CLUSTER COUNTKEYSINSLOT <slot>              返回指定槽(slot)保存key的数量  
CLUSTER GETKEYSINSLOT <slot> <count>        获取指定槽(slot)中count个key,如果指定槽中大于count个key,则只返回前cout个key,小于或为空,则返回最多数量的key </code><ul class="pre-numbering" style="box-sizing: border-box; position: absolute; width: 50px; top: 0px; left: 0px; margin: 0px; padding: 6px 0px 40px; border-right-width: 1px; border-right-style: solid; border-right-color: rgb(221, 221, 221); list-style: none; text-align: right; background-color: rgb(238, 238, 238);"><li style="box-sizing: border-box; padding: 0px 5px;">1</li><li style="box-sizing: border-box; padding: 0px 5px;">2</li><li style="box-sizing: border-box; padding: 0px 5px;">3</li><li style="box-sizing: border-box; padding: 0px 5px;">4</li><li style="box-sizing: border-box; padding: 0px 5px;">5</li><li style="box-sizing: border-box; padding: 0px 5px;">6</li><li style="box-sizing: border-box; padding: 0px 5px;">7</li><li style="box-sizing: border-box; padding: 0px 5px;">8</li><li style="box-sizing: border-box; padding: 0px 5px;">9</li><li style="box-sizing: border-box; padding: 0px 5px;">10</li><li style="box-sizing: border-box; padding: 0px 5px;">11</li><li style="box-sizing: border-box; padding: 0px 5px;">12</li><li style="box-sizing: border-box; padding: 0px 5px;">13</li><li style="box-sizing: border-box; padding: 0px 5px;">14</li><li style="box-sizing: border-box; padding: 0px 5px;">15</li><li style="box-sizing: border-box; padding: 0px 5px;">16</li><li style="box-sizing: border-box; padding: 0px 5px;">17</li><li style="box-sizing: border-box; padding: 0px 5px;">18</li><li style="box-sizing: border-box; padding: 0px 5px;">19</li><li style="box-sizing: border-box; padding: 0px 5px;">20</li><li style="box-sizing: border-box; padding: 0px 5px;">21</li><li style="box-sizing: border-box; padding: 0px 5px;">22</li><li style="box-sizing: border-box; padding: 0px 5px;">23</li><li style="box-sizing: border-box; padding: 0px 5px;">24</li><li style="box-sizing: border-box; padding: 0px 5px;">25</li></ul><ul class="pre-numbering" style="box-sizing: border-box; position: absolute; width: 50px; top: 0px; left: 0px; margin: 0px; padding: 6px 0px 40px; border-right-width: 1px; border-right-style: solid; border-right-color: rgb(221, 221, 221); list-style: none; text-align: right; background-color: rgb(238, 238, 238);"><li style="box-sizing: border-box; padding: 0px 5px;">1</li><li style="box-sizing: border-box; padding: 0px 5px;">2</li><li style="box-sizing: border-box; padding: 0px 5px;">3</li><li style="box-sizing: border-box; padding: 0px 5px;">4</li><li style="box-sizing: border-box; padding: 0px 5px;">5</li><li style="box-sizing: border-box; padding: 0px 5px;">6</li><li style="box-sizing: border-box; padding: 0px 5px;">7</li><li style="box-sizing: border-box; padding: 0px 5px;">8</li><li style="box-sizing: border-box; padding: 0px 5px;">9</li><li style="box-sizing: border-box; padding: 0px 5px;">10</li><li style="box-sizing: border-box; padding: 0px 5px;">11</li><li style="box-sizing: border-box; padding: 0px 5px;">12</li><li style="box-sizing: border-box; padding: 0px 5px;">13</li><li style="box-sizing: border-box; padding: 0px 5px;">14</li><li style="box-sizing: border-box; padding: 0px 5px;">15</li><li style="box-sizing: border-box; padding: 0px 5px;">16</li><li style="box-sizing: border-box; padding: 0px 5px;">17</li><li style="box-sizing: border-box; padding: 0px 5px;">18</li><li style="box-sizing: border-box; padding: 0px 5px;">19</li><li style="box-sizing: border-box; padding: 0px 5px;">20</li><li style="box-sizing: border-box; padding: 0px 5px;">21</li><li style="box-sizing: border-box; padding: 0px 5px;">22</li><li style="box-sizing: border-box; padding: 0px 5px;">23</li><li style="box-sizing: border-box; padding: 0px 5px;">24</li><li style="box-sizing: border-box; padding: 0px 5px;">25</li></ul>

以上命令是集群特有的,必须登录到Redis集群才能使用。注释中提到的当前节点,指登录到集群中指定的节点。如:redis-cli -h 192.168.0.201 -p 6379,当前登录的节点就是192.168.0.201:6379。 
更多集群管理命令请参考官网:http://redis.io/commands/cluster-addslots

<code class="hljs css has-numbering" style="display: block; padding: 0px; color: inherit; box-sizing: border-box; font-family: 'Source Code Pro', monospace;font-size:undefined; white-space: pre; border-radius: 0px; word-wrap: normal; background: transparent;"><span class="hljs-tag" style="color: rgb(0, 0, 0); box-sizing: border-box;">shell</span>> <span class="hljs-tag" style="color: rgb(0, 0, 0); box-sizing: border-box;">redis-cli</span> <span class="hljs-tag" style="color: rgb(0, 0, 0); box-sizing: border-box;">-c</span> <span class="hljs-tag" style="color: rgb(0, 0, 0); box-sizing: border-box;">-h</span> 192<span class="hljs-class" style="box-sizing: border-box; color: rgb(155, 112, 63);">.168</span><span class="hljs-class" style="box-sizing: border-box; color: rgb(155, 112, 63);">.0</span><span class="hljs-class" style="box-sizing: border-box; color: rgb(155, 112, 63);">.201</span> <span class="hljs-tag" style="color: rgb(0, 0, 0); box-sizing: border-box;">-p</span> 6379
127<span class="hljs-class" style="box-sizing: border-box; color: rgb(155, 112, 63);">.0</span><span class="hljs-class" style="box-sizing: border-box; color: rgb(155, 112, 63);">.0</span><span class="hljs-class" style="box-sizing: border-box; color: rgb(155, 112, 63);">.1</span><span class="hljs-pseudo" style="color: rgb(0, 0, 0); box-sizing: border-box;">:6379</span>> <span class="hljs-tag" style="color: rgb(0, 0, 0); box-sizing: border-box;">cluster</span> <span class="hljs-tag" style="color: rgb(0, 0, 0); box-sizing: border-box;">nodes</span>
459<span class="hljs-tag" style="color: rgb(0, 0, 0); box-sizing: border-box;">dbcccc1e5be021f19efde794b9e84474c0c02</span> 192<span class="hljs-class" style="box-sizing: border-box; color: rgb(155, 112, 63);">.168</span><span class="hljs-class" style="box-sizing: border-box; color: rgb(155, 112, 63);">.0</span><span class="hljs-class" style="box-sizing: border-box; color: rgb(155, 112, 63);">.202</span><span class="hljs-pseudo" style="color: rgb(0, 0, 0); box-sizing: border-box;">:16379</span> <span class="hljs-tag" style="color: rgb(0, 0, 0); box-sizing: border-box;">slave</span> <span class="hljs-tag" style="color: rgb(0, 0, 0); box-sizing: border-box;">b6814c717080de33907e6f769e1fd8dc4fe53c38</span> 0 1468339459776 11 <span class="hljs-tag" style="color: rgb(0, 0, 0); box-sizing: border-box;">connected</span>
06023<span class="hljs-tag" style="color: rgb(0, 0, 0); box-sizing: border-box;">f8283389ad5580c782797f49a5996c108b3</span> 192<span class="hljs-class" style="box-sizing: border-box; color: rgb(155, 112, 63);">.168</span><span class="hljs-class" style="box-sizing: border-box; color: rgb(155, 112, 63);">.0</span><span class="hljs-class" style="box-sizing: border-box; color: rgb(155, 112, 63);">.201</span><span class="hljs-pseudo" style="color: rgb(0, 0, 0); box-sizing: border-box;">:6379</span> <span class="hljs-tag" style="color: rgb(0, 0, 0); box-sizing: border-box;">myself</span>,<span class="hljs-tag" style="color: rgb(0, 0, 0); box-sizing: border-box;">master</span> <span class="hljs-tag" style="color: rgb(0, 0, 0); box-sizing: border-box;">-</span> 0 0 10 <span class="hljs-tag" style="color: rgb(0, 0, 0); box-sizing: border-box;">connected</span> 500<span class="hljs-tag" style="color: rgb(0, 0, 0); box-sizing: border-box;">-11255</span>
91179<span class="hljs-tag" style="color: rgb(0, 0, 0); box-sizing: border-box;">b96d9b8abce85fa7a5748aa9b4114f0b260</span> 192<span class="hljs-class" style="box-sizing: border-box; color: rgb(155, 112, 63);">.168</span><span class="hljs-class" style="box-sizing: border-box; color: rgb(155, 112, 63);">.0</span><span class="hljs-class" style="box-sizing: border-box; color: rgb(155, 112, 63);">.202</span><span class="hljs-pseudo" style="color: rgb(0, 0, 0); box-sizing: border-box;">:16380</span> <span class="hljs-tag" style="color: rgb(0, 0, 0); box-sizing: border-box;">slave</span> 06023<span class="hljs-tag" style="color: rgb(0, 0, 0); box-sizing: border-box;">f8283389ad5580c782797f49a5996c108b3</span> 0 1468339462797 10 <span class="hljs-tag" style="color: rgb(0, 0, 0); box-sizing: border-box;">connected</span>
<span class="hljs-tag" style="color: rgb(0, 0, 0); box-sizing: border-box;">ef8a49e5242c791551f1b317d5039144e38acde6</span> 192<span class="hljs-class" style="box-sizing: border-box; color: rgb(155, 112, 63);">.168</span><span class="hljs-class" style="box-sizing: border-box; color: rgb(155, 112, 63);">.0</span><span class="hljs-class" style="box-sizing: border-box; color: rgb(155, 112, 63);">.201</span><span class="hljs-pseudo" style="color: rgb(0, 0, 0); box-sizing: border-box;">:6380</span> <span class="hljs-tag" style="color: rgb(0, 0, 0); box-sizing: border-box;">slave</span> 13567<span class="hljs-tag" style="color: rgb(0, 0, 0); box-sizing: border-box;">f6f8787d3aa3f4ef3abd15c2cc500a1469b</span> 0 1468339466819 8 <span class="hljs-tag" style="color: rgb(0, 0, 0); box-sizing: border-box;">connected</span>
<span class="hljs-tag" style="color: rgb(0, 0, 0); box-sizing: border-box;">b6814c717080de33907e6f769e1fd8dc4fe53c38</span> 192<span class="hljs-class" style="box-sizing: border-box; color: rgb(155, 112, 63);">.168</span><span class="hljs-class" style="box-sizing: border-box; color: rgb(155, 112, 63);">.0</span><span class="hljs-class" style="box-sizing: border-box; color: rgb(155, 112, 63);">.201</span><span class="hljs-pseudo" style="color: rgb(0, 0, 0); box-sizing: border-box;">:6381</span> <span class="hljs-tag" style="color: rgb(0, 0, 0); box-sizing: border-box;">master</span> <span class="hljs-tag" style="color: rgb(0, 0, 0); box-sizing: border-box;">-</span> 0 1468339465813 11 <span class="hljs-tag" style="color: rgb(0, 0, 0); box-sizing: border-box;">connected</span> 0<span class="hljs-tag" style="color: rgb(0, 0, 0); box-sizing: border-box;">-499</span>
13567<span class="hljs-tag" style="color: rgb(0, 0, 0); box-sizing: border-box;">f6f8787d3aa3f4ef3abd15c2cc500a1469b</span> 192<span class="hljs-class" style="box-sizing: border-box; color: rgb(155, 112, 63);">.168</span><span class="hljs-class" style="box-sizing: border-box; color: rgb(155, 112, 63);">.0</span><span class="hljs-class" style="box-sizing: border-box; color: rgb(155, 112, 63);">.202</span><span class="hljs-pseudo" style="color: rgb(0, 0, 0); box-sizing: border-box;">:16381</span> <span class="hljs-tag" style="color: rgb(0, 0, 0); box-sizing: border-box;">master</span> <span class="hljs-tag" style="color: rgb(0, 0, 0); box-sizing: border-box;">-</span> 0 1468339463802 8 <span class="hljs-tag" style="color: rgb(0, 0, 0); box-sizing: border-box;">connected</span> 11256<span class="hljs-tag" style="color: rgb(0, 0, 0); box-sizing: border-box;">-16383</span></code><ul class="pre-numbering" style="box-sizing: border-box; position: absolute; width: 50px; top: 0px; left: 0px; margin: 0px; padding: 6px 0px 40px; border-right-width: 1px; border-right-style: solid; border-right-color: rgb(221, 221, 221); list-style: none; text-align: right; background-color: rgb(238, 238, 238);"><li style="box-sizing: border-box; padding: 0px 5px;">1</li><li style="box-sizing: border-box; padding: 0px 5px;">2</li><li style="box-sizing: border-box; padding: 0px 5px;">3</li><li style="box-sizing: border-box; padding: 0px 5px;">4</li><li style="box-sizing: border-box; padding: 0px 5px;">5</li><li style="box-sizing: border-box; padding: 0px 5px;">6</li><li style="box-sizing: border-box; padding: 0px 5px;">7</li><li style="box-sizing: border-box; padding: 0px 5px;">8</li></ul><ul class="pre-numbering" style="box-sizing: border-box; position: absolute; width: 50px; top: 0px; left: 0px; margin: 0px; padding: 6px 0px 40px; border-right-width: 1px; border-right-style: solid; border-right-color: rgb(221, 221, 221); list-style: none; text-align: right; background-color: rgb(238, 238, 238);"><li style="box-sizing: border-box; padding: 0px 5px;">1</li><li style="box-sizing: border-box; padding: 0px 5px;">2</li><li style="box-sizing: border-box; padding: 0px 5px;">3</li><li style="box-sizing: border-box; padding: 0px 5px;">4</li><li style="box-sizing: border-box; padding: 0px 5px;">5</li><li style="box-sizing: border-box; padding: 0px 5px;">6</li><li style="box-sizing: border-box; padding: 0px 5px;">7</li><li style="box-sizing: border-box; padding: 0px 5px;">8</li></ul>

2、添加节点

添加一对(一主一从)新的节点加入到集群当中:192.168.0.201:6382(Master)和192.168.0.201:6383(Slave),文中简称201:6381和201:16382。节点添加方式请参考《Redis3.2集群担建与验证》

1> 添加master节点

<code class="hljs css has-numbering" style="display: block; padding: 0px; color: inherit; box-sizing: border-box; font-family: 'Source Code Pro', monospace;font-size:undefined; white-space: pre; border-radius: 0px; word-wrap: normal; background: transparent;"><span class="hljs-tag" style="color: rgb(0, 0, 0); box-sizing: border-box;">shell</span>> <span class="hljs-tag" style="color: rgb(0, 0, 0); box-sizing: border-box;">redis-trib</span><span class="hljs-class" style="box-sizing: border-box; color: rgb(155, 112, 63);">.rb</span> <span class="hljs-tag" style="color: rgb(0, 0, 0); box-sizing: border-box;">add-node</span> 192<span class="hljs-class" style="box-sizing: border-box; color: rgb(155, 112, 63);">.168</span><span class="hljs-class" style="box-sizing: border-box; color: rgb(155, 112, 63);">.0</span><span class="hljs-class" style="box-sizing: border-box; color: rgb(155, 112, 63);">.201</span><span class="hljs-pseudo" style="color: rgb(0, 0, 0); box-sizing: border-box;">:6382</span> 192<span class="hljs-class" style="box-sizing: border-box; color: rgb(155, 112, 63);">.168</span><span class="hljs-class" style="box-sizing: border-box; color: rgb(155, 112, 63);">.0</span><span class="hljs-class" style="box-sizing: border-box; color: rgb(155, 112, 63);">.201</span><span class="hljs-pseudo" style="color: rgb(0, 0, 0); box-sizing: border-box;">:6379</span></code><ul class="pre-numbering" style="box-sizing: border-box; position: absolute; width: 50px; top: 0px; left: 0px; margin: 0px; padding: 6px 0px 40px; border-right-width: 1px; border-right-style: solid; border-right-color: rgb(221, 221, 221); list-style: none; text-align: right; background-color: rgb(238, 238, 238);"><li style="box-sizing: border-box; padding: 0px 5px;">1</li></ul><ul class="pre-numbering" style="box-sizing: border-box; position: absolute; width: 50px; top: 0px; left: 0px; margin: 0px; padding: 6px 0px 40px; border-right-width: 1px; border-right-style: solid; border-right-color: rgb(221, 221, 221); list-style: none; text-align: right; background-color: rgb(238, 238, 238);"><li style="box-sizing: border-box; padding: 0px 5px;">1</li></ul>

参数说明: 
192.168.0.201:6382:新节点 
192.168.0.201:6379:可以是集群中的任意一个节点(这里以201:6379为例)

注意: 
1> 新的节点必须开启了集群配置 
2> 新的节点必须已启动 
如果不同时满足以上两点,将无法加入到集群中。成功加入集群后,会打印如下信息: 
添加新的master节点

2> 为master节点分配slot

当往Redis集群中存储一份数据时,redis根据key的hash值对16384(slot)取模,算出负责指定slot范围内的某个节点来存储这个key。集群在第一次创建的时候,会给每个master节点在16384个slot中平均分配相应的slot数量,而后面新加入的master节点默认是不会分配slot的。所以我们需要手动为新加入的节点分配一定范围的slot,以便集群在存取数据的时候,能够找到这个新加入的节点。

<code class="hljs r has-numbering" style="display: block; padding: 0px; color: inherit; box-sizing: border-box; font-family: 'Source Code Pro', monospace;font-size:undefined; white-space: pre; border-radius: 0px; word-wrap: normal; background: transparent;">[root@localhost redis-<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">3.2</span><span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">.0</span>]<span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;"># redis-cli cluster nodes</span>
901cade1bc2703ef2bb4ff49466b38762346755d <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">192.168</span><span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">.0</span><span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">.201</span>:<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">6382</span> master - <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">0</span> <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">1468324422110</span> <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">0</span> connected
06023f8283389ad5580c782797f49a5996c108b3 <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">192.168</span><span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">.0</span><span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">.201</span>:<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">6379</span> myself,master - <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">0</span> <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">0</span> <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">1</span> connected <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">0</span>-<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">5460</span>
<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">...</span></code><ul class="pre-numbering" style="box-sizing: border-box; position: absolute; width: 50px; top: 0px; left: 0px; margin: 0px; padding: 6px 0px 40px; border-right-width: 1px; border-right-style: solid; border-right-color: rgb(221, 221, 221); list-style: none; text-align: right; background-color: rgb(238, 238, 238);"><li style="box-sizing: border-box; padding: 0px 5px;">1</li><li style="box-sizing: border-box; padding: 0px 5px;">2</li><li style="box-sizing: border-box; padding: 0px 5px;">3</li><li style="box-sizing: border-box; padding: 0px 5px;">4</li></ul><ul class="pre-numbering" style="box-sizing: border-box; position: absolute; width: 50px; top: 0px; left: 0px; margin: 0px; padding: 6px 0px 40px; border-right-width: 1px; border-right-style: solid; border-right-color: rgb(221, 221, 221); list-style: none; text-align: right; background-color: rgb(238, 238, 238);"><li style="box-sizing: border-box; padding: 0px 5px;">1</li><li style="box-sizing: border-box; padding: 0px 5px;">2</li><li style="box-sizing: border-box; padding: 0px 5px;">3</li><li style="box-sizing: border-box; padding: 0px 5px;">4</li></ul>

sloat范围显示在节点状态(connected)后边,从上可以看出,新加入的节点201:6382是没有分配slot的,所以为空。而为201:6379节点分配了0-5460范围的slot。 
为新节点分配slot的原理是从其它主节点中负责的slot中,各移出一部份 
slot给新的节点。下面为201:6382分配slot:

<code class="hljs css has-numbering" style="display: block; padding: 0px; color: inherit; box-sizing: border-box; font-family: 'Source Code Pro', monospace;font-size:undefined; white-space: pre; border-radius: 0px; word-wrap: normal; background: transparent;"><span class="hljs-tag" style="color: rgb(0, 0, 0); box-sizing: border-box;">shell</span>> <span class="hljs-tag" style="color: rgb(0, 0, 0); box-sizing: border-box;">redis-trib</span><span class="hljs-class" style="box-sizing: border-box; color: rgb(155, 112, 63);">.rb</span> <span class="hljs-tag" style="color: rgb(0, 0, 0); box-sizing: border-box;">reshard</span> 192<span class="hljs-class" style="box-sizing: border-box; color: rgb(155, 112, 63);">.168</span><span class="hljs-class" style="box-sizing: border-box; color: rgb(155, 112, 63);">.0</span><span class="hljs-class" style="box-sizing: border-box; color: rgb(155, 112, 63);">.201</span><span class="hljs-pseudo" style="color: rgb(0, 0, 0); box-sizing: border-box;">:6382</span></code><ul class="pre-numbering" style="box-sizing: border-box; position: absolute; width: 50px; top: 0px; left: 0px; margin: 0px; padding: 6px 0px 40px; border-right-width: 1px; border-right-style: solid; border-right-color: rgb(221, 221, 221); list-style: none; text-align: right; background-color: rgb(238, 238, 238);"><li style="box-sizing: border-box; padding: 0px 5px;">1</li></ul><ul class="pre-numbering" style="box-sizing: border-box; position: absolute; width: 50px; top: 0px; left: 0px; margin: 0px; padding: 6px 0px 40px; border-right-width: 1px; border-right-style: solid; border-right-color: rgb(221, 221, 221); list-style: none; text-align: right; background-color: rgb(238, 238, 238);"><li style="box-sizing: border-box; padding: 0px 5px;">1</li></ul>

为新master节点分配slot过程 
注意上图中红框部份: 
1> 1000 : 为新的master节点分配1000个slot 
2> 901cade1bc2703ef2bb4ff49466b38762346755d:接收1000个slot的master节点ID 
3> 选择从哪些主节点移动slot到新加入的主节点中: 
* all:表示从集群中所有master节点中各移动一部份slot,凑够1000个slot为止 
* 选择输入一个或多个master的node_id来从中移动,最后输入done完成选择 
4> yes:执行slot移动操作,输入no表示终止操作。 
下面看下新的集群节点及slot分布情况:

<code class="hljs css has-numbering" style="display: block; padding: 0px; color: inherit; box-sizing: border-box; font-family: 'Source Code Pro', monospace;font-size:undefined; white-space: pre; border-radius: 0px; word-wrap: normal; background: transparent;"><span class="hljs-attr_selector" style="color: rgb(0, 136, 0); box-sizing: border-box;">[root@localhost redis-3.2.0]</span># <span class="hljs-tag" style="color: rgb(0, 0, 0); box-sizing: border-box;">redis-cli</span> <span class="hljs-tag" style="color: rgb(0, 0, 0); box-sizing: border-box;">cluster</span> <span class="hljs-tag" style="color: rgb(0, 0, 0); box-sizing: border-box;">nodes</span>
901<span class="hljs-tag" style="color: rgb(0, 0, 0); box-sizing: border-box;">cade1bc2703ef2bb4ff49466b38762346755d</span> 192<span class="hljs-class" style="box-sizing: border-box; color: rgb(155, 112, 63);">.168</span><span class="hljs-class" style="box-sizing: border-box; color: rgb(155, 112, 63);">.0</span><span class="hljs-class" style="box-sizing: border-box; color: rgb(155, 112, 63);">.201</span><span class="hljs-pseudo" style="color: rgb(0, 0, 0); box-sizing: border-box;">:6382</span> <span class="hljs-tag" style="color: rgb(0, 0, 0); box-sizing: border-box;">master</span> <span class="hljs-tag" style="color: rgb(0, 0, 0); box-sizing: border-box;">-</span> 0 1468325773988 9 <span class="hljs-tag" style="color: rgb(0, 0, 0); box-sizing: border-box;">connected</span> 0<span class="hljs-tag" style="color: rgb(0, 0, 0); box-sizing: border-box;">-332</span> 5461<span class="hljs-tag" style="color: rgb(0, 0, 0); box-sizing: border-box;">-5794</span> 10923<span class="hljs-tag" style="color: rgb(0, 0, 0); box-sizing: border-box;">-11255</span>
459<span class="hljs-tag" style="color: rgb(0, 0, 0); box-sizing: border-box;">dbcccc1e5be021f19efde794b9e84474c0c02</span> 192<span class="hljs-class" style="box-sizing: border-box; color: rgb(155, 112, 63);">.168</span><span class="hljs-class" style="box-sizing: border-box; color: rgb(155, 112, 63);">.0</span><span class="hljs-class" style="box-sizing: border-box; color: rgb(155, 112, 63);">.202</span><span class="hljs-pseudo" style="color: rgb(0, 0, 0); box-sizing: border-box;">:16379</span> <span class="hljs-tag" style="color: rgb(0, 0, 0); box-sizing: border-box;">slave</span> <span class="hljs-tag" style="color: rgb(0, 0, 0); box-sizing: border-box;">b6814c717080de33907e6f769e1fd8dc4fe53c38</span> 0 1468325769968 7 <span class="hljs-tag" style="color: rgb(0, 0, 0); box-sizing: border-box;">connected</span>
06023<span class="hljs-tag" style="color: rgb(0, 0, 0); box-sizing: border-box;">f8283389ad5580c782797f49a5996c108b3</span> 192<span class="hljs-class" style="box-sizing: border-box; color: rgb(155, 112, 63);">.168</span><span class="hljs-class" style="box-sizing: border-box; color: rgb(155, 112, 63);">.0</span><span class="hljs-class" style="box-sizing: border-box; color: rgb(155, 112, 63);">.201</span><span class="hljs-pseudo" style="color: rgb(0, 0, 0); box-sizing: border-box;">:6379</span> <span class="hljs-tag" style="color: rgb(0, 0, 0); box-sizing: border-box;">myself</span>,<span class="hljs-tag" style="color: rgb(0, 0, 0); box-sizing: border-box;">master</span> <span class="hljs-tag" style="color: rgb(0, 0, 0); box-sizing: border-box;">-</span> 0 0 1 <span class="hljs-tag" style="color: rgb(0, 0, 0); box-sizing: border-box;">connected</span> 333<span class="hljs-tag" style="color: rgb(0, 0, 0); box-sizing: border-box;">-5460</span>
91179<span class="hljs-tag" style="color: rgb(0, 0, 0); box-sizing: border-box;">b96d9b8abce85fa7a5748aa9b4114f0b260</span> 192<span class="hljs-class" style="box-sizing: border-box; color: rgb(155, 112, 63);">.168</span><span class="hljs-class" style="box-sizing: border-box; color: rgb(155, 112, 63);">.0</span><span class="hljs-class" style="box-sizing: border-box; color: rgb(155, 112, 63);">.202</span><span class="hljs-pseudo" style="color: rgb(0, 0, 0); box-sizing: border-box;">:16380</span> <span class="hljs-tag" style="color: rgb(0, 0, 0); box-sizing: border-box;">slave</span> 06023<span class="hljs-tag" style="color: rgb(0, 0, 0); box-sizing: border-box;">f8283389ad5580c782797f49a5996c108b3</span> 0 1468325775495 5 <span class="hljs-tag" style="color: rgb(0, 0, 0); box-sizing: border-box;">connected</span>
<span class="hljs-tag" style="color: rgb(0, 0, 0); box-sizing: border-box;">ef8a49e5242c791551f1b317d5039144e38acde6</span> 192<span class="hljs-class" style="box-sizing: border-box; color: rgb(155, 112, 63);">.168</span><span class="hljs-class" style="box-sizing: border-box; color: rgb(155, 112, 63);">.0</span><span class="hljs-class" style="box-sizing: border-box; color: rgb(155, 112, 63);">.201</span><span class="hljs-pseudo" style="color: rgb(0, 0, 0); box-sizing: border-box;">:6380</span> <span class="hljs-tag" style="color: rgb(0, 0, 0); box-sizing: border-box;">slave</span> 13567<span class="hljs-tag" style="color: rgb(0, 0, 0); box-sizing: border-box;">f6f8787d3aa3f4ef3abd15c2cc500a1469b</span> 0 1468325772982 8 <span class="hljs-tag" style="color: rgb(0, 0, 0); box-sizing: border-box;">connected</span>
<span class="hljs-tag" style="color: rgb(0, 0, 0); box-sizing: border-box;">b6814c717080de33907e6f769e1fd8dc4fe53c38</span> 192<span class="hljs-class" style="box-sizing: border-box; color: rgb(155, 112, 63);">.168</span><span class="hljs-class" style="box-sizing: border-box; color: rgb(155, 112, 63);">.0</span><span class="hljs-class" style="box-sizing: border-box; color: rgb(155, 112, 63);">.201</span><span class="hljs-pseudo" style="color: rgb(0, 0, 0); box-sizing: border-box;">:6381</span> <span class="hljs-tag" style="color: rgb(0, 0, 0); box-sizing: border-box;">master</span> <span class="hljs-tag" style="color: rgb(0, 0, 0); box-sizing: border-box;">-</span> 0 1468325771976 7 <span class="hljs-tag" style="color: rgb(0, 0, 0); box-sizing: border-box;">connected</span> 5795<span class="hljs-tag" style="color: rgb(0, 0, 0); box-sizing: border-box;">-10922</span>
13567<span class="hljs-tag" style="color: rgb(0, 0, 0); box-sizing: border-box;">f6f8787d3aa3f4ef3abd15c2cc500a1469b</span> 192<span class="hljs-class" style="box-sizing: border-box; color: rgb(155, 112, 63);">.168</span><span class="hljs-class" style="box-sizing: border-box; color: rgb(155, 112, 63);">.0</span><span class="hljs-class" style="box-sizing: border-box; color: rgb(155, 112, 63);">.202</span><span class="hljs-pseudo" style="color: rgb(0, 0, 0); box-sizing: border-box;">:16381</span> <span class="hljs-tag" style="color: rgb(0, 0, 0); box-sizing: border-box;">master</span> <span class="hljs-tag" style="color: rgb(0, 0, 0); box-sizing: border-box;">-</span> 0 1468325774992 8 <span class="hljs-tag" style="color: rgb(0, 0, 0); box-sizing: border-box;">connected</span> 11256<span class="hljs-tag" style="color: rgb(0, 0, 0); box-sizing: border-box;">-16383</span></code><ul class="pre-numbering" style="box-sizing: border-box; position: absolute; width: 50px; top: 0px; left: 0px; margin: 0px; padding: 6px 0px 40px; border-right-width: 1px; border-right-style: solid; border-right-color: rgb(221, 221, 221); list-style: none; text-align: right; background-color: rgb(238, 238, 238);"><li style="box-sizing: border-box; padding: 0px 5px;">1</li><li style="box-sizing: border-box; padding: 0px 5px;">2</li><li style="box-sizing: border-box; padding: 0px 5px;">3</li><li style="box-sizing: border-box; padding: 0px 5px;">4</li><li style="box-sizing: border-box; padding: 0px 5px;">5</li><li style="box-sizing: border-box; padding: 0px 5px;">6</li><li style="box-sizing: border-box; padding: 0px 5px;">7</li><li style="box-sizing: border-box; padding: 0px 5px;">8</li></ul><ul class="pre-numbering" style="box-sizing: border-box; position: absolute; width: 50px; top: 0px; left: 0px; margin: 0px; padding: 6px 0px 40px; border-right-width: 1px; border-right-style: solid; border-right-color: rgb(221, 221, 221); list-style: none; text-align: right; background-color: rgb(238, 238, 238);"><li style="box-sizing: border-box; padding: 0px 5px;">1</li><li style="box-sizing: border-box; padding: 0px 5px;">2</li><li style="box-sizing: border-box; padding: 0px 5px;">3</li><li style="box-sizing: border-box; padding: 0px 5px;">4</li><li style="box-sizing: border-box; padding: 0px 5px;">5</li><li style="box-sizing: border-box; padding: 0px 5px;">6</li><li style="box-sizing: border-box; padding: 0px 5px;">7</li><li style="box-sizing: border-box; padding: 0px 5px;">8</li></ul>

已经成功为201:6382节点分配了0-332、5461-5794、10923-11255范围的slot,可以看出redis从其它三个master节点中均匀的移动了一部份slot到201:6382中。

3> 添加slave节点

下面为201:6382 master节点添加一个slave节点201:6383

<code class="hljs livecodeserver has-numbering" style="display: block; padding: 0px; color: inherit; box-sizing: border-box; font-family: 'Source Code Pro', monospace;font-size:undefined; white-space: pre; border-radius: 0px; word-wrap: normal; background: transparent;"><span class="hljs-built_in" style="color: rgb(102, 0, 102); box-sizing: border-box;">shell</span>> redis-trib.rb <span class="hljs-built_in" style="color: rgb(102, 0, 102); box-sizing: border-box;">add</span>-node <span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">--slave --master-id 901cade1bc2703ef2bb4ff49466b38762346755d 192.168.0.201:6383 192.168.0.201:6379</span></code><ul class="pre-numbering" style="box-sizing: border-box; position: absolute; width: 50px; top: 0px; left: 0px; margin: 0px; padding: 6px 0px 40px; border-right-width: 1px; border-right-style: solid; border-right-color: rgb(221, 221, 221); list-style: none; text-align: right; background-color: rgb(238, 238, 238);"><li style="box-sizing: border-box; padding: 0px 5px;">1</li></ul><ul class="pre-numbering" style="box-sizing: border-box; position: absolute; width: 50px; top: 0px; left: 0px; margin: 0px; padding: 6px 0px 40px; border-right-width: 1px; border-right-style: solid; border-right-color: rgb(221, 221, 221); list-style: none; text-align: right; background-color: rgb(238, 238, 238);"><li style="box-sizing: border-box; padding: 0px 5px;">1</li></ul>

参数说明: 
1> –slave:表示添加从节点 
2> –master-id:master节点ID,这里用上边新添加的主节点ID(201:6382) 
3> 192.168.0.201:6383:新slave节点的IP和端口 
4> 192.168.0.201:6379:集群中任意旧节点,只要能连上就可以。这里以201:6379为例

添加slave节点成功后集群中的节点状态:

<code class="hljs css has-numbering" style="display: block; padding: 0px; color: inherit; box-sizing: border-box; font-family: 'Source Code Pro', monospace;font-size:undefined; white-space: pre; border-radius: 0px; word-wrap: normal; background: transparent;"><span class="hljs-attr_selector" style="color: rgb(0, 136, 0); box-sizing: border-box;">[root@localhost redis-3.2.0]</span># <span class="hljs-tag" style="color: rgb(0, 0, 0); box-sizing: border-box;">redis-cli</span> <span class="hljs-tag" style="color: rgb(0, 0, 0); box-sizing: border-box;">cluster</span> <span class="hljs-tag" style="color: rgb(0, 0, 0); box-sizing: border-box;">nodes</span>
901<span class="hljs-tag" style="color: rgb(0, 0, 0); box-sizing: border-box;">cade1bc2703ef2bb4ff49466b38762346755d</span> 192<span class="hljs-class" style="box-sizing: border-box; color: rgb(155, 112, 63);">.168</span><span class="hljs-class" style="box-sizing: border-box; color: rgb(155, 112, 63);">.0</span><span class="hljs-class" style="box-sizing: border-box; color: rgb(155, 112, 63);">.201</span><span class="hljs-pseudo" style="color: rgb(0, 0, 0); box-sizing: border-box;">:6382</span> <span class="hljs-tag" style="color: rgb(0, 0, 0); box-sizing: border-box;">master</span> <span class="hljs-tag" style="color: rgb(0, 0, 0); box-sizing: border-box;">-</span> 0 1468333842665 9 <span class="hljs-tag" style="color: rgb(0, 0, 0); box-sizing: border-box;">connected</span> 0<span class="hljs-tag" style="color: rgb(0, 0, 0); box-sizing: border-box;">-332</span> 5461<span class="hljs-tag" style="color: rgb(0, 0, 0); box-sizing: border-box;">-5794</span> 10923<span class="hljs-tag" style="color: rgb(0, 0, 0); box-sizing: border-box;">-11255</span>
459<span class="hljs-tag" style="color: rgb(0, 0, 0); box-sizing: border-box;">dbcccc1e5be021f19efde794b9e84474c0c02</span> 192<span class="hljs-class" style="box-sizing: border-box; color: rgb(155, 112, 63);">.168</span><span class="hljs-class" style="box-sizing: border-box; color: rgb(155, 112, 63);">.0</span><span class="hljs-class" style="box-sizing: border-box; color: rgb(155, 112, 63);">.202</span><span class="hljs-pseudo" style="color: rgb(0, 0, 0); box-sizing: border-box;">:16379</span> <span class="hljs-tag" style="color: rgb(0, 0, 0); box-sizing: border-box;">slave</span> <span class="hljs-tag" style="color: rgb(0, 0, 0); box-sizing: border-box;">b6814c717080de33907e6f769e1fd8dc4fe53c38</span> 0 1468333841661 7 <span class="hljs-tag" style="color: rgb(0, 0, 0); box-sizing: border-box;">connected</span>
9080<span class="hljs-tag" style="color: rgb(0, 0, 0); box-sizing: border-box;">c5049615730c66731b54cb084999009eeb52</span> 192<span class="hljs-class" style="box-sizing: border-box; color: rgb(155, 112, 63);">.168</span><span class="hljs-class" style="box-sizing: border-box; color: rgb(155, 112, 63);">.0</span><span class="hljs-class" style="box-sizing: border-box; color: rgb(155, 112, 63);">.201</span><span class="hljs-pseudo" style="color: rgb(0, 0, 0); box-sizing: border-box;">:6383</span> <span class="hljs-tag" style="color: rgb(0, 0, 0); box-sizing: border-box;">slave</span> 901<span class="hljs-tag" style="color: rgb(0, 0, 0); box-sizing: border-box;">cade1bc2703ef2bb4ff49466b38762346755d</span> 0 1468333843669 9 <span class="hljs-tag" style="color: rgb(0, 0, 0); box-sizing: border-box;">connected</span>
06023<span class="hljs-tag" style="color: rgb(0, 0, 0); box-sizing: border-box;">f8283389ad5580c782797f49a5996c108b3</span> 192<span class="hljs-class" style="box-sizing: border-box; color: rgb(155, 112, 63);">.168</span><span class="hljs-class" style="box-sizing: border-box; color: rgb(155, 112, 63);">.0</span><span class="hljs-class" style="box-sizing: border-box; color: rgb(155, 112, 63);">.201</span><span class="hljs-pseudo" style="color: rgb(0, 0, 0); box-sizing: border-box;">:6379</span> <span class="hljs-tag" style="color: rgb(0, 0, 0); box-sizing: border-box;">myself</span>,<span class="hljs-tag" style="color: rgb(0, 0, 0); box-sizing: border-box;">master</span> <span class="hljs-tag" style="color: rgb(0, 0, 0); box-sizing: border-box;">-</span> 0 0 1 <span class="hljs-tag" style="color: rgb(0, 0, 0); box-sizing: border-box;">connected</span> 333<span class="hljs-tag" style="color: rgb(0, 0, 0); box-sizing: border-box;">-5460</span>
91179<span class="hljs-tag" style="color: rgb(0, 0, 0); box-sizing: border-box;">b96d9b8abce85fa7a5748aa9b4114f0b260</span> 192<span class="hljs-class" style="box-sizing: border-box; color: rgb(155, 112, 63);">.168</span><span class="hljs-class" style="box-sizing: border-box; color: rgb(155, 112, 63);">.0</span><span class="hljs-class" style="box-sizing: border-box; color: rgb(155, 112, 63);">.202</span><span class="hljs-pseudo" style="color: rgb(0, 0, 0); box-sizing: border-box;">:16380</span> <span class="hljs-tag" style="color: rgb(0, 0, 0); box-sizing: border-box;">slave</span> 06023<span class="hljs-tag" style="color: rgb(0, 0, 0); box-sizing: border-box;">f8283389ad5580c782797f49a5996c108b3</span> 0 1468333844674 5 <span class="hljs-tag" style="color: rgb(0, 0, 0); box-sizing: border-box;">connected</span>
<span class="hljs-tag" style="color: rgb(0, 0, 0); box-sizing: border-box;">ef8a49e5242c791551f1b317d5039144e38acde6</span> 192<span class="hljs-class" style="box-sizing: border-box; color: rgb(155, 112, 63);">.168</span><span class="hljs-class" style="box-sizing: border-box; color: rgb(155, 112, 63);">.0</span><span class="hljs-class" style="box-sizing: border-box; color: rgb(155, 112, 63);">.201</span><span class="hljs-pseudo" style="color: rgb(0, 0, 0); box-sizing: border-box;">:6380</span> <span class="hljs-tag" style="color: rgb(0, 0, 0); box-sizing: border-box;">slave</span> 13567<span class="hljs-tag" style="color: rgb(0, 0, 0); box-sizing: border-box;">f6f8787d3aa3f4ef3abd15c2cc500a1469b</span> 0 1468333842665 8 <span class="hljs-tag" style="color: rgb(0, 0, 0); box-sizing: border-box;">connected</span>
<span class="hljs-tag" style="color: rgb(0, 0, 0); box-sizing: border-box;">b6814c717080de33907e6f769e1fd8dc4fe53c38</span> 192<span class="hljs-class" style="box-sizing: border-box; color: rgb(155, 112, 63);">.168</span><span class="hljs-class" style="box-sizing: border-box; color: rgb(155, 112, 63);">.0</span><span class="hljs-class" style="box-sizing: border-box; color: rgb(155, 112, 63);">.201</span><span class="hljs-pseudo" style="color: rgb(0, 0, 0); box-sizing: border-box;">:6381</span> <span class="hljs-tag" style="color: rgb(0, 0, 0); box-sizing: border-box;">master</span> <span class="hljs-tag" style="color: rgb(0, 0, 0); box-sizing: border-box;">-</span> 0 1468333845678 7 <span class="hljs-tag" style="color: rgb(0, 0, 0); box-sizing: border-box;">connected</span> 5795<span class="hljs-tag" style="color: rgb(0, 0, 0); box-sizing: border-box;">-10922</span>
13567<span class="hljs-tag" style="color: rgb(0, 0, 0); box-sizing: border-box;">f6f8787d3aa3f4ef3abd15c2cc500a1469b</span> 192<span class="hljs-class" style="box-sizing: border-box; color: rgb(155, 112, 63);">.168</span><span class="hljs-class" style="box-sizing: border-box; color: rgb(155, 112, 63);">.0</span><span class="hljs-class" style="box-sizing: border-box; color: rgb(155, 112, 63);">.202</span><span class="hljs-pseudo" style="color: rgb(0, 0, 0); box-sizing: border-box;">:16381</span> <span class="hljs-tag" style="color: rgb(0, 0, 0); box-sizing: border-box;">master</span> <span class="hljs-tag" style="color: rgb(0, 0, 0); box-sizing: border-box;">-</span> 0 1468333846685 8 <span class="hljs-tag" style="color: rgb(0, 0, 0); box-sizing: border-box;">connected</span> 11256<span class="hljs-tag" style="color: rgb(0, 0, 0); box-sizing: border-box;">-16383</span></code><ul class="pre-numbering" style="box-sizing: border-box; position: absolute; width: 50px; top: 0px; left: 0px; margin: 0px; padding: 6px 0px 40px; border-right-width: 1px; border-right-style: solid; border-right-color: rgb(221, 221, 221); list-style: none; text-align: right; background-color: rgb(238, 238, 238);"><li style="box-sizing: border-box; padding: 0px 5px;">1</li><li style="box-sizing: border-box; padding: 0px 5px;">2</li><li style="box-sizing: border-box; padding: 0px 5px;">3</li><li style="box-sizing: border-box; padding: 0px 5px;">4</li><li style="box-sizing: border-box; padding: 0px 5px;">5</li><li style="box-sizing: border-box; padding: 0px 5px;">6</li><li style="box-sizing: border-box; padding: 0px 5px;">7</li><li style="box-sizing: border-box; padding: 0px 5px;">8</li><li style="box-sizing: border-box; padding: 0px 5px;">9</li></ul><ul class="pre-numbering" style="box-sizing: border-box; position: absolute; width: 50px; top: 0px; left: 0px; margin: 0px; padding: 6px 0px 40px; border-right-width: 1px; border-right-style: solid; border-right-color: rgb(221, 221, 221); list-style: none; text-align: right; background-color: rgb(238, 238, 238);"><li style="box-sizing: border-box; padding: 0px 5px;">1</li><li style="box-sizing: border-box; padding: 0px 5px;">2</li><li style="box-sizing: border-box; padding: 0px 5px;">3</li><li style="box-sizing: border-box; padding: 0px 5px;">4</li><li style="box-sizing: border-box; padding: 0px 5px;">5</li><li style="box-sizing: border-box; padding: 0px 5px;">6</li><li style="box-sizing: border-box; padding: 0px 5px;">7</li><li style="box-sizing: border-box; padding: 0px 5px;">8</li><li style="box-sizing: border-box; padding: 0px 5px;">9</li></ul>

very good~ 可以看出,201:6383以成功添加为一个slave节点,并将201:6382作为master节点。

cluster nodes命令列表的节点状态信息说明:

<code class="hljs css has-numbering" style="display: block; padding: 0px; color: inherit; box-sizing: border-box; font-family: 'Source Code Pro', monospace;font-size:undefined; white-space: pre; border-radius: 0px; word-wrap: normal; background: transparent;">459<span class="hljs-tag" style="color: rgb(0, 0, 0); box-sizing: border-box;">dbcccc1e5be021f19efde794b9e84474c0c02</span> 192<span class="hljs-class" style="box-sizing: border-box; color: rgb(155, 112, 63);">.168</span><span class="hljs-class" style="box-sizing: border-box; color: rgb(155, 112, 63);">.0</span><span class="hljs-class" style="box-sizing: border-box; color: rgb(155, 112, 63);">.202</span><span class="hljs-pseudo" style="color: rgb(0, 0, 0); box-sizing: border-box;">:16379</span> <span class="hljs-tag" style="color: rgb(0, 0, 0); box-sizing: border-box;">slave</span> <span class="hljs-tag" style="color: rgb(0, 0, 0); box-sizing: border-box;">b6814c717080de33907e6f769e1fd8dc4fe53c38</span> 0 1468333841661 7 <span class="hljs-tag" style="color: rgb(0, 0, 0); box-sizing: border-box;">connected</span></code><ul class="pre-numbering" style="box-sizing: border-box; position: absolute; width: 50px; top: 0px; left: 0px; margin: 0px; padding: 6px 0px 40px; border-right-width: 1px; border-right-style: solid; border-right-color: rgb(221, 221, 221); list-style: none; text-align: right; background-color: rgb(238, 238, 238);"><li style="box-sizing: border-box; padding: 0px 5px;">1</li></ul><ul class="pre-numbering" style="box-sizing: border-box; position: absolute; width: 50px; top: 0px; left: 0px; margin: 0px; padding: 6px 0px 40px; border-right-width: 1px; border-right-style: solid; border-right-color: rgb(221, 221, 221); list-style: none; text-align: right; background-color: rgb(238, 238, 238);"><li style="box-sizing: border-box; padding: 0px 5px;">1</li></ul>

1> 459dbcccc1e5be021f19efde794b9e84474c0c02 :节点ID 
2> 192.168.0.202:16379:节点IP和端口 
3> slave:节点类型,master、slave或myself(master/slave) 
4> b6814c717080de33907e6f769e1fd8dc4fe53c38 :master节点ID,如果自己是master节点,这一列的值为0 
5> 0:集群最近一次向节点发送 PING 命令之后, 过去了多长时间还没接到回复。 
6> 1468333841661:节点最近一次返回 PONG 回复的时间 
7> 7:节点的配置纪元 
8> connected:节点网络连接状态 
9> 如果是主节点,节点状态后边显示slot分配的范围

3、改变slave节点的master

将上边新加的slave节点(201:6383)的master,修改为201:6379(06023f8283389ad5580c782797f49a5996c108b3)

<code class="hljs lasso has-numbering" style="display: block; padding: 0px; color: inherit; box-sizing: border-box; font-family: 'Source Code Pro', monospace;font-size:undefined; white-space: pre; border-radius: 0px; word-wrap: normal; background: transparent;">shell<span class="hljs-subst" style="color: rgb(0, 0, 0); box-sizing: border-box;">></span> redis<span class="hljs-attribute" style="box-sizing: border-box;">-cli</span> <span class="hljs-attribute" style="box-sizing: border-box;">-h</span> <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">192.168</span><span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">.0</span><span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">.201</span> <span class="hljs-attribute" style="box-sizing: border-box;">-p</span> <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">6383</span> cluster nodes <span class="hljs-subst" style="color: rgb(0, 0, 0); box-sizing: border-box;">|</span> grep myself
<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">9080</span>c5049615730c66731b54cb084999009eeb52 <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">192.168</span><span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">.0</span><span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">.201</span>:<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">6383</span> myself,slave <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">901</span>cade1bc2703ef2bb4ff49466b38762346755d <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">0</span> <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">0</span> <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">0</span> connected</code><ul class="pre-numbering" style="box-sizing: border-box; position: absolute; width: 50px; top: 0px; left: 0px; margin: 0px; padding: 6px 0px 40px; border-right-width: 1px; border-right-style: solid; border-right-color: rgb(221, 221, 221); list-style: none; text-align: right; background-color: rgb(238, 238, 238);"><li style="box-sizing: border-box; padding: 0px 5px;">1</li><li style="box-sizing: border-box; padding: 0px 5px;">2</li></ul><ul class="pre-numbering" style="box-sizing: border-box; position: absolute; width: 50px; top: 0px; left: 0px; margin: 0px; padding: 6px 0px 40px; border-right-width: 1px; border-right-style: solid; border-right-color: rgb(221, 221, 221); list-style: none; text-align: right; background-color: rgb(238, 238, 238);"><li style="box-sizing: border-box; padding: 0px 5px;">1</li><li style="box-sizing: border-box; padding: 0px 5px;">2</li></ul>

当前slave节点201:6383的master节点是901cade1bc2703ef2bb4ff49466b38762346755d

<code class="hljs lasso has-numbering" style="display: block; padding: 0px; color: inherit; box-sizing: border-box; font-family: 'Source Code Pro', monospace;font-size:undefined; white-space: pre; border-radius: 0px; word-wrap: normal; background: transparent;">shell<span class="hljs-subst" style="color: rgb(0, 0, 0); box-sizing: border-box;">></span> redis<span class="hljs-attribute" style="box-sizing: border-box;">-cli</span> <span class="hljs-attribute" style="box-sizing: border-box;">-h</span> <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">192.168</span><span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">.0</span><span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">.201</span> <span class="hljs-attribute" style="box-sizing: border-box;">-p</span> <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">6383</span>
<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">192.168</span><span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">.0</span><span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">.201</span>:<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">6383</span><span class="hljs-subst" style="color: rgb(0, 0, 0); box-sizing: border-box;">></span> cluster replicate <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">06023</span>f8283389ad5580c782797f49a5996c108b3</code><ul class="pre-numbering" style="box-sizing: border-box; position: absolute; width: 50px; top: 0px; left: 0px; margin: 0px; padding: 6px 0px 40px; border-right-width: 1px; border-right-style: solid; border-right-color: rgb(221, 221, 221); list-style: none; text-align: right; background-color: rgb(238, 238, 238);"><li style="box-sizing: border-box; padding: 0px 5px;">1</li><li style="box-sizing: border-box; padding: 0px 5px;">2</li></ul><ul class="pre-numbering" style="box-sizing: border-box; position: absolute; width: 50px; top: 0px; left: 0px; margin: 0px; padding: 6px 0px 40px; border-right-width: 1px; border-right-style: solid; border-right-color: rgb(221, 221, 221); list-style: none; text-align: right; background-color: rgb(238, 238, 238);"><li style="box-sizing: border-box; padding: 0px 5px;">1</li><li style="box-sizing: border-box; padding: 0px 5px;">2</li></ul>

06023f8283389ad5580c782797f49a5996c108b3:新master节点的ID

<code class="hljs css has-numbering" style="display: block; padding: 0px; color: inherit; box-sizing: border-box; font-family: 'Source Code Pro', monospace;font-size:undefined; white-space: pre; border-radius: 0px; word-wrap: normal; background: transparent;">192<span class="hljs-class" style="box-sizing: border-box; color: rgb(155, 112, 63);">.168</span><span class="hljs-class" style="box-sizing: border-box; color: rgb(155, 112, 63);">.0</span><span class="hljs-class" style="box-sizing: border-box; color: rgb(155, 112, 63);">.201</span><span class="hljs-pseudo" style="color: rgb(0, 0, 0); box-sizing: border-box;">:6383</span>> <span class="hljs-tag" style="color: rgb(0, 0, 0); box-sizing: border-box;">CLUSTER</span> <span class="hljs-tag" style="color: rgb(0, 0, 0); box-sizing: border-box;">SLAVES</span> 06023<span class="hljs-tag" style="color: rgb(0, 0, 0); box-sizing: border-box;">f8283389ad5580c782797f49a5996c108b3</span>
1) "91179<span class="hljs-tag" style="color: rgb(0, 0, 0); box-sizing: border-box;">b96d9b8abce85fa7a5748aa9b4114f0b260</span> 192<span class="hljs-class" style="box-sizing: border-box; color: rgb(155, 112, 63);">.168</span><span class="hljs-class" style="box-sizing: border-box; color: rgb(155, 112, 63);">.0</span><span class="hljs-class" style="box-sizing: border-box; color: rgb(155, 112, 63);">.202</span><span class="hljs-pseudo" style="color: rgb(0, 0, 0); box-sizing: border-box;">:16380</span> <span class="hljs-tag" style="color: rgb(0, 0, 0); box-sizing: border-box;">slave</span> 06023<span class="hljs-tag" style="color: rgb(0, 0, 0); box-sizing: border-box;">f8283389ad5580c782797f49a5996c108b3</span> 0 1468336124600 1 <span class="hljs-tag" style="color: rgb(0, 0, 0); box-sizing: border-box;">connected</span>"
2) "9080<span class="hljs-tag" style="color: rgb(0, 0, 0); box-sizing: border-box;">c5049615730c66731b54cb084999009eeb52</span> 192<span class="hljs-class" style="box-sizing: border-box; color: rgb(155, 112, 63);">.168</span><span class="hljs-class" style="box-sizing: border-box; color: rgb(155, 112, 63);">.0</span><span class="hljs-class" style="box-sizing: border-box; color: rgb(155, 112, 63);">.201</span><span class="hljs-pseudo" style="color: rgb(0, 0, 0); box-sizing: border-box;">:6383</span> <span class="hljs-tag" style="color: rgb(0, 0, 0); box-sizing: border-box;">myself</span>,<span class="hljs-tag" style="color: rgb(0, 0, 0); box-sizing: border-box;">slave</span> 06023<span class="hljs-tag" style="color: rgb(0, 0, 0); box-sizing: border-box;">f8283389ad5580c782797f49a5996c108b3</span> 0 0 0 <span class="hljs-tag" style="color: rgb(0, 0, 0); box-sizing: border-box;">connected</span>"</code><ul class="pre-numbering" style="box-sizing: border-box; position: absolute; width: 50px; top: 0px; left: 0px; margin: 0px; padding: 6px 0px 40px; border-right-width: 1px; border-right-style: solid; border-right-color: rgb(221, 221, 221); list-style: none; text-align: right; background-color: rgb(238, 238, 238);"><li style="box-sizing: border-box; padding: 0px 5px;">1</li><li style="box-sizing: border-box; padding: 0px 5px;">2</li><li style="box-sizing: border-box; padding: 0px 5px;">3</li></ul><ul class="pre-numbering" style="box-sizing: border-box; position: absolute; width: 50px; top: 0px; left: 0px; margin: 0px; padding: 6px 0px 40px; border-right-width: 1px; border-right-style: solid; border-right-color: rgb(221, 221, 221); list-style: none; text-align: right; background-color: rgb(238, 238, 238);"><li style="box-sizing: border-box; padding: 0px 5px;">1</li><li style="box-sizing: border-box; padding: 0px 5px;">2</li><li style="box-sizing: border-box; padding: 0px 5px;">3</li></ul>

可以看出201:6383 slave节点已经是201:6379 master节点的子节点了。

4、删除节点

1> 删除slave节点

<code class="hljs python has-numbering" style="display: block; padding: 0px; color: inherit; box-sizing: border-box; font-family: 'Source Code Pro', monospace;font-size:undefined; white-space: pre; border-radius: 0px; word-wrap: normal; background: transparent;">[root<span class="hljs-decorator" style="color: rgb(0, 102, 102); box-sizing: border-box;">@localhost redis-3.2.0]# redis-trib.rb del-node 192.168.0.201:6383 9080c5049615730c66731b54cb084999009eeb52</span>
<span class="hljs-prompt" style="color: rgb(0, 102, 102); box-sizing: border-box;">>>> </span>Removing node <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">9080</span>c5049615730c66731b54cb084999009eeb52 <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">from</span> cluster <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">192.168</span><span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">.0</span><span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">.201</span>:<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">6383</span>
<span class="hljs-prompt" style="color: rgb(0, 102, 102); box-sizing: border-box;">>>> </span>Sending CLUSTER FORGET messages to the cluster...
<span class="hljs-prompt" style="color: rgb(0, 102, 102); box-sizing: border-box;">>>> </span>SHUTDOWN the node.</code><ul class="pre-numbering" style="box-sizing: border-box; position: absolute; width: 50px; top: 0px; left: 0px; margin: 0px; padding: 6px 0px 40px; border-right-width: 1px; border-right-style: solid; border-right-color: rgb(221, 221, 221); list-style: none; text-align: right; background-color: rgb(238, 238, 238);"><li style="box-sizing: border-box; padding: 0px 5px;">1</li><li style="box-sizing: border-box; padding: 0px 5px;">2</li><li style="box-sizing: border-box; padding: 0px 5px;">3</li><li style="box-sizing: border-box; padding: 0px 5px;">4</li></ul><ul class="pre-numbering" style="box-sizing: border-box; position: absolute; width: 50px; top: 0px; left: 0px; margin: 0px; padding: 6px 0px 40px; border-right-width: 1px; border-right-style: solid; border-right-color: rgb(221, 221, 221); list-style: none; text-align: right; background-color: rgb(238, 238, 238);"><li style="box-sizing: border-box; padding: 0px 5px;">1</li><li style="box-sizing: border-box; padding: 0px 5px;">2</li><li style="box-sizing: border-box; padding: 0px 5px;">3</li><li style="box-sizing: border-box; padding: 0px 5px;">4</li></ul>

参数说明: 
1> del-node:删除节点参数 
2> 192.168.0.201:6383:节点IP和端口 
3> 9080c5049615730c66731b54cb084999009eeb52:节点ID 
节点成功删除后,会同时将进程杀死

从节点重新恢复后,先cluster meet ip port将从节点加入集群,然后设置自己的mastercluster replication master_node_id

2、删除master节点

注意: 
1> 如果master节点有slot,必须先将所有slot分配给其它master节点。否则会提示你先将slot移除再尝试删除,如下所示:

<code class="hljs python has-numbering" style="display: block; padding: 0px; color: inherit; box-sizing: border-box; font-family: 'Source Code Pro', monospace;font-size:undefined; white-space: pre; border-radius: 0px; word-wrap: normal; background: transparent;">shell> redis-trib.rb <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">del</span>-node <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">192.168</span><span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">.0</span><span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">.201</span>:<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">6382</span> <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">901</span>cade1bc2703ef2bb4ff49466b38762346755d
<span class="hljs-prompt" style="color: rgb(0, 102, 102); box-sizing: border-box;">>>> </span>Removing node <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">901</span>cade1bc2703ef2bb4ff49466b38762346755d <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">from</span> cluster <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">192.168</span><span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">.0</span><span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">.201</span>:<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">6382</span>
[ERR] Node <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">192.168</span><span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">.0</span><span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">.201</span>:<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">6382</span> <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">is</span> <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">not</span> empty! Reshard data away <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">and</span> <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">try</span> again.</code><ul class="pre-numbering" style="box-sizing: border-box; position: absolute; width: 50px; top: 0px; left: 0px; margin: 0px; padding: 6px 0px 40px; border-right-width: 1px; border-right-style: solid; border-right-color: rgb(221, 221, 221); list-style: none; text-align: right; background-color: rgb(238, 238, 238);"><li style="box-sizing: border-box; padding: 0px 5px;">1</li><li style="box-sizing: border-box; padding: 0px 5px;">2</li><li style="box-sizing: border-box; padding: 0px 5px;">3</li></ul><ul class="pre-numbering" style="box-sizing: border-box; position: absolute; width: 50px; top: 0px; left: 0px; margin: 0px; padding: 6px 0px 40px; border-right-width: 1px; border-right-style: solid; border-right-color: rgb(221, 221, 221); list-style: none; text-align: right; background-color: rgb(238, 238, 238);"><li style="box-sizing: border-box; padding: 0px 5px;">1</li><li style="box-sizing: border-box; padding: 0px 5px;">2</li><li style="box-sizing: border-box; padding: 0px 5px;">3</li></ul>

2> 如果master节点有slave节点,先将slave节点移到其它master下

  • 移除201:6382 master节点的slot
<code class="hljs r has-numbering" style="display: block; padding: 0px; color: inherit; box-sizing: border-box; font-family: 'Source Code Pro', monospace;font-size:undefined; white-space: pre; border-radius: 0px; word-wrap: normal; background: transparent;">[root@localhost redis-<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">3.2</span><span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">.0</span>]<span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;"># redis-trib.rb reshard 192.168.0.201:6382</span>
>>> Performing Cluster Check (using node <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">192.168</span><span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">.0</span><span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">.201</span>:<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">6382</span>)
M: 901cade1bc2703ef2bb4ff49466b38762346755d <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">192.168</span><span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">.0</span><span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">.201</span>:<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">6382</span>
   slots:<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">0</span>-<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">332</span>,<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">5461</span>-<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">5794</span>,<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">10923</span>-<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">11255</span> (<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">1000</span> slots) master
   <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">1</span> additional replica(s)
M: 06023f8283389ad5580c782797f49a5996c108b3 <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">192.168</span><span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">.0</span><span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">.201</span>:<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">6379</span>
   slots:<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">333</span>-<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">5460</span> (<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">5128</span> slots) master
   <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">1</span> additional replica(s)
<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">...</span>
[OK] All nodes agree about slots configuration.
>>> Check <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">for</span> open slots...
>>> Check slots coverage...
[OK] All <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">16384</span> slots covered.
How many slots do you want to move (from <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">1</span> to <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">16384</span>)? <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">1000</span> <span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;"># 201:6382一共1000个slot</span>
What is the receiving node ID? 06023f8283389ad5580c782797f49a5996c108b3 <span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;"># 接收这1000个slot的节点ID</span>
Please enter all the <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">source</span> node IDs.
  Type <span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">'all'</span> to use all the nodes as <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">source</span> nodes <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">for</span> the hash slots.
  Type <span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">'done'</span> once you entered all the <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">source</span> nodes IDs.
Source node <span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">#1:901cade1bc2703ef2bb4ff49466b38762346755d # 移除这1000个slot的master节点ID(这里同样是201:6382)</span>
Source node <span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">#2:done</span>
....
Do you want to proceed with the proposed reshard plan (yes/no)? yes</code><ul class="pre-numbering" style="box-sizing: border-box; position: absolute; width: 50px; top: 0px; left: 0px; margin: 0px; padding: 6px 0px 40px; border-right-width: 1px; border-right-style: solid; border-right-color: rgb(221, 221, 221); list-style: none; text-align: right; background-color: rgb(238, 238, 238);"><li style="box-sizing: border-box; padding: 0px 5px;">1</li><li style="box-sizing: border-box; padding: 0px 5px;">2</li><li style="box-sizing: border-box; padding: 0px 5px;">3</li><li style="box-sizing: border-box; padding: 0px 5px;">4</li><li style="box-sizing: border-box; padding: 0px 5px;">5</li><li style="box-sizing: border-box; padding: 0px 5px;">6</li><li style="box-sizing: border-box; padding: 0px 5px;">7</li><li style="box-sizing: border-box; padding: 0px 5px;">8</li><li style="box-sizing: border-box; padding: 0px 5px;">9</li><li style="box-sizing: border-box; padding: 0px 5px;">10</li><li style="box-sizing: border-box; padding: 0px 5px;">11</li><li style="box-sizing: border-box; padding: 0px 5px;">12</li><li style="box-sizing: border-box; padding: 0px 5px;">13</li><li style="box-sizing: border-box; padding: 0px 5px;">14</li><li style="box-sizing: border-box; padding: 0px 5px;">15</li><li style="box-sizing: border-box; padding: 0px 5px;">16</li><li style="box-sizing: border-box; padding: 0px 5px;">17</li><li style="box-sizing: border-box; padding: 0px 5px;">18</li><li style="box-sizing: border-box; padding: 0px 5px;">19</li><li style="box-sizing: border-box; padding: 0px 5px;">20</li><li style="box-sizing: border-box; padding: 0px 5px;">21</li><li style="box-sizing: border-box; padding: 0px 5px;">22</li></ul><ul class="pre-numbering" style="box-sizing: border-box; position: absolute; width: 50px; top: 0px; left: 0px; margin: 0px; padding: 6px 0px 40px; border-right-width: 1px; border-right-style: solid; border-right-color: rgb(221, 221, 221); list-style: none; text-align: right; background-color: rgb(238, 238, 238);"><li style="box-sizing: border-box; padding: 0px 5px;">1</li><li style="box-sizing: border-box; padding: 0px 5px;">2</li><li style="box-sizing: border-box; padding: 0px 5px;">3</li><li style="box-sizing: border-box; padding: 0px 5px;">4</li><li style="box-sizing: border-box; padding: 0px 5px;">5</li><li style="box-sizing: border-box; padding: 0px 5px;">6</li><li style="box-sizing: border-box; padding: 0px 5px;">7</li><li style="box-sizing: border-box; padding: 0px 5px;">8</li><li style="box-sizing: border-box; padding: 0px 5px;">9</li><li style="box-sizing: border-box; padding: 0px 5px;">10</li><li style="box-sizing: border-box; padding: 0px 5px;">11</li><li style="box-sizing: border-box; padding: 0px 5px;">12</li><li style="box-sizing: border-box; padding: 0px 5px;">13</li><li style="box-sizing: border-box; padding: 0px 5px;">14</li><li style="box-sizing: border-box; padding: 0px 5px;">15</li><li style="box-sizing: border-box; padding: 0px 5px;">16</li><li style="box-sizing: border-box; padding: 0px 5px;">17</li><li style="box-sizing: border-box; padding: 0px 5px;">18</li><li style="box-sizing: border-box; padding: 0px 5px;">19</li><li style="box-sizing: border-box; padding: 0px 5px;">20</li><li style="box-sizing: border-box; padding: 0px 5px;">21</li><li style="box-sizing: border-box; padding: 0px 5px;">22</li></ul>

新增master节点后,也进行了这一步操作,当时是分配,现在是去掉,反着的。

  • 删除master节点
<code class="hljs python has-numbering" style="display: block; padding: 0px; color: inherit; box-sizing: border-box; font-family: 'Source Code Pro', monospace;font-size:undefined; white-space: pre; border-radius: 0px; word-wrap: normal; background: transparent;">shell> redis-trib.rb <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">del</span>-node <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">192.168</span><span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">.0</span><span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">.201</span>:<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">6382</span> <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">901</span>cade1bc2703ef2bb4ff49466b38762346755d
<span class="hljs-prompt" style="color: rgb(0, 102, 102); box-sizing: border-box;">>>> </span>Removing node <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">901</span>cade1bc2703ef2bb4ff49466b38762346755dfrom cluster <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">192.168</span><span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">.0</span><span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">.201</span>:<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">6382</span>
<span class="hljs-prompt" style="color: rgb(0, 102, 102); box-sizing: border-box;">>>> </span>Sending CLUSTER FORGET messages to the cluster...
<span class="hljs-prompt" style="color: rgb(0, 102, 102); box-sizing: border-box;">>>> </span>SHUTDOWN the node.</code><ul class="pre-numbering" style="box-sizing: border-box; position: absolute; width: 50px; top: 0px; left: 0px; margin: 0px; padding: 6px 0px 40px; border-right-width: 1px; border-right-style: solid; border-right-color: rgb(221, 221, 221); list-style: none; text-align: right; background-color: rgb(238, 238, 238);"><li style="box-sizing: border-box; padding: 0px 5px;">1</li><li style="box-sizing: border-box; padding: 0px 5px;">2</li><li style="box-sizing: border-box; padding: 0px 5px;">3</li><li style="box-sizing: border-box; padding: 0px 5px;">4</li></ul><ul class="pre-numbering" style="box-sizing: border-box; position: absolute; width: 50px; top: 0px; left: 0px; margin: 0px; padding: 6px 0px 40px; border-right-width: 1px; border-right-style: solid; border-right-color: rgb(221, 221, 221); list-style: none; text-align: right; background-color: rgb(238, 238, 238);"><li style="box-sizing: border-box; padding: 0px 5px;">1</li><li style="box-sizing: border-box; padding: 0px 5px;">2</li><li style="box-sizing: border-box; padding: 0px 5px;">3</li><li style="box-sizing: border-box; padding: 0px 5px;">4</li></ul>

此时新的master节点也被删除了,回到了添加节点之前的状态。

redis-cluster-tool 是一个非常便利的 Redis 集群管理工具。help        Usage: redis-cluster-tool [-?hVds] [-v verbosity level] [-o output file]                  [-c conf file] [-a addr] [-i interval]                  [-p pid file] [-C command] [-r redis role]                  [-t thread number] [-b buffer size]    Options:      -h, --help             : this help      -V, --version          : show version and exit      -d, --daemonize        : run as a daemon      -s, --simple           : show the output not in detail      -v, --verbosity=N      : set logging level (default: 5, min: 0, max: 11)      -o, --output=S         : set logging file (default: stderr)      -c, --conf-file=S      : set configuration file (default: conf/rct.yml)      -a, --addr=S           : set redis cluster address (default: 127.0.0.1:6379)      -i, --interval=N       : set interval in msec (default: 1000 msec)      -p, --pid-file=S       : set pid file (default: off)      -C, --command=S        : set command to execute (default: cluster_state)      -r, --role=S           : set the role of the nodes that command to execute on (default: all, you can input: all, master or slave)      -t, --thread=N         : set how many threads to run the job(default: 8)      -b, --buffer=S         : set buffer size to run the job (default: 1048576 byte, unit:G/M/K)        Commands:        cluster_state                 :Show the cluster state.        cluster_used_memory           :Show the cluster used memory.        cluster_keys_num              :Show the cluster holds keys num.        slots_state                   :Show the slots state.        node_slot_num                 :Show the node hold slots number.        new_nodes_name                :Show the new nodes name that not covered slots.        cluster_rebalance             :Show the cluster how to rebalance.        flushall                      :Flush all the cluster.        cluster_config_get            :Get config from every node in the cluster and check consistency.        cluster_config_set            :Set config to every node in the cluster.        cluster_config_rewrite        :Rewrite every node config to echo node for the cluster.        node_list                     :List the nodes            del_keys                      :Delete keys in the cluster. The keys must match a given glob-style pattern.(This command not block the redis)ExampleGet the cluster state:        $redis-cluster-tool -a 127.0.0.1:34501 -C cluster_state -r master    master[127.0.0.1:34504] cluster_state is ok     master[127.0.0.1:34501] cluster_state is ok     master[127.0.0.1:34502] cluster_state is ok     master[127.0.0.1:34503] cluster_state is ok     all nodes cluster_state is ok    Get the cluster used memory:    $redis-cluster-tool -a 127.0.0.1:34501 -C cluster_used_memory -r master    master[127.0.0.1:34504] used 195 M 25%    master[127.0.0.1:34501] used 195 M 25%    master[127.0.0.1:34502] used 195 M 25%    master[127.0.0.1:34503] used 195 M 25%    cluster used 780 MRebalance the cluster slots:    $redis-cluster-tool -a 127.0.0.1:34501 -C cluster_rebalance    --from e1a4ba9922555bfc961f987213e3d4e6659c9316 --to 785862477453bc6b91765ffba0b5bc803052d70a --slots 2048    --from 437c719f50dc9d0745032f3b280ce7ecc40792ac --to cb8299390ce53cefb2352db34976dd768708bf64 --slots 2048    --from a497fc619d4f6c93bd4afb85f3f8a148a3f35adb --to a0cf6c1f12d295cd80f5811afab713cdc858ea30 --slots 2048    --from 0bdef694d08cb3daab9aac518d3ad6f8035ec896 --to 471eaf98ff43ba9a0aadd9579f5af1609239c5b7 --slots 2048Then you can use "redis-trib.rb reshard --yes --from e1a4ba9922555bfc961f987213e3d4e6659c9316 --to 785862477453bc6b91765ffba0b5bc803052d70a --slots 2048 127.0.0.1:34501" to rebalance the cluster slots     Flushall the cluster:    $redis-cluster-tool -a 127.0.0.1:34501 -C flushall -s    Do you really want to execute the "flushall"?    please input "yes" or "no" :        yes    OKGet a config from every node in cluster:    $redis-cluster-tool -a 127.0.0.1:34501 -C "cluster_config_get maxmemory" -r master    master[127.0.0.1:34501] config maxmemory is 1048576000 (1000MB)    master[127.0.0.1:34502] config maxmemory is 1048576000 (1000MB)    master[127.0.0.1:34503] config maxmemory is 1048576000 (1000MB)    master[127.0.0.1:34504] config maxmemory is 1048576000 (1000MB)    All nodes config are Consistent    cluster total maxmemory: 4194304000 (4000MB)Set a config from every node in cluster:    $redis-cluster-tool -a 127.0.0.1:34501 -C "cluster_config_set maxmemory 10000000" -s    Do you really want to execute the "cluster_config_set"?    please input "yes" or "no" :    yes        OKDelete keys in the cluster:    $redis-cluster-tool -a 127.0.0.1:34501 -C "del_keys abc*"    Do you really want to execute the "del_keys"?    please input "yes" or "no" :    yes    delete keys job is running...    delete keys job finished, deleted: 999999 keys, used: 4 s 标签:redis
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值