zoukankan      html  css  js  c++  java
  • 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 

  • 相关阅读:
    cout 格式化输出
    CreateEvent的用法
    深入理解CRITICAL_SECTION
    const型类成员
    用 const 限定类的成员函数
    C++文件读写详解(ofstream,ifstream,fstream)
    C++中回调函数(CallBack)的使用
    SetTimer函数的用法
    CString转换成int CString类相应函数
    自己设计并制作了一个自己主动温度控制系统
  • 原文地址:https://www.cnblogs.com/xingxia/p/redis-cluster-multiple.html
Copyright © 2011-2022 走看看