Redis——redis-cluster安装使用

redis-cluster安装使用

一、在服务器上安装ruby

1、会在/etc/yum.repos.d/目录下多出一个CentOS-SCLo-scl-rh.repo源
yum install centos-release-scl-rh
2、安装ruby
yum install rh-ruby23 -y
3、必要一步
scl enable rh-ruby23 bash
4、查看ruby版本
ruby -v
5、安装redis接口包
gem install redis

二、redis-cluster具体测试

1、创建节点,不同节点对应不同的目录

6个节点对应6个目录
mkdir 8000 8001 8002 8003 8004 8005

2、在节点对应的目录下复制一份redis.conf文件,并修改其配置

1、复制redis.conf文件,这里仅列出8000端口的redis.conf文件
cp redis.conf ./8000/redis.conf
2、修改配置
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  • rdb方式:必须要客户端调用save命令,才会将数据保存到持久化文件中,容易造成缓存未命中
    AOF方式:二进制的日志,实时记录redis客户端操作的所有写命令,没有来得及save的数据不保存在dump里,但是命令内容保存在了aof文件中,恢复时,只需要将没save的所有内容的命令调出来
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    按上面将所有节点的redis.conf都修改
    在这里插入图片描述
    分别启动节点实例
    在这里插入图片描述
    检查是否启动成功
    ps -ef|grep redis
    在这里插入图片描述

三、客户端登录集群

        当我们以普通的当时登录某个节点时,是不能往节点中设置值的,因为集群开启后,向节点中设置值时,会通过hash计算出一个槽道号,集群中每个节点都对应了一个范围的槽道号,只有计算出的槽道号在节点槽道号的范围中,就会在该节点中设置值,而普通的登录节点是不会计算槽道号的,所以不能在节点中设置值。
在这里插入图片描述

四、创建集群

1、在redis安装目录的src目录下,找到一个rb文件

在这里插入图片描述

2、使用redis-trib.rb命令

redis-trib.rb create --replicas 1 127.0.0.1:8000 127.0.0.1:8001 127.0.0.1:8002 127.0.0.1:8003 127.0.0.1:8004 127.0.0.1:8005 127.0.0.1:8006
–replicas 1 表示自动为每一个master节点分配一个slave节点,上面命令中有6个节点,程序会按照一定规则生成3个master(主)3个slave(从)
redis-trib.rb create 127.0.0.1:8000 127.0.0.1:8001 127.0.0.1:8002
没有带–replicas表示创建的全是master(主)节点

1、创建三个主节点集群

在这里插入图片描述

注意:如果创建失败,可能是需要关闭防火墙
service iptables stop # 临时关闭防火墙
chkconfig iptables off # 永久关闭防火墙配置,和上面的一起使用

2、使用集群登录redis

在这里插入图片描述

查看集群状态

cluster info
在这里插入图片描述

设置一个值

在这里插入图片描述

动态添加主节点

// 将8003端口节点加入到8000节点的集群中,默认创建的是主节点,并且不管理槽道,不管理槽道的主节点是不存储的数据的
redis-trib.rb add-node 192.168.75.102:8003 192.168.75.102:8000
在这里插入图片描述
在这里插入图片描述

新的主节点要启用,需要分配槽道

redis-trib.rb reshard 192.168.75.102:8000
表示将集群中的槽道重新分配,后面的节点信息已经在集群中存在的任意节点信息
在这里插入图片描述
在这里插入图片描述

动态添加从节点(8004添加到8001)

redis-trib.rb add-node --slave --master-id 8001节点的id,使用cluster nodes查看 192.168.75.102:8004 192.168.0.102:8001
在这里插入图片描述
redis-trib.rb add-node --slave --master-id 02547600e3bc609b89355d3fd0ccc4d779a8057f 192.168.75.102:8004 192.168.75.102:8001
在这里插入图片描述
在这里插入图片描述

五、redis集群补充操作

1、重启集群

没有restart类似的重启集群的命令

重启集群的目的:操作时的各种失误,导致集群失效

第一步:杀掉所有redis进程
第二步:删除node-8000.conf文件(记录了当前服务器的唯一一个集群节点状态)
第三步:删除dump8000.rdb文件(为了防止启动其他新节点时,读取原有dump的数据导致添加集群节点非空失败)删除当前目录下所有dump开头的文件:rm -f dump*
第四步:可以调用原有的配置文件,启动redis服务,利用redis-trib.rb create 重新创建集群
在这里插入图片描述
这里我使用cluster meet来添加节点
在这里插入图片描述

  • 如下可知,所有节点都加入到了集群,但是没有分配槽道
    在这里插入图片描述
  • 使用cluster addslots 0,给节点分配0号槽道
    在这里插入图片描述
  • 在16384个槽道分配完成之前,集群是不可用的
    在这里插入图片描述
  • 编写一个shell脚本分配槽道

执行shell脚本:sh ./8000slots0_5461.sh

for i in {1..5461}; do redis-cli -h 192.168.75.102 -c -p 8000 cluster addslots $i;done

在这里插入图片描述
复制两份sh文件,分别给8001和8002分配槽道
在这里插入图片描述
在这里插入图片描述
验证槽道分配完毕之后,集群是否开始工作
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Redis集群是一个由多个主从节点组成的分布式服务集群。它的主要特点是具有复制、高可用和分片的能力。Redis集群不需要sentinel哨兵也能完成节点移除和故障转移的功能。具体来说,Redis集群将数据划分为16384个slots,每个节点负责一部分槽位的数据。每个节点之间通过Gossip协议相互交互集群信息,并保存着其他节点的槽位分配情况。这种去中心化的方式使得集群具有高可用性和扩展性。集群中的每个节点都可以水平扩展,官方建议不超过1000个节点。Redis集群的配置相对简单,性能和高可用性也优于之前版本的哨兵模式。而在Redis 4.0之后的版本中,引入了面对槽位的管理,使得集群的路由信息管理和数据迁移更加灵活和高效。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [redis系列六redis-cluster集群的原理](https://blog.csdn.net/sswltt/article/details/106438796)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 50%"] - *2* *3* [Redis——cluster集群原理](https://blog.csdn.net/weixin_41605937/article/details/114779041)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值