美文网首页Redis
Redis高可用集群搭建

Redis高可用集群搭建

作者: 叩丁狼教育 | 来源:发表于2018-08-19 23:20 被阅读204次

    作者:禹明明,叩丁狼教育高级讲师。原创文章,转载请注明出处。

    首先放出redis集群配置的官方文档:http://redisdoc.com/topic/cluster-tutorial.html
    对于集群的原理,概念和基本操作这个文档已经说的相当详细了,建议先看看官方文档.
    为什么写这个主要是ruby相关的配置官方文档并没有说明,本文主要说一下ruby的安装和使用. 如果你安装的是redsi3.x的集群应该比较顺利, 如果安装的是redis4.x 的集群那ruby这一块就要注意,不要踩坑里了

    创建六个redis 实例

    1. 创建目录/soft/redis-clustor
    2. 在该目录下解压编译出一个redis服务 ,确保能够正常启动(有可能缺少gcc,安装就行)
    tar -zxvf redisxxx.tar.gz
    cd /redisxxx/src
    make
    make install 
    
    1. 在/soft/redis-clustor下创建六个文件夹分别为7001 7002 7003 7004 7005 7006
    2. 拷贝src下redis.conf到7001并修改配置
    port 700x  #本服务端口号
    pidfile /var/run/redis-700x.pid# 同一台机部署伪集群,并且后台启动就必须配置此项且要保证唯一
    cluster-config-file nodes-700x.conf  #集群的配置文件,自动生成,无需手动配置,必须保证唯一
    
    cluster-enabled yes  #是否允许集群
    cluster-node-timeout 5000  #集群节点互连超时时间
    appendonly yes  #集群必须打开,因为集群需要此文件来记录同步数据
    daemonize yes  #是否开启后台运行
    databases  1  #数据库数量,没有需求就设置为一个
    cluster-migration-barrier  2 #数据迁移的副本临界数,一个主节点在拥有多少个好的从节点的时候就要割让一个从节点给另一个没有任何节点的主节点
    cluster-require-full-converage  yes #如果某一些key space没有被集群中任何节点覆盖,该集群是否停止接受写入
    #===========redis4.0以后还需要修改以下几项==================
    aof-use-rdb-preamble yes #允许使用RDB-AOF混合持久化
    lazyfree-lazy-eviction yes #在被动淘汰键时,是否采用lazy free机制
    lazyfree-lazy-expire yes #针对设置有TTL的键,达到过期后,被redis清理删除时是否采用lazy free机制;
    lazyfree-lazy-server-del yes  #针对有些指令在处理已存在的键时,会带有一个隐式的DEL键的操作。如rename命令,当目标键已存在,redis会先删除目标键,如果这些目标键是一个big key,那就会引入阻塞删除的性能问题。 此参数设置就是解决这类问题。
    slave-lazy-flush yes #针对slave进行全量数据同步,slave在加载master的RDB文件前,会运行flushall来清理自己的数据场景,参数设置决定是否采用异常flush机制。如果内存变动不大,建议可开启。可减少全量同步耗时,从而减少主库因输出缓冲区爆涨引起的内存使用增长。
    always-show-logo no #是否显示logo,本来应该没关系的,但是4.0测试时候打开就报错
    
    1. 将7001下redis.conf到其他五个目录,并修改700x代表的几个数据为对应目录
    2. server/src/redis-server 700x/redis.conf 启动六个实例
    3. netstate -ntlp 验证六个redis 启动都没有问题

    构建集群

    创建集群的命令需要使用ruby rubygems , 对于ruby redis3.x要求ruby1.8.7以上,redis4.0要求ruby2.2.2以上, 但是yum安装的ruby是2.0, redis4.x就需要自己下载安装ruby2.3.3
    对于centos系统: ruby2.3安装请参考:https://www.cnblogs.com/carryping/p/7447823.html
    不要自己下载安装ruby的安装包, 参考一些资料据说centos只支持到2.0, 使用tar包后支持不到2.3,这点经过测试,centos7确实支持不到2.3,虽然执行ruby -v 显示版本为2.3, 但是使用的时候依然会报版本错误, 按照上述网址的方法安装就没有问题

    //安装rubygem 以及 rubygem redis依赖

    yum install rubygem 
    gem install redis
    

    ③检查redis-trib.rb的可用性

    #进入redisxx/src 目录
    redis-trib.rb  #出现帮助信息就是ok
    

    如果报错 可以参考:https://blog.csdn.net/feinifi/article/details/78251486

    构建集群
    执行以下命令,会提示你哪些是主哪些是从以及分配的槽位, 如果跟你想要的不一样, 可以调整命令中节点的顺序达到你想要的效果,槽位可以创建后再更改

    ./redis-trib.rb create --replicas 1 127.0.0.1:7001  127.0.0.1:7002 127.0.0.1:7003 127.0.0.1:7004 127.0.0.1:7005  127.0.0.1:7006
    
    image.png

    创建成功

    image.png

    连接集群, 分片, 重新分配卡槽 的命令redis的文档中比较详细, 就不再多说了,踩了一天4.0版本的坑,希望能对大家有点帮助
    http://redisdoc.com/topic/cluster-tutorial.html

    WechatIMG9.jpeg

    相关文章

      网友评论

        本文标题:Redis高可用集群搭建

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