• Redis集群搭建-多服务器


    条件

      l 基于redis5.0.*版本进行集群的搭建

      l 集群要求至少六个节点,即每个主节点配置1个从节点,本集群是使用了3个主节点并每个下面挂一个从节点,三个主节点分布在3台服务器上

      l 集群配置信息如下:

    服务器

    Master

    Slave

    172.16.114.52

    7001

    7002

    172.16.239.95

    7003

    7004

    172.16.239.89

    7005

    7006

    集群配置

      在第一台服务器(172.16.114.52)上操作

    1. 下载redis源码包并解压

      

    wget  -c  http://download.redis.io/releases/redis-5.0.7.tar.gz
    
    tar  -zxvf  redis-5.0.7.tar.gz

      

    2. 新建集群配置目录

    mkdir  -p  /usr/local/redis-cluster/7001   /usr/local/redis-cluster/7002

    3. 将解压后的文件中的redis.conf配置文件拷贝到集群目录之下 并执行redis安装命令

    cd  redis-5.0.7
    
    cp redis.conf  /usr/local/redis-cluster
    
    make  install  PREFIX=/usr/local/redis2  # 注意 这里PREFIX一定是大写

      4. 进入/usr/local/redis2,复制bin文件到7001,7002目录下

    cd  /usr/local/redis2
    
    cp  -r  bin  /usr/local/redis-cluster/7001
    
    cp  -r  bin  /usr/local/redis-cluster/7002

      5.  进入redis-cluster目录,修改redis.conf并分别拷贝到7001,7002

         修改配置文件内容如下:

       1) 屏蔽限制本地访问, bind 127.0.0.1 修改为 bind  0.0.0.0

     

      2) protected-mode保护模式从yes改为no

     

      3) daemonize后的no改为yes

     

      4) 去掉cluster-enabled yes 前面的注释

     

      5) 去掉cluster-node-timeout 前面的注释

     

      6) port后的端口改为7001, redis.conf文件,复制到对应的目录下.

     

    cp  redis.conf  7001

      7)  再次编辑redis.conf  port参数修改 7001 ==> 7002,复制到对应目录下.

    sed  -i  's/7001/7002/g'  redis.conf
    
    cp  redis.conf  7002

      8)修改pidfile参数

    pidfile /var/run/redis_7001.pid

      9)修改node

    cluster-config-file nodes-7001.conf
    
    # 修改为对应的节点ID

        6. 启动redis服务

    /usr/local/redis-cluster/7001/bin/redis-server /usr/local/redis-cluster/7001/redis.conf
    
     /usr/local/redis-cluster/7002/bin/redis-server /usr/local/redis-cluster/7002/redis.conf

    注意点: 在启动服务之前要修改配置文件中对应的dump dir目录,否则默认目录是  ./  需要改成对应的绝对路径,否则会造成路径冲突,导致启动失败 

    查看启动的服务:

     

      7.  在另外两台机器上重复以上的操作,需要注意的是,需要设置对应的端口与目录

    效果:

    第一台(172.16.114.52)

     

    第二台(172.16.239.95):

     

    第三台(172.16.239.89):

     

    集群搭建

    使用Redis客户端执行命令:

    /usr/local/redis-cluster/7001/bin/redis-cli --cluster create --cluster-replicas 1 172.16.114.52:7001 172.16.114.52:7002 172.16.239.95:7003 172.16.239.95:7004 172.16.239.89:7005 172.16.239.89:7006

    参数说明:

    --cluster  集群管理命令 后面可以执行集群相关的命令

    --cluster-replicas 1 代表每个Master携带一个Slave

    create  创建集群命令

     

     

     至此已经配置成功

    客户端测试

      开启客户端 链接任意一个Master节点

    /usr/local/redis2/bin/redis-cli -h 172.16.114.52 -c -a 密码 -p 端口

    参数:

    -c: 连接到集群

     

    我们可以看到,当我们set一个键值对的时候,Redis会自动为我们的key计算CRC16值,然后对16384取模,获取key对应的hash slot,然后通过判断该槽被那个Master所占用,帮我们重定向到那个Master节点,将键值对存入。

      查看集群信息:

    cluster  nodes

    常见问题:

      

    1. 出现节点的状态为handshake并且无法使用cluster  forget 删除掉该节点,节点的唯一ID一直发生变化

    解决这是因为集群所有的节点都持有该节点的信息,不停的再发起重新连接操作,需要在所有节点上(包括从节点)执行 cluster  forget  xxx操作才能彻底移除掉无效节点

    1. 集群中出现无用节点

    例如:76e6fb6341fd43aaa1be5b2f8bb68a8c8a0572ae :0@0 slave,fail,noaddr - 1585662914903 1585662914903 6 disconnected

    可以将其移除  cluster  forget  76e6fb6341fd43aaa1be5b2f8bb68a8c8a0572ae 

  • 相关阅读:
    OSI安全体系结构
    PHP 二维数组根据相同的值进行合并
    Java实现 LeetCode 17 电话号码的字母组合
    Java实现 LeetCode 16 最接近的三数之和
    Java实现 LeetCode 16 最接近的三数之和
    Java实现 LeetCode 16 最接近的三数之和
    Java实现 LeetCode 15 三数之和
    Java实现 LeetCode 15 三数之和
    Java实现 LeetCode 15 三数之和
    Java实现 LeetCode 14 最长公共前缀
  • 原文地址:https://www.cnblogs.com/xingxia/p/redis-cluster-multiple.html
Copyright © 2020-2023  润新知