首页 技术 正文
技术 2022年11月21日
0 收藏 634 点赞 3,174 浏览 3468 个字

一、Redis集群的水平扩展

  Redis3.0版本以后,有了集群的功能,提供了比之前版本的哨兵模式更高的性能与可用性,但是集群的水平扩展却比较麻烦,接下来介绍下Redis高可用集群如何做水平扩展,在原集群的6个节点的基础上新增2个节点,由原来的3主3从变成4主4从,原先的3主3从部署详见Redis系列(二):Redis高可用集群,如下图:

Redis系列(三):Redis集群的水平扩展与伸缩

二、水平扩展具体操作

   将redis-5.0.2文件夹拷贝到新的主机192.168.160.154上去,(1)scp -r /usr/local/redis-5.0.2 root@192.168.160.154:/usr/local/ 进去到192.168.160.154主机 (2)cd /usr/local

Redis系列(三):Redis集群的水平扩展与伸缩

   新启动2个redis实例,然后检查是否启动成功 (1)/usr/local/redis-5.0.2/bin/redis-server /usr/local/redis-5.0.2/redis-cluster/700*/redis.conf (2)ps -ef | grep redis 查看是否启动成功

Redis系列(三):Redis集群的水平扩展与伸缩

  ③ 查看redis集群的命令帮助 (1)cd /usr/local/redis-5.0.2 (2)bin/redis-cli –cluster helpRedis系列(三):Redis集群的水平扩展与伸缩

create:创建一个集群host1:port1 ... hostN:portN
call:可以执行redis命令
add-node:将一个节点添加到集群里,第一个参数为新节点的ip:port,第二个参数为集群中任意一个已经存在的节点的ip:port
del-node:移除一个节点
reshard:重新分片
check:检查集群状态

  ④ 使用add-node命令新增一个主节点192.168.160.154:7001(master),前面的ip:port为新增节点,后面的ip:port为集群中已存在节点(1)/usr/local/redis-5.0.2/bin/redis-cli –cluster add-node 192.168.160.154:7001 192.168.160.146:7001

Redis系列(三):Redis集群的水平扩展与伸缩

  (1)连接任意一个客户端即可:./redis-cli -c -h -p (-a访问服务端密码,-c表示集群模式,指定ip地址和端口号)如:/usr/local/redis-5.0.2/bin/redis-cli -c -h 192.168.160.146 -p 700* (2)进行验证: cluster info(查看集群信息)、cluster nodes(查看节点列表)

Redis系列(三):Redis集群的水平扩展与伸缩

   使用redis-cli命令为192.168.160.154:7001分配slots槽位,找到集群中的任意一个主节点,对其进行重新分片工作。(1)/usr/local/redis-5.0.2/bin/redis-cli –cluster reshard 192.168.160.146:7001

How many slots do you want to move (from 1 to 16384)? 4000
(ps:需要多少个槽移动到新的节点上,自己设置,比如4000个hash槽)
What is the receiving node ID? 44b0bd6cf056af7dbbfa0dd9497def1cfc21eb6d
(ps:把这4000个hash槽移动到哪个节点上去,需要指定节点id)
Please enter all the source node IDs.
Type 'all' to use all the nodes as source nodes for the hash slots.
Type 'done' once you entered all the source nodes IDs.
Source node 1:all
(ps:输入all为从所有主节点中分别抽取相应的槽数指定到新节点中,抽取的总槽数为4000个;或者输入原节点ID然后输入done,意思将输入的节点ID,抽取的总槽数为4000个)
Do you want to proceed with the proposed reshard plan (yes/no)? yes
(ps:输入yes确认开始执行分片任务)

  ⑦ 查看下最新的集群状态

Redis系列(三):Redis集群的水平扩展与伸缩

   添加从节点192.168.160.154:7002到集群中去并查看集群状态

  (1)/usr/local/redis-5.0.2/bin/redis-cli –cluster add-node 192.168.160.154:7002 192.168.160.146:7001

Redis系列(三):Redis集群的水平扩展与伸缩

  (2)cluster nodes

Redis系列(三):Redis集群的水平扩展与伸缩

  (3)如上图所示,还是一个master节点,没有被分配任何的hash槽。我们需要执行replicate命令来指定当前节点(从节点)的主节点id为哪个,首先需要连接新加的192.168.160.154:7002节点的客户端,然后使用集群命令进行操作,把当前的192.168.160.154:7002(slave)节点指定到一个主节点下(这里使用之前创建的192.168.160.154:7001主节点)

  (3-1)/usr/local/redis-5.0.2/bin/redis-cli -c -h 192.168.160.154 -p 7002

