Redis集群模式

作者: 高多金 | 来源:发表于2019-04-27 13:09 被阅读31次

    Redis Cluster提供了一种运行Redis安装的方法,其中数据 在多个Redis节点之间自动分片

    Redis Cluster还在分区期间提供一定程度的可用性,实际上是在某些节点发生故障或无法通信时继续运行的能力。但是,如果发生较大的故障(例如,当大多数主设备不可用时),群集将停止运行。

    所以实际上,你对Redis Cluster有什么看法?

    • 能够在多个节点之间自动拆分数据集
    • 当节点的子集遇到故障或无法与群集的其余部分通信,能够继续操作
    • 所有的redis节点彼此互联(PING-PONG机制),内部使用二进制协议优化传输速度和带宽。
    • 节点的fail是通过集群中超过半数的节点检测失效时才生效。
    • 客户端与redis节点直连,不需要中间代理层.客户端不需要连接集群所有节点,连接集群中任何一个可用节点即可

    工作方式:

    在redis的每一个节点上,都有这么两个东西,一个是插槽(slot),它的的取值范围是:0-16383。还有一个就是cluster,可以理解为是一个集群管理的插件。当我们的存取的key到达的时候,redis会根据crc16的算法得出一个结果,然后把结果对 16384 求余数,这样每个 key 都会对应一个编号在 0-16383 之间的哈希槽,通过这个值,去找到对应的插槽所对应的节点,然后直接自动跳转到这个对应的节点上进行存取操作。

    为了保证高可用,redis-cluster集群引入了主从模式,一个主节点对应一个或者多个从节点,当主节点宕机的时候,就会启用从节点。当其它主节点ping一个主节点A时,如果半数以上的主节点与A通信超时,那么认为主节点A宕机了。如果主节点A和它的从节点A1都宕机了,那么该集群就无法再提供服务了。

    实际操作

    准备环境

    192.168.14.10:7000 主服务器

    192.168.14.20:7001

    192.168.14.30:7002

    192.168.14.40:7003

    192.168.14.50:7004

    192.168.14.60:7005

    集群最少有六个节点

    六台服务器都进行以下操作

    首先我们使用wget拉取tar包

    yum -y install gcc gcc-c++ wget
    wget http://download.redis.io/releases/redis-3.2.4.tar.gz
    tar zxf redis-3.2.4.tar.gz
    cd redis-3.2.4
    make && make install 
    ls
    

    将 redis-trib.rb 复制到 /usr/local/bin 目录下

    redis-trib.rb是我们cluster集群的管理工具 有创建集群 检查集群等功能

    cd src
    cp redis-trib.rb /usr/local/bin/
    

    之后 我们建立六个节点

    vim redis.conf
    port  7000                                        //端口7000,7002,7003        
    bind 本机ip                                       //默认ip为127.0.0.1 需要改为其他节点机器可访问的ip 否则创建集群时无法访问对应的端口,无法创建集群
    daemonize    yes                               //redis后台运行
    pidfile  /var/run/redis_7000.pid          //pidfile文件对应7000,7001,7002
    cluster-enabled  yes                           //开启集群  把注释#去掉
    cluster-config-file  nodes_7000.conf   //集群的配置  配置文件首次启动自动生成 7000,7001,7002
    cluster-node-timeout  15000                //请求超时  默认15秒,可自行设置
    appendonly  yes                           //aof日志开启  有需要就开启,它会每次写操作都记录一条日志 
    

    修改以上参数每个服务器节点对应端口号

    配置好之后使用redis-server执行配置文件

    redis-server redis.conf
    

    使用ps查看

    ps -ef |grep redis
    root      16011      1  0 11:15 ?        00:00:05 redis-server 192.168.14.10:7000 [cluster]
    root      35353   3097  0 12:26 pts/0    00:00:00 grep --color=auto redis
    
    

    成功

    下面我们在主服务器上操作

    安装ruby curl

    yum -y install ruby ruby-devel rubygems
    yum -y install curl
    

    配置rvm的key

    gpg --keyserver hkp://keys.gnupg.net --recv-keys 409B6B1796C275462A1703113804BB82D39DC0E3 7D2BAF1CF37B13E2069D6956105BD0E739499BDB
    

    安装RVM

    find / -name rvm
    source /usr/local/rvm/scripts/rvm
    rvm list known
    rvm install 2.4.5
    rvm use 2.4.5
    rvm remove 2.0.0
    

    安装redis

    gem install redis
    

    使用cluster集群管理工具 创建集群

    redis-trib.rb  create  --replicas  1192.168.14.10:7000 192.168.14.20:7001 192.168.14.30:7002 192.168.14.40:7003 192.168.14.50:7004 192.168.14.60:7005
    

    相关文章

      网友评论

        本文标题:Redis集群模式

        本文链接:https://www.haomeiwen.com/subject/dztknqtx.html