• Redis-3.2.1集群内网部署


    摘要: Redis-3.2.1集群内网部署 http://rubygems.org国内连不上时的一种Redis集群部署解决方案。不足之处,请广大网友指正,谢谢!

    一、 关于redis cluster 
    1、 redis cluster的现状 
    目前redis支持的cluster特性: 
    1):节点自动发现 
    2):slave->master 选举,集群容错 
    3):Hot resharding:在线分片 
    4):进群管理:cluster xxx 

    5):基于配置(nodes-port.conf)的集群管理 
    6):ASK 转向/MOVED 转向机制. 
    2、 redis cluster 架构 
    2.1 redis-cluster架构图 

    redis-cluster架构图

    架构细节: 
    (1)所有的redis节点彼此互联(PING-PONG机制),内部使用二进制协议优化传输速度和带宽. 
    (2)节点的fail是通过集群中超过半数的节点检测失效时才生效. 
    (3)客户端与redis节点直连,不需要中间proxy层.客户端不需要连接集群所有节点,连接集群中任何一个可用节点即可 
    (4)redis-cluster把所有的物理节点映射到[0-16383]slot上,cluster 负责维护node<->slot<->value 
    2.2 redis-cluster选举:容错 
    这里写图片描述

    (1)选举过程是集群中所有master参与,如果半数以上master节点与master节点通信超过(cluster-node-timeout),认为当前master节点挂掉. 
    (2):什么时候整个集群不可用(cluster_state:fail),当集群不可用时,所有对集群的操作做都不可用,收到((error) CLUSTERDOWN The cluster is down)错误 
    a:如果集群任意master挂掉,且当前master没有slave.集群进入fail状态,也可以理解成进群的slot映射[0-16383]不完成时进入fail状态. 
    b:如果进群超过半数以上master挂掉,无论是否有slave集群进入fail状态. 
    二、 安装redis cluster 
    安装之前请讲所需的软件包(如下所示)拷贝到服务器的/root目录下: 
    gcc-4.4.7-4.el6.x86_64文件夹(因使用的虚拟机没有GCC环境故要安装GCC环境,服务器的话则省略) 
    zlib-1.2.8.tar.gz文件 
    ruby-2.3.1.tar.gz文件 
    rubygems-2.4.2文件夹 
    redis-3.2.1.tar.gz文件 

    1、 安装redis-cluster依赖:redis-cluster的依赖库在使用时有兼容问题,在reshard时会遇到各种错误,请按指定版本安装。 
    1.1 首先安装GCC编译环境 
    切记:按以下顺序执行命令安装以下软件包,因后面的包依赖前面的包:

    rpm -ivh ppl-0.10.2-11.el6.x86_64.rpm

    rpm -ivh cloog-ppl-0.15.7-1.2.el6.x86_64.rpm

    rpm -ivh libmpdclient2-2.1-1.el5.rf.x86_64.rpm

    rpm -ivh gmp-4.3.1-7.el6_2.2.x86_64.rpm

    rpm -ivh mpfr-2.4.1-6.el6.x86_64.rpm

    rpm -ivh mpc-0.19-1.el6.rf.x86_64.rpm

    rpm -ivh cpp-4.4.7-4.el6.x86_64.rpm

    rpm -ivh gcc-4.4.7-4.el6.x86_64.rpm

    1.2 确保系统安装zlib,否则gem install会报(no such file to load – zlib) 
    首先,检查zlib是否安装以及版本是否是最新版本,若不是卸载zlib后,请安装zlib-1.2.8.tar.gz 具体命令如下:

    rpm -qa | grep zlib

    rpm -e zlib(上一个命令执行后出现的包名,对不起,全名记不住了。这一步最好执行当然不执行时也没问题,建议执行)

    rpm -e zlib(上一个命令执行后出现的包名,对不起,全名记不住了。这一步最好执行当然不执行时也没问题,建议执行)

    cd /root

    cp -p zlib-1.2.8.tar.gz /usr/local/

    tar -xvf zlib-1.2.8.tar.gz

    cd /usr/local/

    cd zlib-1.2.8

    ./configure

    make && make install

    2、 安装ruby-2.3.1.tar.gz:version(2.3.1)

    cd /usr/local

    mkdir ruby

    cp -p /root/ruby-2.3.1.tar.gz /usr/local/

    tar -zxvf ruby-2.3.1.tar.gz

    cd ruby-2.3.1

    ./configure –prefix=/usr/local/ruby && make && make install

    ruby -v

    vi /etc/profile

    在该文件最后一行添加: export PATH=$PATH:/usr/local/ruby/bin

    //这里也可以执行# cp -p ruby /usr/local/bin/执行后直接在运行#ruby -v 查看版本

    . /etc/profile

    ruby -v

    3、 安装rubygems.tgz:version(2.4.2)

    gem -v

    cd /usr/local

    cp -p /root/rubygems-2.4.2/rubygems.tgz /usr/local/

    tar -zxvf rubygems-2.4.2.tgz

    cd rubygems-2.4.2

    ruby setup.rb

    cp -p bin/gem /usr/local/bin/

    gem –v 检查是否成功安装

    4、 安装redis-3.2.1.gem:version(3.2.1)

    cd /root/rubygems-2.4.2

    gem sources –remove https://rubygems.org/(这一步一定要执行不然下面执行gem install 时会去链接该网址,连不上有可能执行不了下一步)

    gem install -l redis-3.2.1.gem

    5、 安装redis-cluster

    cd /usr/local

    cp -p /root/redis-3.2.1.tar.gz /usr/local/

    tar -zxvf redis-3.2.1.tar.gz

    cd redis-3.2.1

    make && make install

    6、 创建Redis主从节点(采取三主三从)

    mkdir redis //集群目录

    make 7000 7001 7002 7003 7004 7005 //redis节点

    #cp -p /usr/local/redis-3.2.1/redis.conf /usr/local/redis/7000

    #cd /usr/local/redis/7000/ #vim redis.conf

    //修改配置文件中的下面选项 
    //port 7000 
    //daemonize yes 
    //cluster-enabled yes 
    //cluster-config-file nodes.conf 
    //cluster-node-timeout 5000 
    //appendonly yes

      #cp -p /usr/local/redis/7000/redis.conf /usr/local/redis/7001/
          #vim redis.conf
    

    //修改配置文件中的下面选项 

    //port 7000

          #cp -p /usr/local/redis/7000/redis.conf /usr/local/redis/7002
          #vim redis.conf //同上一条
       #cp -p /usr/local/redis/7000/redis.conf /usr/local/redis/7003
          #vim redis.conf //同上一条
          #cp -p /usr/local/redis/7000/redis.conf /usr/local/redis/7004
          #vim redis.conf //同上一条
       #cp -p /usr/local/redis/7000/redis.conf /usr/local/redis/7005
          #vim redis.conf //同上一条
    

    启动各节点: 
    #cd /usr/local/redis/7000 
    #redis-server redis.conf 
    #ll //查看7000目录下是否生成如下图红圈文件 

    启动各节点: 
    #cd /usr/local/redis/7000 
    #redis-server redis.conf 
    #ll //查看7000目录下是否生成如下图红圈文件 

    这里写图片描述

    #cd /usr/local/redis/7001

    #redis-server redis.conf

    #ll //同上一条

    #cd /usr/local/redis/7002

    #redis-server redis.conf

    #ll //同上一条

    #cd /usr/local/redis/7003 #redis-server redis.conf

    #ll //同上一条

    #cd /usr/local/redis/7004

    #redis-server redis.conf

    #ll //同上一条

    #cd /usr/local/redis/7005

    #redis-server redis.conf

    #ll //同上一条

    检查各节点是否启动:

    ps –ef | grep redis

    //启动成功如下图: 

    这里写图片描述

    7、 使用redis自带的redis-trib.rb将各节点创建为集群

    /usr/local/redis-3.2.1/src/redis-trib.rb create –replicas 1 127.0.0.1:7000 127.0.0.1:7001 127.0.0.1:7005 127.0.0.1:7002 127.0.0.1:7003 127.0.0.1:7004 127.0.0.1:7005

    执行后会出现下面界面: 

    这里写图片描述

    这界面是让你确认是否配置以上集群: 
    输入yes,回车,会出现以下界面: 

    这里写图片描述

    如上所示集群创建成功,接下来我们验证是否可读写数据。 
    三、 验证搭建好的redis集群是否可读写 
    1、 在任意目录下皆可,执行以下命令启动redis集群客户端:

    redis-cli -c -h 127.0.0.1 -p 7000 //结果如下图

    这里写图片描述 
    2、 接上一步在里面执行写入命令:set Hi BeiJing //结果如下图 

    这里写图片描述 
    3、 重新开启一个终端命令模式窗口,并执行以下命令启动另一个redis集群客户端:

    redis-cli -c -h 127.0.0.1 -p 7004 //结果如下图

    这里写图片描述 
    4、 接上一步在里面执行写入命令:get Hi //结果如下图 
    这里写图片描述 
    通过验证redis集群成功部署。 

  • 相关阅读:
    UML类图与类的关系详解
    UML用例图总结
    jQuery随机抽取数字号代码
    贪心算法
    回溯法实例详解(转)
    React 表单元素实例
    React 组件嵌套 父子关系
    React 滚动事件
    error: Error trying to parse settings: Unexpected trailing characters in PackagesUserPreferences.sublime-settings:9:2 reloading settings Packages/User/Preferences.sublime-settings
    jquery 下拉框左右选择
  • 原文地址:https://www.cnblogs.com/lingduqianli/p/7267212.html
Copyright © 2020-2023  润新知