LAMP架构之11——Redis-cluster实现redis集群(Codis)

目录

1、实验环境的搭建

2、redis集群的查看

3、redis集群的使用——无中心化

4、redis集群中节点的追加

5、redis-cluster节点的删除


实验环境:由于Codis是基于redis二次开发的,现有的redis环境做Codis部署时会产生不兼容及报错。因此把所有节点的mysql服务和redis服务都关闭,重新部署Codis环境。通过Redis-cluster实现redis集群

1、实验环境的搭建

Codis的实验需要大量集群,以下实验都在server1中进行。

在</root/redis-6.2.4/utils/create-cluster>中,有一个自动创建集群的脚本。按以下方法执行后默认创建6个节点,并自动分为三个“一主一从”的集群结构。

./create-cluster start            #自动创建6个节点
./create-cluster create           #自动设置master和slave

2、redis集群的查看

作为客户端使用:

redis-cli -c -p 30001            #-c表示集群模式(cluster),-p表示端口

作为管理员管理集群:

redis-cli --cluster help            #查询redis集群命令的帮助
redis-cli --cluster check 127.0.0.1:30001        #检查集群

这里引入hash槽的概念,总共16384个hash槽,三个小集群平分这么多哈希槽。这意味着随便连接哪个集群都可以免密访问。

另外,hash槽是集群完整性的标志,三个小集群平分哈希槽,如果其中某一个小集群的master和slave都挂掉了,那么将导致哈希槽不完整,整个大的集群都无法使用。

 

 3、redis集群的使用——无中心化

无中心化的意思是,不管连接哪个节点做操作的时候,都能成功。

随便进入哪个节点,向其中写入数据,这里以30001端口为例,在写入数据后,已经重定向到30002端口了。

 进入30005端口,访问数据,仍然会重定向到30002端口

故障测试:

当集群中某一节点出现故障(shutdown)时。以30002节点为例,原本是30006的master,但是30002节点挂掉以后,,这组集群中的master会自动转移到30006

重启<./create-cluster start>以后,节点30002已经变成了30006的一个slave。

4、redis集群中节点的追加

脚本文件中默认为6个节点,在脚本中把6改称8,就会产生8个节点

测试:启动<create-cluster>

但是,新增的两个节点并不在集群里边,也就是说30001-30006可以互相联通,30007和30008两个节点与其他节点不通。因此需要将这两个节点添加进集群中,具体操作步骤如下:

redis-cli --cluster add-node 127.0.0.1:30007 127.0.0.1:30001
                    #增加节点,    本机接口,     目标集群的接口

<--cluster-slave>参数不添加时表示新增的节点作为master,参数添加时表示新增的节点作为slave。

将30008节点作为30007节点的slave,命令的最后指定master30007的ID

redis-cli --cluster add-node 127.0.0.1:30008 127.0.0.1:30001 --cluster-slave --cluster-master-id d7aed15e5d3bb42be1271c058d365cfa785dd0cb

但是30007和30008两个节点虽然添加进了集群,但并没有分配到hash槽,因此下一步需要向这两个节点分配hash槽。

 分配hash槽:

redis-cli --cluster reshard 127.0.0.1:30001    #从30001节点开始重新分配hash槽

 下边这些参数表示:(1)要分配多少hash槽。(2)被分配hash槽的节点ID。(3)all表示从左右节点中分配hash槽(也可以某一节点的ID表示从该节点中分配hash槽)

分配完成后,可以看到30007节点总共是3000个hash槽,分别从其他三组小集群中划分出来的。

 5、redis-cluster节点的删除

./create-cluster stop                #停止redis-cluster
./create-cluster clean               #清除redis-cluster

 停止并清除redis-cluster后,目录下的所有节点有关的文件都不存在了。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值