Chinaunix首页 | 论坛 | 博客
  • 博客访问: 169265
  • 博文数量: 51
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 471
  • 用 户 组: 普通用户
  • 注册时间: 2015-05-11 10:24
文章分类

全部博文(51)

文章存档

2018年(3)

2017年(22)

2016年(9)

2015年(17)

我的朋友

分类: 系统运维

2017-11-09 17:57:40

扩容
/opt/apps_install/redis-3.0.2/src/redis-trib.rb reshard 127.0.0.1:6385

上面这种是交互式的方式

time /opt/apps_install/redis-3.0.2/src/redis-trib.rb reshard --from ca83456fd8eee0500c7863f1916e215bd56efa01 --to 0f292a245be1df1222ec21dc74ce22afac7b2ce4 --slots 273 --yes 127.0.0.1:6385

上面这种是一条命令即可执行的方式

说明:

--from  使用cluster nodes获取的,从哪儿迁移slot的master id

--to     将slot迁移到集群中的某个master 的id

--slots  迁移的slot数量

--yes    确认

127.0.0.1:6385  集群中的某个master id

/opt/apps_install/redis-3.0.2/src/redis-trib.rb check 127.0.0.1:6377       #检查集群是否完整,并可以获取每个node的slot数目

/opt/apps_install/redis-3.0.2/src/redis-trib.rb fix 127.0.0.1:6377            #当集群中的某个slot不正常,可以使用这个命令修复

遇到的问题:

由于本次是将原来一个机器上占有许多内存的node,打散到其它节点,从而将数据更加分散,但由于都是在本机操作,所以由于redis内存不会回收的特性,相当于此次操作需要一倍额外的内存支撑。

也因此,在迁移slot过程中,机器发生了oom,那时候才反应过来,所以没办法了,只有重启master节点,回收内存后,再继续迁移

迁移

目标:将x.x.x.1:6395迁移至x.x.x.2:6385,6395,将x.x.x.x.3:6385,6395迁移至x.x.x.4:6385,6395

步骤:

        1.将x.1和x.3的redis配置文件拷贝至x.2和x.4上,并启动redis实例。

        2.查看现集群的信息,如下:

[@bx_x.1# redis-cli -p 6385 cluster nodes

6d0aa534445cbfb53cb818c5bf71747ae04d2cef x:6385 myself,master - 0 0 7 connected 12969-14335
ec20e18ce9ce9ed0c311bbd46ea595742b085976 x:6395 master - 0 1467194698624 12 connected 511-680 2558-2728 4607-4776 6654-6823 8703-8872 10751-10921 12799-12968 14847-15016
a6605f3db1b779d529e5f1a68a80d015579ab0a5 x:6385 master - 0 1467194699637 6 connected 10922-12287
160a8d7968c10886103da310223045657844ab82 x:6385 master - 0 1467194697596 2 connected 2729-4095
d94743a85e68462af94342c81ff65c3d1535fd83 x:6395 master - 0 1467194696982 9 connected 0-169 2048-2217 4096-4265 6144-6313 8192-8362 10240-10409 12288-12457 14336-14505
981265687134b74d434cd0d6d6607aa1900cfa30 x:6385 master - 0 1467194694401 4 connected 6824-8191
64a3371815beea919ce289b52bb6e80d463da7a6 x:6385 master - 0 1467194696473 3 connected 4777-6143
6058a9d7d0ab820df3db5500d4a9815ce3b03420 x:6385 master - 0 1467194696266 8 connected 15017-16383
cfd090f606469081068c8fb8f0b7900cb17c8515 x:6385 master - 0 1467194694504 5 connected 8873-10239
0e4aca48bba68824e5b04078891d5302cdbbadfc x:6385 master - 0 1467194696582 1 connected 681-2047
3a91f2ba3352a29b55c218339a4fb60994ddb4da x:6395 master - 0 1467194694914 11 connected 340-510 2388-2557 4436-4606 6484-6653 8533-8702 10581-10750 12628-12798 14676-14846
91fd6189e09fedce3c4ffe91fcb1f888d75f9209 x:6395 master - 0 1467194697901 10 connected 170-339 2218-2387 4266-4435 6314-6483 8363-8532 10410-10580 12458-12627 14506-14675

       3.登录x.1,完成主从配置,运行:

            方法1: /opt/apps_install/redis-3.0.2/src/redis-trib.rb add-node --slave --master-id 6058a9d7d0ab820df3db5500d4a9815ce3b03420 10.16.39.169:6385 10.16.39.37:6385

                      参数解释:add-node 添加新节点

                                       --slave  将添加的新节点作为集群中的slave节点(没有此选项就是以主节点的身份添加进去)

                                      --master-id  指定主节点,主节点id通过上一个步骤获取

                                     x.3:6385   添加的新节点的实例

                                       x.9:6385     集群中任意一个节点

             方法2:/opt/apps_install/redis-3.0.2/src/redis-trib.rb add-node x.3:6385 x.9:6385      以主节点身份添加新节点

                        redis-cli -p 6385 cluster replicate 6d0aa534445cbfb53cb818c5bf71747ae04d2cef

       4.进行failover,主从切换

            x.3# redis-cli -p 6395 
            127.0.0.1:6395> cluster failover
            OK

      切换过程瞬间完成,然后依次将其它从节点也切换过去

注:切换完成后,从节点能瞬间变成主节点,但是原主节点变为从节点后,由于本身一个节点的数据量较大(20多G),此时从节点会变为fail的状态,一段时间内是不能被访问的,

所以在客户端配置中,写了这节点信息的配置的,要在新节点(x.2,x.4)变为集群一部分后,修改配置文件,然后在进行主从的切换。

阅读(926) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~