zoukankan      html  css  js  c++  java
  • Redis Cluster搭建高可用Redis服务器集群

    一、Redis Cluster集群简介 

    Redis Cluster是Redis官方提供的分布式解决方案,在3.0版本后推出的,有效地解决了Redis分布式的需求,当一个节点挂了可以快速的切换到另一个节点,当遇到单机内存、并发等瓶颈时,可以采用分布式方案要解决问题。

    二、集群原理


     

    Redis Cluster架构图

    Redis Cluster集群采用了P2P的模式,完全去中心化,Redis把所有的Key分成了16384个slot,每个Redis实例负责其中一部分slot,集群中的所有信息(节点、端口、slot等),都通过节点之间定期的数据交换而更新,Redis客户端可以在任意一个Redis实例发出请求,如果所需数据不在该实例中,通过重定向命令引导客户端访问所需的实例。

    其结构特点:

    • 所有的redis节点彼此互联(PING-PONG机制),内部使用二进制协议优化传输速度和带宽。
    • 节点的fail是通过集群中超过半数的节点检测失效时才生效。
    • 客户端与redis节点直连,不需要中间proxy层.客户端不需要连接集群所有节点,连接集群中任何一个可用节点即可。
    • redis-cluster把所有的物理节点映射到[0-16383]slot上(不一定是平均分配),cluster负责维护node<->slot<->value。
    • Redis集群预分好16384个桶,当需要在Redis集群中放置一个key-value 时,根据CRC16(key) mod 16384的值,决定将一个key放到哪个桶中。

    三、集群搭建

    要让集群正常工作至少需要3个主节点,一共就需要6个节点,其中3个为主节点,3个为从节点,为了简单在下面在一台机器上演示,演示使用了linux服务器上7000到7005的6个端口。

    下载redis、解压、安装

    wget http://download.redis.io/releases/redis-3.2.4.tar.gz
    
    tar -zxvf redis-3.2.4.tar.gz
    
    cd redis-3.2.4/
    
    make&&makeinstall

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

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

    创建Redis节点并修改配置文件

    mkdir redis_cluster
    
    cd redis_cluster/
    
    mkdir 7000 7001 7002 7003 7004 7005
    
    cp redis.conf redis_cluster/7000
    
    cp redis.conf redis_cluster/7001
    
    cp redis.conf redis_cluster/7002
    
    cp redis.conf redis_cluster/7003
    
    cp redis.conf redis_cluster/7004
    
    cp redis.conf redis_cluster/7005

    按下面提示修改6个配置文件

    port7000//端口7000,7001,7002...        
    
    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-filenodes.conf//集群的配置  配置文件首次启动自动生成
    
    cluster-node-timeout15000//请求超时  默认15秒,可自行设置
    
    appendonly  yes//aof日志开启  有需要就开启,它会每次写操作都记录一条日志 
    
    dir /root/redis-3.2.4/redis_cluster/7000//目录,端口7000,7001,7002... ,必须配置,否则无法启动   

      

    启动6个Redis实例,并且要指定配置文件,这些配置文件分别在各自的子目录下面

    ./src/redis-serverredis_cluster/7000/redis.conf
    
    ./src/redis-serverredis_cluster/7001/redis.conf
    
    ./src/redis-serverredis_cluster/7002/redis.conf
    
    ./src/redis-serverredis_cluster/7003/redis.conf
    
    ./src/redis-serverredis_cluster/7004/redis.conf
    
    ./src/redis-serverredis_cluster/7005/redis.conf

    安装ruby

    yuminstallruby
    
    yuminstall-y rubygems
    
    geminstallredis -v3.2.2

    使用redis-trib.rb创建集群

    cd /usr/local/bin
    
    ./redis-trib.rb create --replicas 1 192.168.0.204:7000 192.168.0.204:7001 192.168.0.204:7002 192.168.0.204:7003 192.168.0.204:7004 192.168.0.204:7005

    运行结果如下:


     

    Redis Cluster启动成功截图

    如果一切顺利,你会看到类似截图上的消息: [OK] All 16384 slots covered, 这说明Redis的Cluster集群环境搭建成功。

    简单解释一下这个命令:调用 ruby 命令来进行创建集群,--replicas 1 表示主从节点比例为 1:1,即一个主节点对应一个从节点;然后,默认给我们分配好了每个主节点和对应从节点服务,以及solt的大小,因为在Redis集群中有且仅有16383个solt,默认情况会给我们平均分配,当然你可以指定,后续的增减节点也可以重新分配。

    M: 5237fa04bd793832b605d92ceb1d2f493da22e43 为主节点Id

    S: b6b696c11bbffa8f9d4e6397ef4d27b0b54fea32 192.168.0.204:7003 replicates 5237fa04bd793832b605d92ceb1d2f493da22e43 从节点下对应主节点Id

    目前来看,7000-7002 为主节点,7003-7005 为从节点,并向你确认是否同意这么配置,输入yes后,会开始集群创建。

    四、验证集群

    通过Cluster Nodes命令和Cluster Info命令来看看集群效果

    ./redis-cli -c  -h 192.168.0.204 -p 7001

    cluster info

    cluster nodes

    运行结果如下:


     

    运行成功截图

    在集群上通过增加数据来测试集群效果

    运行结果如下:


     

    限时领取免费Java相关资料,涵盖了Java、Redis、MongoDB、MySQL、Zookeeper、Spring Cloud、Dubbo/Kafka、Hadoop、Hbase、Flink等高并发分布式、大数据、机器学习等技术。

    资料传送门:https://mp.weixin.qq.com/s/u2b_NVNuMuAPE0w4lc45fw

     

    关注下方公众号即可免费领取:

    Java碎碎念公众号

  • 相关阅读:
    例题6-8 Tree Uva548
    例题6-7 Trees on the level ,Uva122
    caffe Mac 安装
    Codeforces Round #467 (Div. 1) B. Sleepy Game
    Educational Codeforces Round37 E
    Educational Codeforces Round 36 (Rated for Div. 2) E. Physical Education Lessons
    Good Bye 2017 E. New Year and Entity Enumeration
    Good Bye 2017 D. New Year and Arbitrary Arrangement
    Codeforces Round #454 D. Seating of Students
    浙大紫金港两日游
  • 原文地址:https://www.cnblogs.com/haha12/p/10480534.html
Copyright © 2011-2022 走看看