当前位置: 首页 > article >正文

linux环境搭建redis cluster集群

1.解压redis安装包

压缩包文件夹位置:/opt/hy/redis-cluster/

执行解压命令:tar -zxvf redis-7.0.2.tar.gz

2.安装redis

进入reids文件夹(cd /opt/hy/redis-cluster/redis-7.0.2/),并执行编译命令:make

3.创建配置文件

搭建3主3从的集群

在/opt/hy/redis-cluster/目录下创建node-7001,node-7002,node-7003,node-7004,node-7005,node-7006等6个redis节点目录

复制/opt/hy/redis-cluster/redis-7.0.2/目录下的redis.conf配置文件到以前目录

修改以下参数(port、cluster-config-file、dir的值与目录对应)

daemonize yes
port 7001
protected-mode no
bind 0.0.0.0
cluster-enabled yes
cluster-config-file nodes-7001.conf
cluster-node-timeout 15000
appendonly yes
dir /opt/hy/redis-cluster/node-7001/

参数说明:

参数说明
daemonize是否开启守护进程(运行redis后台启动)
port端口号
protected-mode是否开启保护模式,开启除本机外不能连接
cluster-enabled是否激活集群模式
cluster-config-file集群配置文件名称,nodes-端口号.conf(自动生成)
cluster-node-timeout节点下线超时时间
appendonly是否开启aof模式持久化
dir指定数据文件存储位置
4.启动redis

根据配置文件逐个启动redis服务,7001节点启动命令如下,其余节点更改配置文件路径即可

nohup /opt/hy/redis-cluster/redis-7.0.2/src/redis-server /opt/hy/redis-cluster/node-7001/redis.conf &
5.集群创建
/opt/hy/redis-cluster/redis-7.0.2/src/redis-cli --cluster create --cluster-replicas 1 10.21.1.201:7001 10.21.1.201:7002 10.21.1.201:7003 10.21.1.201:7004 10.21.1.201:7005 10.21.1.201:7006

/opt/hy/redis-cluster/redis-7.0.2/src/redis-cli --cluster create --cluster-replicas 1 10.21.1.201:7001 10.21.1.201:7002 10.21.1.201:7003 10.21.1.201:7004 10.21.1.201:7005 10.21.1.201:7006

执行命令后,输入yes确认

--cluster create 创建集群实例列表

--cluster-replicas 复制因子1,即每个主节点需一个从节点

6.查看集群状态

首先连接任意节点

执行命令:/opt/hy/redis-cluster/redis-7.0.2/src/redis-cli -c -h 10.21.1.201 -p 7001

查看集群信息:cluster info

查看节点信息:cluster nodes

7.添加删除节点

我们对当前的3主3从进行扩容成4主4从,首先在准备多一台Liunx,并且在上面安装好Redis配置好2个Redis服务的配置文件,并且启动2个服务。

# 使用如下命令即可添加节点将一个新的节点添加到集群中
# --cluster add-node 添加节点 新节点IP:新节点端口 任意存活节点IP:任意存活节点端口
/opt/hy/redis-cluster/redis-7.0.2/src/redis-cli --cluster add-node 10.21.1.201:8007 10.21.1.201:7001

使用cluster nodes命令查看集群信息表,可以看到8007已经被添加到了新的集群中了,但是8007并且没有任何的槽位信息,这时就需要迁移槽位

槽位迁移
# 使用如下命令将其它主节点的分片迁移到当前节点中
# --cluster reshard 槽位迁移 从节点IP:节点端口
/opt/hy/redis-cluster/redis-7.0.2/src/redis-cli --cluster reshard 10.21.1.201:8002
​

迁移完毕后再查看集群信息可以看到8007已经添加了槽位了

从节点添加

添加从节点首先需要先把节点添加到集群中

