单机redis集群配置

redis集群配置

redis集群是对redis的水平扩容,即启动N个redis节点,将整个数据分布存储在这个N个节点中,每个节 点存储总数据的1/N。

redis集群的数量必须是偶数,每一个主机都要有从机,至少有三个主机,三个从机,如果主机宕机,那么从机会自动变为主机,如果宕机的主机再恢复正常,那么则作为从机使用,以此轮询。

如下图:由3台master和3台slave组成的redis集群,每台master承接客户端三分之一请求和写入的数 据,当master挂掉后,slave会自动替代master,做到高可用。

image-20220429214813865

1、配置3主3从集群

此处配置为在同一太计算机上的配置,所以是通过修改端口号来实现的,实际应用不需要修改端口号,修改ip地址即可

集群配置:

角色端口
master7001
master7002
master7003
slave7004
slave7005
slave7006
  1. 创建一个目录/opt/cluster,用来安装集群的redis服务器。

    mkdir /opt/cluster
    
  2. 安装6台redis服务器在/opt/cluster中,分别安装在7001-7006文件夹。并将redis安装文件中的redis.conf文件复制到/opt/cluster中。

    cp /software/redis-3.0.0/redis.conf /opt/cluster/
    

    image-20220430164854456

  3. 创建配置文件,这里的6个服务器的配置文件除了端口号外其他信息都是一致的,6个配置文件分别命名为redis-7001.confredis-7006,配置的端口号和其他文件地址改变一下就可以 了(ip地址也要改成自己的ip),详细配置如下(以7001为例):

    # 引入redis.conf文件
    include /opt/cluster/redis.conf
    # 开启后台启动
    daemonize yes
    # ip地址
    bind 192.168.170.132
    
    dir /opt/cluster/
    # 端口
    port 7001
    # rdb文件
    dbfilename dump_7001.rdb
    # pid文件
    pidfile /var/run/redis_7001.pid
    #日志文件
    logfile "./7001.log"
    
    # 开启集群设置
    cluster-enabled yes
    # 设置节点配置文件
    cluster-config-file node-7001.conf
    # 设置节点失联时间,超过该时间(毫秒),集群自动进行主从切换
    cluster-node-timeout 15000
    

    复制5份redis-7001.conf,把文件中的所有7001改为7002…7006即可。

    image-20220430170506669

  4. 分别启动六个服务器(后台启动)

    ./redis-server /opt/cluster/redis-7001.conf
    ./redis-server /opt/cluster/redis-7002.conf 
    ./redis-server /opt/cluster/redis-7003.conf 
    ./redis-server /opt/cluster/redis-7004.conf 
    ./redis-server /opt/cluster/redis-7005.conf 
    ./redis-server /opt/cluster/redis-7006.conf 
    
  5. 查看集群的启动状态

    ps -ef|grep redis
    

    image-20220430172754878

  6. 确保启动成功后,查看/opt/cluster中是否生成了六个nodes-xxx.conf文件

    image-20220430173103208
  7. 确保以上都信息都正常后,将6个节点合成一个集群。

    如果redis的版本是redis-5.0.0及以上版本,可以直接使用bin目录中的redis-cli来创建集群:

    ./redis-cli --cluster create --cluster-replicas 192.168.170.132:7001 192.168.170.132:7002 192.168.170.132:7003 192.168.170.132:7004 192.168.170.132:7005 192.168.170.132:7006
    

    这里使用的是redis-3.0.0,所以不能使用这种方式创建redis集群,需要使用redis-3.0.0.gem工具来创建redis集群。该工具安装:

    • 把下载该工具后上传到linux中的/software中。

    • 进入/software目录,安装工具

      gem install redis-3.0.0.gem
      

      如果直接安装的话会提示-bash: gem: command not found,这是因为该gem工具是用ruby语言编写的,所以需要先安装ruby语言的运行环境。联网安装即可。

      yum install ruby
      yum install rubygems
      

      安装了ruby的运行环境后gem工具可以使用,此时把redis安装目录中的src目录里面的redis-trib.rb文件复制到/opt/cluster

       cp /software/redis-3.0.0/src/redis-trib.rb /opt/cluster/
      

    继续配置redis的集群,redis-5.0.0以下的版本配置(使用gem工具创建集群):

    进入/opt/cluster目录,执行命令构建集群即可。

     ./redis-trib.rb create --replicas 1 192.168.170.132:7001 192.168.170.132:7002 192.168.170.132:7003 192.168.170.132:7004 192.168.170.132:7005 192.168.170.132:7006
    

    注意replicas后面有个1不要忘了。这里的1表示用最简单的方式创建配置集群,即每个master配置了一个salve。

    至此,redis集群创建成功。

  8. 使用redis-cli登录7001,执行命令查看集群是否创建成功。

    # -c表示以集群的方式登录
    ./redis-cli -h 192.168.170.132 -p 7001 -c
    
    #登录后查看集群信息
    cluster nodes
    

    image-20220430180923814