Redis系列(三):Redis集群的水平扩展与伸缩

  (3-2)cluster replicate 44b0bd6cf056af7dbbfa0dd9497def1cfc21eb6d #后面这串id为192.168.160.154:7001的节点id

Redis系列(三):Redis集群的水平扩展与伸缩

  (3-2)cluster nodes

Redis系列(三):Redis集群的水平扩展与伸缩

三、水平伸缩具体操作

  目的还原成原始集群,如下图:

Redis系列(三):Redis集群的水平扩展与伸缩

   删除192.168.160.154:7002从节点,用del-node删除从节点192.168.160.154:7002,指定删除节点ip和端口,以及节点id(192.168.160.154:7002节点id)

  (1)/usr/local/redis-5.0.2/bin/redis-cli –cluster del-node 192.168.160.154:7002 564963541c243365cbb20aed69e98048d21d68fd

Redis系列(三):Redis集群的水平扩展与伸缩

  (2)cluster nodes

Redis系列(三):Redis集群的水平扩展与伸缩

   删除192.168.160.154:7001主节点,这个步骤相对麻烦一些,因为主节点的里面是有分配了slots槽位,所以必须先把192.168.160.154:7001里的slots槽位放入到其他的可用主节点中去,然后再进行移除节点操作,不然会出现数据丢失问题(目前只能把master的数据迁移到一个节点上,暂时做不了平均分配功能)

  (1)/usr/local/redis-5.0.2/bin/redis-cli –cluster reshard 192.168.160.154:7001

How many slots do you want to move (from 1 to 16384)? 4000
(ps:需要多少个槽移动到新的节点上,自己设置,比如4000个hash槽)
What is the receiving node ID? e7f80ba80749904838b6d779a0646e7f22313624
(ps:把这4000个hash槽移动到哪个节点上去,需要指定节点id)
Please enter all the source node IDs.
Type 'all' to use all the nodes as source nodes for the hash slots.
Type 'done' once you entered all the source nodes IDs.
Source node 1:44b0bd6cf056af7dbbfa0dd9497def1cfc21eb6d
Source node 1:done
(ps:输入all为从所有主节点中分别抽取相应的槽数指定到新节点中,抽取的总槽数为4000个;或者输入原节点ID然后输入done,意思将输入的节点ID,抽取的总槽数为4000个)
Do you want to proceed with the proposed reshard plan (yes/no)? yes
(ps:输入yes确认开始执行分片任务)

  (2)cluster nodes 已经成功的把192.168.160.154:7001主节点的数据迁移到192.168.160.146:7001上去了

Redis系列(三):Redis集群的水平扩展与伸缩

   (3)最后我们直接使用del-node命令删除192.168.160.154:7001主节点即可

Redis系列(三):Redis集群的水平扩展与伸缩

  (4)最后执行cluster nodes

Redis系列(三):Redis集群的水平扩展与伸缩

相关推荐
python开发_常用的python模块及安装方法
adodb:我们领导推荐的数据库连接组件bsddb3:BerkeleyDB的连接组件Cheetah-1.0:我比较喜欢这个版本的cheeta…
日期:2022-11-24 点赞:878 阅读:9,104
Educational Codeforces Round 11 C. Hard Process 二分
C. Hard Process题目连接:http://www.codeforces.com/contest/660/problem/CDes…
日期:2022-11-24 点赞:807 阅读:5,580
下载Ubuntn 17.04 内核源代码
zengkefu@server1:/usr/src$ uname -aLinux server1 4.10.0-19-generic #21…
日期:2022-11-24 点赞:569 阅读:6,428
可用Active Desktop Calendar V7.86 注册码序列号
可用Active Desktop Calendar V7.86 注册码序列号Name: www.greendown.cn Code: &nb…
日期:2022-11-24 点赞:733 阅读:6,200
Android调用系统相机、自定义相机、处理大图片
Android调用系统相机和自定义相机实例本博文主要是介绍了android上使用相机进行拍照并显示的两种方式,并且由于涉及到要把拍到的照片显…
日期:2022-11-24 点赞:512 阅读:7,835
Struts的使用
一、Struts2的获取  Struts的官方网站为:http://struts.apache.org/  下载完Struts2的jar包,…
日期:2022-11-24 点赞:671 阅读:4,918