centos下redis集群搭建(四):三主三从

本篇为集群搭建:对于之前的文章依旧沿用老的redis-3.0.0版本,此版本需要ruby作为支持,现在ruby版本与linux兼容的问题已经无法在3.0.0版本上做集群,所以此篇用redis-5.0.3.tar.gz作为本篇集群搭建的版本,。无论哪个版本大体上的流程步骤没有太大变化,无非不同是新版本其中一点是放弃 Ruby的集群方式,改为 使用 C语言编写的 redis-cli的方式,是集群的构建方式复杂度大大降低。至于其他新特性还需要各位读者专门研究redis语言用法。在这我只把redis集群搭建步骤给大家展示。当让本篇还是需要前三篇基础之上作为依据,才能够更好搭建集群。

由于资源有限,本人实在同一台linux虚拟机上实现的六个redis服务,在实际生产环境中以同样的方式实现

第一步:新建一个文件夹
        mkdir -p /usr/local/redis-cluster 

 

第二步:在文件夹下新建六个文件夹如下 

centos下redis集群搭建(四):三主三从_第1张图片 

第三步:拷贝redis.conf到,7001,7002,7003,7004,7005,7006下
        cp /usr/local/redis-3.0.0/redis.conf /usr/local/redis-cluster/7001
        cp /usr/local/redis-3.0.0/redis.conf /usr/local/redis-cluster/7002
        cp /usr/local/redis-3.0.0/redis.conf /usr/local/redis-cluster/7003
        cp /usr/local/redis-3.0.0/redis.conf /usr/local/redis-cluster/7004
        cp /usr/local/redis-3.0.0/redis.conf /usr/local/redis-cluster/7005
        cp /usr/local/redis-3.0.0/redis.conf /usr/local/redis-cluster/7006 

centos下redis集群搭建(四):三主三从_第2张图片 第四步:修改配置文件vim redis.conf
          daemonize yes //后台运行redis
          port 7001     //配置端口号
          bind 192.168.1.121 //绑定ip (一定要绑定ip,深坑)
          dir /usr/local/redis-cluster/7001/   //修改数据文件存放位置,不同节点存放不同的文件位置,深坑
          cluster-enabled yes   //开启集群
          cluster-config-file nodes-7001.conf //每一个节点对应一个配置文件(最好和端口对应,该配置文件配置其他节点信息)
          cluster-node-timeout 5000
          appendonly yes  //开启aof快照

 

 

 第五步:将配置号的redis.conf配置文件拷贝到7002,7003,7004,7005,7006下,并按第四步修改像相应的配置文件,配置文件变化只需要修改三个地方涉及到7001对应改为7002,7003,7004,7005,7006
        cp redis.conf /usr/local/redis-cluster/7002
        cp redis.conf /usr/local/redis-cluster/7003
        cp redis.conf /usr/local/redis-cluster/7004
        cp redis.conf /usr/local/redis-cluster/7005
        cp redis.conf /usr/local/redis-cluster/7006

centos下redis集群搭建(四):三主三从_第3张图片 

第六步:配置文件改好后便可以启动六个redis服务
        /usr/local/redis/bin/redis-server /usr/local/redis-cluster/7001/redis.conf
        /usr/local/redis/bin/redis-server /usr/local/redis-cluster/7002/redis.conf
        /usr/local/redis/bin/redis-server /usr/local/redis-cluster/7003/redis.conf
        /usr/local/redis/bin/redis-server /usr/local/redis-cluster/7004/redis.conf
        /usr/local/redis/bin/redis-server /usr/local/redis-cluster/7005/redis.conf
        /usr/local/redis/bin/redis-server /usr/local/redis-cluster/7006/redis.conf

centos下redis集群搭建(四):三主三从_第4张图片

第七步:启动集群
              /usr/local/redis/bin/redis-cli --cluster 192.168.1.121:7001  192.168.1.121:7002 192.168.1.121:7003 192.168.1.121:7004 192.168.1.121:7005 192.168.1.121:7006 --cluster-replicas 1  // --replicas 1 表示我们希望为集群中的每个主节点创建一个从节点。(--cluster-replicas 1  命令的意思: 一主一从配置,六个节点就是 三主三从) 

centos下redis集群搭建(四):三主三从_第5张图片

第八步:客户端连接集群
        /usr/local/redis/bin/redis-cli -c -h 192.168.1.121 -p 7001

第九步:查看集群节点信息信息
               cluster nodes

centos下redis集群搭建(四):三主三从_第6张图片

第十步:集群测试

               可以看到,客户端连接加-c选项的时候,存储和提取key的时候不断在7001和7002之间跳转,这个称为客户端重定向。之所以发生客户端重定向,是因为Redis Cluster中的每个Master节点都会负责一部分的槽(slot),存取的时候都会进行键值空间计算定位key映射在哪个槽(slot)上,如果映射的槽(slot)正好是当前Master节点负责则直接存取,否则就跳转到其他Master节点负的槽(slot)中存取,这个过程对客户端是透明的。

centos下redis集群搭建(四):三主三从_第7张图片 第十一步:新增节点 ,进入到相应的目录下重命名,并进行配置
        mkdir 7007
        mkdir 7008
        cp /usr/local/redis-cluster/7001/redis.conf /usr/local/redis-cluster/7007/
        cp /usr/local/redis-cluster/7001/redis.conf /usr/local/redis-cluster/7008/

第十二步:启动新增节点
          /usr/local/redis/bin/redis-server /usr/local/redis-cluster/7007/redis.conf
          /usr/local/redis/bin/redis-server /usr/local/redis-cluster/7008/redis.conf
          进行查看
          ps -ef | grep redis

