• centos6.5下redis集群配置(多机多节点)


    可参考官网文档:redis集群配置

    需要注意的是,集群中的每个节点都会涉及到两个端口,一个是用于处理客户端操作的(如下介绍到的6379/6380),另一个是10000+{监听端口},用于集群各个节点间通信。

    第一步 :环境准备

      此处我准备了三台服务器(也可安装三台虚拟机),其内网IP分别为:192.168.103.54  192.168.103.56  192.168.103.57,我们约定把192.168.103.54作为集群控制端。

    第二步:安装redis

      可参考redis安装与配置

    第三步:修改配置、创建节点(此处我每台机器运行两个redis节点)

      次处我的redis安装目录为:/usr/data/redis-4.0.8


      1、跳转到redis安装目录

    cd /usr/data/redis-4.0.8

       2、创建一个新目录:cluster  (该目录名称、位置任意,此处我是建在了redis安装目录下)

    mkdir cluster

      3、在cluster目录下,创建两个目录,分别是6379  6380(用于存储redis配置文件)

      备注:此处新建的目录名必须与redis节点对应的端口号对应

    cd cluster
    mkdir 6379 6380

      4、添加redis节点对应的配置文件,此处我直接拷贝redis安装目录下的配置文件redis.conf再加以修改

    cp redis.conf cluster/6379
    cp redis.conf cluster/6380

      5、修改redis配置文件(目录6379、6380下的redis.conf),主要修改如下配置,

    #绑定局域网ip,使得三台服务器可相互访问
    bind 192.168.103.54
    protected-mode yes
    #redis节点监听端口
    port 6380
    #以守护进程启动
    daemonize yes
    pidfile /var/run/redis_6380.pid
    dbfilename dump_6380.rdb
    #如下为集群配置
    cluster-enabled yes  #启用集群
    cluster-config-file nodes-6380.conf  #集群配置文件,由redis自动更新,不需要手动配置
    cluster-node-timeout 5000  #集群节点超时时间,即集群中主从节点断开连接时间阈值,超过该值则认为主节点不可以,从节点将有可能转为master
    cluster-slave-validity-factor 10 #在进行故障转移的时候全部slave都会请求申请为master,但是有些slave可能与master断开连接一段时间了导致数据过于陈旧,不应该被提升为master。该参数就是用来判断slave节点与master断线的时间是否过长
    (计算方法为:cluster-node-timeout * cluster-slave-validity-factor,此处为:5000 * 10 毫秒
    #cluster-migration-barrier 1
    cluster-require-full-coverage yes #集群中的所有slot(16384个)全部覆盖
    ,才能提供服务

    第四步:启动三台机器上的6个节点

    cd /usr/data/redis-4.0.8/src
    ./redis-server ../cluster/6379/redis.conf 
    ./redis-server ../cluster/6380/redis.conf 

    第五步:创建集群

      因为此处我是以192.168.103.54作为集群控制端,所有一下操作都在改机器上完成

    gem install redis
    ./redis-trib.rb create --replicas 1 192.168.103.54:6379 192.168.103.54:6380 192.168.103.56:6379 192.168.103.56:6380 192.168.103.57:6379 192.168.103.57:6380

    备注:执行gem install redis前,需先安装ruby环境,如下通过yum安装ruby:

    yum -y install ruby rubygems

    安装完后再次执行gem还是会报错:“redis requires Ruby version >= 2.2.2

    解决办法为重装高版本的ruby,此处我这里是以修改ruby  yum源的方式重装ruby

    yum install centos-release-scl-rh    //会在/etc/yum.repos.d/目录下多出一个CentOS-SCLo-scl-rh.repo源
    yum install rh-ruby23  -y    //直接yum安装即可  
    scl  enable  rh-ruby23 bash    //必要一步
    ruby -v    //查看安装版本

    再次执行:gem install redis  成功

    第六步:查看集群状态

    可连接集群中的任一节点,此处连接了集群中的节点192.168.103.54:6379

    第七步:总结

      redis集群实际上是通过hash slots 的方式实现负载均衡(总共16384个slot),采用了非一致hash,使得集群节点可动态增加或减少,通过key计算slot,然后将值存储到对应的slot关联的机器上。

    扩展:

      添加一个新的master

    Adding a new node is basically the process of adding an empty node and then moving some data into it, in case it is a new master, or telling it to setup as a replica of a known node, in case it is a slave.
    ./redis-trib.rb add-node 192.168.103.58:6379 192.168.103.54:6379

      当添加新的master后,需要从新分片redis,不然新的master由于没有slot,所以不能提供服务

    ./redis-trib.rb reshard 192.168.103.54:6379

      添加一个新的slave

    ./redis-trib.rb add-node --slave 192.168.103.58:6380 192.168.103.54:6379

      移除集群中的一个节点

    ./redis-trib del-node 192.168.103.54:6379 `<node-id>`
  • 相关阅读:
    07 面向对象
    06 二维数组
    05 数组
    04 循环控制语句
    03控制流程语句
    Mybatis-plus
    Solr全文检索服务器
    剑指offer-序列化和反序列化二叉树-树-python
    剑指offer-顺序打印二叉树节点(系列)-树-python
    剑指offer-对称二叉树-树-python
  • 原文地址:https://www.cnblogs.com/yinz/p/8425356.html
Copyright © 2020-2023  润新知