• redis cluster集群搭建


    redis-cluster集群搭建

    准备配置文件模板

    我从不知道什么地方抄的

    redis-cluster.tmpl

    # redis端口
    port ${PORT}
    # 关闭保护模式
    protected-mode no
    # 开启集群
    cluster-enabled yes
    # 集群节点配置
    cluster-config-file nodes.conf
    # 超时
    cluster-node-timeout 5000
    # 集群节点IP
    cluster-announce-ip ${HOST}
    # 集群节点端口
    cluster-announce-port ${PORT}
    cluster-announce-bus-port 1${PORT}
    # 开启 appendonly 备份模式
    appendonly yes
    # 每秒钟备份
    appendfsync everysec
    # 对aof文件进行压缩时,是否执行同步操作
    no-appendfsync-on-rewrite no
    # 当目前aof文件大小超过上一次重写时的aof文件大小的100%时会再次进行重写
    auto-aof-rewrite-percentage 100
    # 重写前AOF文件的大小最小值 默认 64mb
    auto-aof-rewrite-min-size 64mb
    

    将配置模板推到服务器上(如果是直接在服务器上操作,则不需要这一步)

    # 文件路径看个人喜好,我这儿图个方便
    scp ./redis-cluster.tmpl xxxx@xxx.xxx.xxx.xxx:/redis-cluster.tmpl
    

    生成对应节点的conf和data

    新建一个.sh脚本文件redis-cluster-sh.sh

    #!/bin/bash
    # 一般来说建集群至少需要6个redis节点
    # 根据实际情况设置{HOST}和{PORT}
    # 多台服务器记得更换{HOST}
    # 通过$1传入HOST大概可以更加灵活一点
    export HOST=$1
    for port in $(seq 7501 7506); do 
      mkdir -p /home/redis-cluster/"$port"/conf 
      && PORT="$port" envsubst < /redis-cluster.tmpl > 
      /home/redis-cluster/"$port"/conf/redis.conf 
      && mkdir -p /home/redis-cluster/"$port"/data; 
    done
    

    如果是直接在服务器上操作

    source /redis-cluster-sh.sh xxx.xxx.xxx.xxx
    

    查看生成的文件

    tree /home/redis-cluster/
    

    如果不在服务器上,则可以执行

    ssh root@xxx.xxx.xxx.xxx -C "/bin/bash -s" < ./redis-cluster-sh.sh xxx.xxx.xxx.xxx
    

    使用docker创建redis节点

    创建一个.sh脚本文件create-redis-container.sh

    for port in $(seq 7501 7506); do 
    docker run -itd -p "$port":"$port" -p 1"$port":1"$port" 
    -v /home/redis-cluster/"$port"/conf/redis.conf:/usr/local/etc/redis/redis.conf 
    -v /home/redis-cluster/"$port"/data:/data 
    --restart always --name redis-"$port" 
    redis redis-server /usr/local/etc/redis/redis.conf; 
    done
    

    如果是直接在服务器上操作

    source /create-redis-container.sh
    

    查看docker容器

    docker ps -a
    

    如果不在服务器上,则可以执行

    # 远程执行本地的脚本文件
    ssh xxxx@xxx.xxx.xxx.xxx < ./create-redis-container.sh
    # 查看docker
    ssh xxxx@xxx.xxx.xxx.xxx "docker ps -a"
    

    创建redis-cluster集群

    上述步骤可以在多台服务器上进行,以创建6/12/18/.../6*N个节点

    之后选择其中的一个容器进行集群的创建,把涉及到的节点全部添加到进来

    # 选择任意一个redis容器
    docker exec -it redis-750* redis-cli --cluster 
    create xxx.xxx.xxx.xxx:7501  
    xxx.xxx.xxx.xxx:7502  xxx.xxx.xxx.xxx:7503  
    xxx.xxx.xxx.xxx:7504  xxx.xxx.xxx.xxx:7505  
    xxx.xxx.xxx.xxx:7506  --cluster-replicas 1
    

    预览一下主从信息,之后键入 yes 确认创建

    如果不在服务器上,则可以执行

    # 选择任意一个redis容器
    ssh -t xxxx@xxx.xxx.xxx.xxx "docker exec -it redis-750* 
    redis-cli --cluster create xxx.xxx.xxx.xxx:7501  
    xxx.xxx.xxx.xxx:7502  xxx.xxx.xxx.xxx:7503  
    xxx.xxx.xxx.xxx:7504  xxx.xxx.xxx.xxx:7505  
    xxx.xxx.xxx.xxx:7506  --cluster-replicas 1"
    

    至此,redis-cluster 集群就算是创建完成了

    补充

    上述方法会创建3主3从(1:1)的集群,主节点挂掉之后对应的从节点会顶上来

    如果觉得从节点太少,创建集群的时候可以通过修改 --cluster-replicas 来调整每个主节点的从节点数量,比如3主6从(1:2)什么的,但是需要增加节点数量(从6节点增加到9节点)

  • 相关阅读:
    Novell 被收购
    NetBeans IDE 7.0 Beta 发布
    关于去除PE文件中函数修饰的做法
    甲骨文宣布将于明年 7 月 28 日推 JDK 7
    PE文件格式的一些研究
    如何开发 Web 应用程序
    Novell 被收购
    如何开发 Web 应用程序
    分享:DFC开发平台的设计理念
    分享:FireBreath 1.7.0 RC1 发布
  • 原文地址:https://www.cnblogs.com/CollapseNav/p/14223322.html
Copyright © 2020-2023  润新知