centos下redis集群搭建(四):三主三从_第8张图片 第十三步:新增节点:
          格式:
          redis-cli --cluster add-node  {新节点IP}:{新节点端口} {任意集群节点IP}:{对应端口} #两个节点添加过以后都是主节点,后面可以将主节点变为从节点:即:7008作为7007的从节点
         /usr/local/redis/bin/redis-cli --cluster add-node 192.168.1.121:7007 192.168.1.121:7007    
         /usr/local/redis/bin/redis-cli --cluster add-node 192.168.1.121:7008 192.168.1.121:7008

centos下redis集群搭建(四):三主三从_第9张图片

第十四步:查看节点信息
        /usr/local/redis/bin/redis-cli --cluster check 192.168.1.121:7001    

centos下redis集群搭建(四):三主三从_第10张图片centos下redis集群搭建(四):三主三从_第11张图片

第十五部 自定义分配槽
        从添加主节点输出信息和查看集群信息中可以看出,我们已经成功的向集群中添加了一个主节点,但是这个主节还没有成为真正的主节点,因为还没有分配槽(slot),也没有从节点,现在要给它分配槽(slot)
        自定义分配槽(slot)
        /usr/local/redis/bin/redis-cli --cluster  reshard 192.168.1.121:7007
        /usr/local/redis/bin/redis-cli info 192.168.1.121:7007  //查看分配的情况

#系统提示要移动多少个配槽(slot),并且配槽(slot)要移动到哪个节点,任意输入一个数,如1024,再输入新增节点的ID1ee802b8051761fd26ab688ff9dca95df35ef3c4
​
#然后提示要从哪几个节点中移除1024个槽(slot),这里输入‘all’表示从所有的主节点中随机转移,凑够1024个哈希槽,然后就开始从新分配槽(slot)了。从新分配完后再次查看集群节点信息

 

centos下redis集群搭建(四):三主三从_第12张图片 第十六部 查看分配的结果
        /usr/local/redis/bin/redis-cli --cluster check 192.168.1.121:7007
        也可以直接查看集群key、slot、slave分布信息
        /usr/local/redis/bin/redis-cli info 192.168.1.121:7007

centos下redis集群搭建(四):三主三从_第13张图片

 第十七步:平衡各节点槽数量
        现在想要各个节点槽的数量相当,所以要进行平衡
        /usr/local/redis/bin/redis-cli --cluster rebalance --cluster-threshold 1 192.168.1.121:7007
        查看结果
        /usr/local/redis/bin/redis-cli --cluster info 192.168.1.121:7007

centos下redis集群搭建(四):三主三从_第14张图片

第十八步:将7008变为7007的从节点
           1.到7008的客户端下:/usr/local/redis/bin/redis-cli -c -h  192.168.1.121 -p 7008
           2.将7008的从节点id对应7007的id :cluster replicate e8666936a0b8dd0059fe360388f550de17f951ce
        

第十九步:查看节点信息,到此新增节点结束,下面介绍删除节点。

centos下redis集群搭建(四):三主三从_第15张图片 第二十步:删除从节点 7008(删除过后查看节点信息便可看到节点已被删除)
          /usr/local/redis/bin/redis-cli  --cluster del-node 192.168.1.121:7008 f0b52132470477a2619e5d4f959b436641fbfb4b
            centos下redis集群搭建(四):三主三从_第16张图片

第二十一步:删除主节点 7007
                1)如果主节点有从节点,将从节点转移到其他主节点
                2)如果主节点有slot,去掉分配的slot,然后在删除主节点 
                     i /usr/local/redis/bin/redis-cli --cluster  reshard 192.168.1.121:7007 //取消分配的slot

#./redis-cli --cluster  reshard 192.168.1.121:7007 //取消分配的slot
How many slots do you want to move (from 1 to 16384)? 4096 //被删除master的所有slot数量  
What is the receiving node ID? 5d8ef5a7fbd72ac586bef04fa6de8a88c0671052  //接收6378节点slot的master  
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:03ccad2ba5dd1e062464bc7590400441fafb63f2  //被删除master的node-id  
Source node #2:done   
  
Do you want to proceed with the proposed reshard plan (yes/no)? yes //取消slot
​
​
​
查看结果: 6381 的槽已经被取消,分配给了6380
# ./src/redis-cli --cluster info 192.168.1.121:7007
192.168.25.64:6380 (4b8e4fa9...) -> 0 keys | 8192 slots | 1 slaves.
192.168.25.64:6381 (d9da56a8...) -> 0 keys | 0 slots | 0 slaves.
192.168.25.64:6382 (0e585e6a...) -> 0 keys | 4096 slots | 1 slaves.
192.168.25.64:6388 (1ee802b8...) -> 3 keys | 4096 slots | 1 slaves.
[OK] 3 keys in 4 masters.
0.00 keys per slot on average.

 

删除 6381
# ./src/redis-cli --cluster del-node 192.168.1.121:7007 d9da56a8f068d5529a7771addf586d14e14ca888
>>> Removing node d9da56a8f068d5529a7771addf586d14e14ca888 from cluster 192.168.1.121:7007
>>> Sending CLUSTER FORGET messages to the cluster...
>>> SHUTDOWN the node.
[root@LWJ01 redis-5.0.3]#

centos下redis集群搭建(四):三主三从_第17张图片 

centos下redis集群搭建(四):三主三从_第18张图片 

centos下redis集群搭建(四):三主三从_第19张图片

你可能感兴趣的:(centos下redis集群搭建(四):三主三从)