# 使用如下命令即可添加节点将一个新的节点添加到集群中
# --cluster add-node 添加节点 新节点IP:新节点端口 任意存活节点IP:任意存活节点端口
/opt/hy/redis-cluster/redis-7.0.2/src/redis-cli --cluster add-node 10.21.1.201:8008 10.21.1.201:7001
​

通过节点信息可以查看到8008节点已经添加进去了,但是任何的节点添加都是主节点,那么接下来我们需要把8008改成从节点

我们需要使用客户端命令连接到刚刚新添加的8008节点的上,并且为他设置一个主节点,设置完毕后再次查看节点信息,可以看到8008已经是8007的从节点了

# 连接需设为从节点的Redis服务
/opt/hy/redis-cluster/redis-7.0.2/src/redis-cli -p 8008
# 将当前节点分配为 8cf44439390dc9412813ad27c43858a6bb53365c 的从节点
CLUSTER REPLICATE 8cf44439390dc9412813ad27c43858a6bb53365c
​
删除主节点

主节点删除就那么首先需要对槽进行迁移,如当前需要移除8007节点,那么首先需要把8007的节点槽位移动到别的节点中,才能删除(参考槽位迁移)

# 使用如下命令将其它主节点的分片迁移到当前节点中
# --cluster reshard 槽位迁移 从节点IP:节点端口
/opt/hy/redis-cluster/redis-7.0.2/src/redis-cli --cluster reshard 10.21.1.201:8007

槽位迁移完成后执行以下命令

# 执行如下命令删除节点
# --cluster del-node 连接任意一个存活的节点IP:连接任意一个存活的节点端口 要删除节点ID 
/opt/hy/redis-cluster/redis-7.0.2/src/redis-cli --cluster del-node 10.21.1.201:8002 8cf44439390dc9412813ad27c43858a6bb53365c
​
删除从节点

直接执行删除命令即可

# 执行如下命令删除节点
# --cluster del-node 连接任意一个存活的节点IP:连接任意一个存活的节点端口 要删除节点ID 
/opt/hy/redis-cluster/redis-7.0.2/src/redis-cli --cluster del-node 10.21.1.201:8002 8cf44439390dc9412813ad27c43858a6bb53365c

8.spingboot整合redis cluster

添加依赖

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-redis</artifactId>
        </dependency>
        <!--lettue pool 缓存连接池-->
        <dependency>
            <groupId>org.apache.commons</groupId>
            <artifactId>commons-pool2</artifactId>
        </dependency>

添加配置文件(注意集群模式下只支持database 0库)

  redis: 
    database: 0
    cluster:
      nodes:
        - 10.21.1.201:7001
        - 10.21.1.201:7002
        - 10.21.1.201:7003
        - 10.21.1.201:7004
        - 10.21.1.201:7005
        - 10.21.1.201:7006
      max-redirects: 3
    lettuce:
      pool:
        max-idle: 16
        max-active: 32
        min-idle: 8


                

http://www.kler.cn/a/472071.html

相关文章:

  • 探索Whisper:从原理到实际应用的解析
  • 【Linux系列】并发与顺序执行:在 Linux 脚本中的应用与选择
  • C语言 扫雷程序设计
  • Linux命令-杀掉被占用的端口号
  • 【计算机网络】常见交换机名词术语
  • Docker安装易有云(casaos安装易有云)
  • 匹配一个文件夹下的所有excel——python
  • C++网络程序设计
  • 137. 只出现一次的数字 II
  • MYSQL-------------优化MYSQLserver磁盘 I/O 问题及相关优化策略
  • rabbitmq的三个交换机及简单使用
  • 41.6 安装部署,效果测试,架构回顾
  • pytest和unittest的区别
  • 使用 IP 核和开源库减少 FPGA 设计周期
  • Scala语言的循环实现
  • 009:传统计算机视觉之边缘检测
  • Linux 常用命令 - touch 【创建空文件与修改时间戳】
  • 【C语言】可移植性陷阱与缺陷(八): 随机数的大小
  • 如何安装和配置PHP开发环境?
  • apex安装