Redis-cluster集群搭建+SpringBoot配置

  1. 准备工作
    1)下载Redis安装文件:https://github.com/MSOpenTech/redis/releases/,Redis提供msi和zip格式的下载文件,这里下载zip格式Redis-x64-3.2.100版本。
    2)下载Ruby安装文件:http://dl.bintray.com/oneclick/rubyinstaller/rubyinstaller-2.2.4-x64.exe
    3)下载Ruby环境下Redis的驱动:https://rubygems.org/gems/redis/versions/3.2.2,考虑到兼容性,这里下载的是3.2.2版本
    Redis-cluster集群搭建+SpringBoot配置_第1张图片
    4)下载Redis官方提供的创建Redis集群的ruby脚本文件redis-trib.rb,这个redis-trib.rb从对应版本的redis-XX.tar.gz中的src目录下获取(踩的坑,可能存在 redis-trib.rb与你所安装redis的版本不符。从源文件中获取redis-trib.rb不会出WARNING: redis-trib.rb is not longer available!问题)
    windows3.2.10地址:
    https://github.com/MicrosoftArchive/redis/releases
    Redis-cluster集群搭建+SpringBoot配置_第2张图片
  2. Redis安装
    集群规划有三个节点的集群,每个节点有一主一备。需要6台虚拟机。
    把 redis 解压后,再复制出 5 份,配置 三主三从集群。 由于 redis 默认端口号为 6379,那么其它5份的端口可以为6380,6381,6382,6383,6384。 并且把目录使用端口号命名
    Redis-cluster集群搭建+SpringBoot配置_第3张图片
    打开目录6379下有一个文件 redis.windows.conf,修改里面的端口号,以及集群支持配置。
    port 6379
    cluster-enabled yes
    cluster-config-file nodes-6379.conf
    cluster-node-timeout 15000
    appendonly yes

    其余redis更改为对应端口
    如果cluster-enabled 不为yes, 那么在使用JedisCluster集群代码获取的时候,会报错。
    cluster-node-timeout 调整为 15000,那么在创建集群的时候,不会超时。
    cluster-config-file nodes-6379.conf 是为该节点的配置信息,这里使用 nodes-端口.conf命名方法。服务启动后会在目录生成该文件。
    在每个节点目录下建立 start.bat 来启动 redis,内容如下:
    title redis-6379
    redis-server.exe redis.windows.conf
  3. Ruby安装
    redis的集群使用 ruby脚本编写,所以系统需要有 Ruby 环境
    Redis-cluster集群搭建+SpringBoot配置_第4张图片
    安装时3个选项都勾选、
  4. 安装Redis的Ruby驱动
    将下载的"Ruby环境下Redis的驱动文件(redis-3.2.2.gem)"拷贝到Ruby安装根目录。然后打开cmd执行命令
 	gem install --local filePath/filename.gem

在这里插入图片描述
5. 安装集群脚本redis-trib.rb
建议保存到一个Redis的目录下,例如放到6379目录下。
将所有的redis服务启动,master节点不能少于3个,所以我们用了6个redis,3主3从
切换到redis目录在命令行中执行

ruby redis-trib.rb create --replicas 1 127.0.0.1:6379 127.0.0.1:6380 127.0.0.1:6381 127.0.0.1:6382 127.0.0.1:6383 127.0.0.1:6384

注: --replicas #指定集群中每个主节点配备几个从节点,这里设置为1。
主节点崩溃,从节点的Redis就会提升为主节点,代替原来的主节点工作,崩溃的主Redis回复工作后,会成为从节点

Redis-cluster集群搭建+SpringBoot配置_第5张图片
在出现 Can I set the above configuration? (type ‘yes’ to accept): 请确定并输入 yes 。成功后的结果如下:
Redis-cluster集群搭建+SpringBoot配置_第6张图片
6. 测试
使用命令redis-cli -c -h 192.168.*.** -p 6379 连接集群。
-c表示集群
-h表示IP地址
-p表示端口
测试在6381set一个字符串,显示ok。
客户端连接自动转换的到6381,这是因为集群把这个值分配在了6381的插槽中,而且在6381中也可以get到刚设置的值。
Redis-cluster集群搭建+SpringBoot配置_第7张图片
再次连接到6384,仍然可以取到值
在这里插入图片描述
7. 添加删除节点
1)添加节点add-node
#向集群添加主节点

redis-trib.rb add-node 192.168.*.**:6385 192.168.*.**:6379

#向集群中添加从节点,它会随机分配给任意一个主节点

redis-trib.rb add-node --slave 192.168.*.**:6385 192.168.*.**:6379

#向集群中定向添加节点

redis-trib.rb add-node --slave --master-id 3c3a0c74aae0b56170ccb03a76b60cfe7dc1912e 192.168.*.**:6385 192.168.*.**:6379

第一个参数:新添加节点的地址以及端口192.168..**:6385
第二个参数:现有集群中任意一个服务端地址以及端口192.168.
.**:6379
查看所有节点:

cluster nodes

2)移除节点del-node

redis-trib del-node 192.168.*.**:6385

参数可以使ip:port,nodeid(可从nodes.conf文件中找到)
3)从新分槽

redis-trib reshard 192.168.*.**:6385

接下来会让你输入分配的槽数,范围在1-16384,我输入4000.
然后会询问你从哪个节点分出这些槽数,我选择all所有节点中。

How many slots do you want to move (from 1 to 16384)? 4000

最后会询问你是否执行这个分槽计划,输入yes开始执行计划。

Do you want to proceed with the proposed reshard plan (yes/no)? yes

SpringBoot整合Redis集群环境配置:
基本与单机版区别不大,application-redisCluster.yml

spring:
  redis:
    #连接超时时长(毫秒)
    timeout: 6000ms
    #密码
    #password:
    cluster:
      nodes:
        192.168.26.166:6379,192.168.26.166:6380,192.168.26.166:6381,192.168.26.166:6382,192.168.26.166:6383,192.168.26.166:6384
    jedis:
      pool:
        max-active: 8
        max-wait: -1
        max-idle: 500
        min-idle: 0
    lettuce:
      shutdown-timeout: 0

其余配置以及util类,参考另一篇博客
https://blog.csdn.net/qq_41764647/article/details/103275319

你可能感兴趣的:(Redis集群,windows)