新节点:css
新增两个节点800六、8007:node
#redis基本配置 port 8006 daemonize yes pidfile /var/run/redis-8006.pid dir /opt/module/redis-4.0.11/data logfile "8006.log" dbfilename "dump-8006.rdb" #集群开关,默认是不开启集群模式。 cluster-enabled yes #集群配置文件的名称,每一个节点都有一个集群相关的配置文件,持久化保存集群的信息。 #这个文件并不须要手动配置,这个配置文件有Redis生成并更新,每一个Redis集群节点须要一个单独的配置文件, #请确保与实例运行的系统中配置文件名称不冲突 cluster-config-file nodes-8006.conf #默认状况下,集群所有的slot有节点负责,集群状态才为ok,才能提供服务。设置为no,能够在slot没有所有分配的时候提供服务。 #不建议打开该配置,这样会形成分区的时候,小分区的master一直在接受写请求,而形成很长时间数据不一致。 #就是有一个节点挂了这个集群还能使用 cluster-require-full-coverage no
8007节点一致。redis
add-node命令能够将新节点加入集群,节点能够为master,也能够为某个master节点的slave:ruby
add-node new_host:new_port existing_host:existing_port --slave --master-id <arg>
new_host:new_port 新增节点的IP及端口 existing_host:existing_port 已知节点的IP及端口 目的是为了新节点和旧结点间进行meet操做,让整个集群知道新节点进来了
add-node有两个可选参数:ide
--slave:设置该参数,则新节点以slave的角色加入集群 --master-id:这个参数须要设置了--slave才能生效,--master-id用来指定新节点的master节点。若是不设置该参数,则会随机为节点选择master节点。
add-node流程以下:ui
先启动800六、8007两个节点:spa
redis-server redis-8006.conf redis-server redis-8007.conf
先添加一个主节点8006:3d
./redis-trib.rb add-node 127.0.0.1:8006 127.0.0.1:8000
结果:code
f8b5360af3341fc0f87b9492b4a3d69689ef1072 127.0.0.1:8006@18006 myself,master - 0 1535032508000 0 connected
为8006主节点添加一个从节点8007:server
./redis-trib.rb add-node --slave --master-id f8b5360af3341fc0f87b9492b4a3d69689ef1072 127.0.0.1:8007 127.0.0.1:8000
结果:
[root@redis src]# redis-cli -p 8006 cluster nodes 7979884fe3020a77decb542b5f841dce99fa555e 127.0.0.1:8007@18007 slave f8b5360af3341fc0f87b9492b4a3d69689ef1072 0 1535032756000 0 connected f8b5360af3341fc0f87b9492b4a3d69689ef1072 127.0.0.1:8006@18006 myself,master - 0 1535032753000 0 connected
reshard命令能够在线把集群的一些slot从集群原来slot负责节点迁移到新的节点,利用reshard能够完成集群的在线横向扩容和缩容。
reshard host:port --slots <arg> --to <arg> --from <arg> --yes --pipeline <arg> --timeout <arg>
参数解释:
host:port:这个是必传参数,用来从一个节点获取整个集群信息,至关于获取集群信息的入口。 --from <arg>:须要从哪些源节点上迁移slot,可从多个源节点完成迁移,以逗号隔开,传递的是节点的node id, 还能够直接传递--from all,这样源节点就是集群的全部节点,不传递该参数的话,则会在迁移过程当中提示用户输入。 --to <arg>:slot须要迁移的目的节点的node id,目的节点只能填写一个,不传递该参数的话,则会在迁移过程当中提示用户输入。 --slots <arg>:迁移到目标节点的slot总数量,不传递该参数的话,则会在迁移过程当中提示用户输入。 --yes:设置该参数,能够在打印执行reshard计划的时候,提示用户输入yes确认后再执行reshard。 --timeout <arg>:设置migrate命令的超时时间。 --pipeline <arg>:定义cluster getkeysinslot命令一次取出的key数量,不传的话使用默认值为10。
迁移前:
7979884fe3020a77decb542b5f841dce99fa555e 127.0.0.1:8007@18007 slave f8b5360af3341fc0f87b9492b4a3d69689ef1072 0 1535032756000 0 connected f8b5360af3341fc0f87b9492b4a3d69689ef1072 127.0.0.1:8006@18006 myself,master - 0 1535032753000 0 connected a2d034b74c9cec4cd8398e8b23ae2d2ab124d49d 127.0.0.1:8000@18000 slave 9d1cb9fea95f1b205fc7a5ecb20125259765d6ca 0 1535032755246 7 connected fd17cbac4a5ca1942490d3734a73387341e80fb7 127.0.0.1:8005@18005 slave f5960002d40cf3711eca7146719c4f568115f76c 0 1535032756000 3 connected 1f0d813205ea17d9b254488215bd48612c0ff2b5 127.0.0.1:8001@18001 master - 0 1535032755000 2 connected 5461-10922 9d1cb9fea95f1b205fc7a5ecb20125259765d6ca 127.0.0.1:8003@18003 master - 0 1535032757258 7 connected 0-5460 f5960002d40cf3711eca7146719c4f568115f76c 127.0.0.1:8002@18002 master - 0 1535032756252 3 connected 10923-16383 93ae6d9a42bf485a955d2387b0a0d659e2c12902 127.0.0.1:8004@18004 slave 1f0d813205ea17d9b254488215bd48612c0ff2b5 0 1535032758265 2 connected
全部节点向8006节点迁移1364个slot:
./redis-trib.rb reshard --slots 4096 --to f8b5360af3341fc0f87b9492b4a3d69689ef1072 --from all --yes 127.0.0.1:8000
槽点迁移后:
7979884fe3020a77decb542b5f841dce99fa555e 127.0.0.1:8007@18007 slave f8b5360af3341fc0f87b9492b4a3d69689ef1072 0 1535035117200 9 connected f8b5360af3341fc0f87b9492b4a3d69689ef1072 127.0.0.1:8006@18006 myself,master - 0 1535035113000 9 connected 0-1363 5461-6826 10923-12286 a2d034b74c9cec4cd8398e8b23ae2d2ab124d49d 127.0.0.1:8000@18000 slave 9d1cb9fea95f1b205fc7a5ecb20125259765d6ca 0 1535035116193 7 connected fd17cbac4a5ca1942490d3734a73387341e80fb7 127.0.0.1:8005@18005 slave f5960002d40cf3711eca7146719c4f568115f76c 0 1535035114000 3 connected 1f0d813205ea17d9b254488215bd48612c0ff2b5 127.0.0.1:8001@18001 master - 0 1535035114000 2 connected 6827-10922 9d1cb9fea95f1b205fc7a5ecb20125259765d6ca 127.0.0.1:8003@18003 master - 0 1535035114000 7 connected 1364-5460 f5960002d40cf3711eca7146719c4f568115f76c 127.0.0.1:8002@18002 master - 0 1535035115000 3 connected 12287-16383 93ae6d9a42bf485a955d2387b0a0d659e2c12902 127.0.0.1:8004@18004 slave 1f0d813205ea17d9b254488215bd48612c0ff2b5 0 1535035115189 2 connected