2、redis集群的节点分配原则

一个集群至少有3个主节点,因为新master的选举需要大于半数的集群master节点同意才能选举成功, 如果只有两个master节点,当其中一个挂了,是达不到选举新master的条件的。 选项–cluster-replicas 1表示我们希望为集群中的每个主节点创建一个从节点。 分配原则尽量保证每个主库运行在不同的ip,每个主库和从库不在一个ip上,这样才能做到高可用。

3、redis集群存储数据的原理

通过网络将多台redis服务器连接在一起,形成redis集群后,系统将会产生16384个slots(哈希槽,slots是用于具体存储数据的空间,0-16383),而数据库中的每个key都属于16384个slots中的其中1个,当通过key读写数据的时候,redis需要先根据 key计算出key对应的slots,然后根据slots和master的映射关系找到对应的redis节点,key对应的数据 就在这个节点上面。 集群中使用公式 CRC16(key)%16384 计算key属于哪个槽。

  • 32
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要在 Spring Boot 中使用 Redis 集群,需要在 `application.yml` 或 `application.properties` 文件中配置 Redis 集群的节点信息。下面是一个示例 `application.yml` 文件: ```yaml spring: redis: cluster: nodes: - host: 192.168.0.1 port: 6379 - host: 192.168.0.2 port: 6379 - host: 192.168.0.3 port: 6379 ``` 在这个示例中,Redis 集群由三个节点组成,它们的 IP 地址和端口号分别为 `192.168.0.1:6379`、`192.168.0.2:6379` 和 `192.168.0.3:6379`。 另外,如果 Redis 集群中启用了密码认证,还需要在配置文件中设置密码: ```yaml spring: redis: cluster: nodes: - host: 192.168.0.1 port: 6379 - host: 192.168.0.2 port: 6379 - host: 192.168.0.3 port: 6379 password: yourpassword ``` 此外,还可以配置 Redis 连接池的一些参数,例如最大连接数、最大空闲连接数、连接超时时间等: ```yaml spring: redis: cluster: nodes: - host: 192.168.0.1 port: 6379 - host: 192.168.0.2 port: 6379 - host: 192.168.0.3 port: 6379 password: yourpassword pool: max-active: 8 max-idle: 8 min-idle: 0 max-wait: -1ms ``` 这里的参数含义如下: - `max-active`:连接池中最大的活跃连接数,默认值为 8。 - `max-idle`:连接池中最大的空闲连接数,默认值为 8。 - `min-idle`:连接池中最小的空闲连接数,默认值为 0。 - `max-wait`:从连接池中获取连接的最大等待时间,默认值为 -1ms,表示永不超时。如果超时了,则会抛出 `RedisConnectionFailureException` 异常。 注意:以上配置只适用于使用 Redis 集群的情况,在单机 Redis 中,应该使用 `spring.redis.host` 和 `spring.redis.port` 配置主机地址和端口号。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值