zoukankan      html  css  js  c++  java
  • Docker构建redis cluster集群

    准备工作

    安装gcc ruby

    解压编译redis
    Redis 是 c 语言开发的。安装 redis 需要 c 语言的编译环境。如果没有 gcc 需要在线安装。
    yum install gcc-c++
    
    使用yum命令安装 ruby  (我们需要使用ruby脚本来实现集群搭建)
    yum install ruby
    yum install rubygems

    下载安装包

    [root@docker01 ~]# mkdir zy_redis_cluster
    [root@docker01 ~]# cd zy_redis_cluster/
    [root@docker01 zy_redis_cluster]# mkdir docker_redis_cluster
    [root@docker01 zy_redis_cluster]# cd docker_redis_cluster/
    [root@docker01 docker_redis_cluster]# wget http://download.redis.io/releases/redis-3.0.3.tar.gz

    解压编译

    [root@docker01 docker_redis_cluster]# tar -zxvf redis-3.0.3.tar.gz 
    [root@docker01 docker_redis_cluster]# cd redis-3.0.3/
    [root@docker01 redis-3.0.3]# make

    修改配置文件

    [root@docker01 redis-3.0.3]# vi redis.conf 
    
    #守护进程设置为no
    daemonize no
    
    #修改绑定ip
    #bind 127.0.0.1
    bind 0.0.0.0
    
    #设置日志路径
    logfile "/var/log/redis/redis-server.log"
    
    #开启集群功能
    cluster-enabled yes
    
    #其他配置修改
    cluster-config-file nodes-6379.conf
    cluster-node-timeout 15000

    镜像制作

    创建镜像dockerfile文件

    [root@docker01 ~]# cd /root/zy_redis_cluster/docker_redis_cluster
    [root@docker01 docker_redis_cluster]# vi Dockerfile
    
    # Redis
    # Version 3.0.3
    # 操作系统镜像,最好提前pull到本地,这样制作镜像的时候就不会再去网上pull了
    FROM centos:latest     
    MAINTAINER zy "279790279@qq.com"
    
    #定义变量
    ENV REDIS_HOME /usr/local
    
    # 创建安装目录 更新yum源 安装编译需要的工具
    RUN mkdir -p $REDIS_HOME/redis 
        && yum -y update 
        && yum install -y gcc make 
    
    # 本地的redis源码包复制到镜像的根路径下,ADD命令会在复制过后自动解包。被复制的对象必须处于Dockerfile同一路径,且ADD后面必须使用相对路径
    ADD redis-3.0.3.tar.gz /
    # 将一开始编译产生并修改后的配置复制到安装目录
    ADD redis-3.0.3/redis.conf $REDIS_HOME/redis/  
    
    #把目录转到文件夹内
    WORKDIR /redis-3.0.3
    
    #编译 编译后,容器中只需要可执行文件redis-server
    RUN make 
        && mv /redis-3.0.3/src/redis-server  $REDIS_HOME/redis/
    
    #设置工作访问时候的WORKDIR路径,登陆落脚点
    WORKDIR /
    
    # 删除解压文件 安装编译完成之后 删除多余的gcc跟make
    RUN rm -rf /redis-3.0.3 
        && yum remove -y gcc make 
      
    # 添加数据卷
    VOLUME ["/var/log/redis"]
    
    # 暴露端口
    EXPOSE 6379
    
    #入口点
    ENTRYPOINT ["/usr/local/redis/redis-server", "/usr/local/redis/redis.conf"]

    构建镜像

    [root@docker01 docker_redis_cluster]# docker build -t rising_zy/cluster-redis-node:3.0.3 .
    ......
    Complete!
    Removing intermediate container 7c9cc1bed2be
    ---> 528db1f8fea9
    Step 11/13 : VOLUME ["/var/log/redis"]
    ---> Running in 729b7e4dc9f4
    Removing intermediate container 729b7e4dc9f4
    ---> 9061b4240f52
    Step 12/13 : EXPOSE 6379
    ---> Running in ebf95090f698
    Removing intermediate container ebf95090f698
    ---> 506964ec2e5c
    Step 13/13 : ENTRYPOINT ["/usr/local/redis/redis-server", "/usr/local/redis/redis.conf"]
    ---> Running in 428a90bf22a7
    Removing intermediate container 428a90bf22a7
    ---> d70e8f3db0ad
    Successfully built d70e8f3db0ad
    Successfully tagged rising_zy/cluster-redis-node:3.0.3

    查看

    [root@docker01 docker_redis_cluster]# docker images
    REPOSITORY                         TAG                 IMAGE ID            CREATED             SIZE
    rising_zy/cluster-redis-node      3.0.3               d70e8f3db0ad        26 seconds ago      451MB
    registry                          latest              116995fd6624        3 days ago          25.8MB
    centos                            latest              1e1148e4cc2c        6 weeks ago         202MB

    创建redis集群

    运行6个docker节点

    [root@docker01 ~]# docker run -di --name redis-6379 -p 6379:6379 rising_zy/cluster-redis-node:3.0.3
    [root@docker01 ~]# docker run -di --name redis-6380 -p 6380:6379 rising_zy/cluster-redis-node:3.0.3
    [root@docker01 ~]# docker run -di --name redis-6381 -p 6381:6379 rising_zy/cluster-redis-node:3.0.3
    [root@docker01 ~]# docker run -di --name redis-6382 -p 6382:6379 rising_zy/cluster-redis-node:3.0.3
    [root@docker01 ~]# docker run -di --name redis-6383 -p 6383:6379 rising_zy/cluster-redis-node:3.0.3
    [root@docker01 ~]# docker run -di --name redis-6384 -p 6384:6379 rising_zy/cluster-redis-node:3.0.3

    分别查看节点ip

    [root@docker01 ~]# docker inspect redis-63xx

    安装ruby用户搭建redis集群的脚本

    上传redis-3.0.0.gem到机器上  这个文件可在网上下载
    安装
    [root@docker01 ~]# gem install redis-3.0.0.gem

    使用ruby脚本搭建redis集群(每个reids保证启动状态)

    [root@docker01 ~]# cd zy_redis_cluster/docker_redis_cluster/redis-3.0.3/src/
    [root@docker01 src]# ./redis-trib.rb create --replicas 1 172.17.0.3:6379 172.17.0.4:6379 172.17.0.5:6379 172.17.0.6:6379 172.17.0.7:6379 172.17.0.8:6379
    >>> Creating cluster Connecting to node 172.17.0.3:6379: OK ...... M: b9745b519f74485ee582607de31afee93ad86650 172.17.0.3:6379 slots:0-5460 (5461 slots) master M: 5a2a5e862290d615b6a7576524a5b5de8367344e 172.17.0.4:6379 slots:5461-10922 (5462 slots) master M: 5e94e07f136b1d83e35ac7f2c682c52fed7c620c 172.17.0.5:6379 slots:10923-16383 (5461 slots) master M: 8838aef56ca0045aea231e8c211a2eb99a06fab5 172.17.0.6:6379 slots: (0 slots) master replicates b9745b519f74485ee582607de31afee93ad86650 M: 0b61287211cb3c6118924bcadfad169b988096b0 172.17.0.7:6379 slots: (0 slots) master replicates 5a2a5e862290d615b6a7576524a5b5de8367344e M: 4d4dad7c0c787e4de99729d3f7a911d1bbd21a7f 172.17.0.8:6379 slots: (0 slots) master replicates 5e94e07f136b1d83e35ac7f2c682c52fed7c620c [OK] All nodes agree about slots configuration. >>> Check for open slots... >>> Check slots coverage... [OK] All 16384 slots covered.

    查看集群

    [root@docker01 src]# ./redis-cli -h 172.17.0.3 -p 6379 -c
    127.0.0.1:6379> cluster nodes
    4d4dad7c0c787e4de99729d3f7a911d1bbd21a7f 172.17.0.8:6379 slave 5e94e07f136b1d83e35ac7f2c682c52fed7c620c 0 1548175276225 6 connected
    5a2a5e862290d615b6a7576524a5b5de8367344e 172.17.0.4:6379 master - 0 1548175275208 2 connected 5461-10922
    b9745b519f74485ee582607de31afee93ad86650 172.17.0.3:6379 myself,master - 0 0 1 connected 0-5460
    8838aef56ca0045aea231e8c211a2eb99a06fab5 172.17.0.6:6379 slave b9745b519f74485ee582607de31afee93ad86650 0 1548175271127 4 connected
    5e94e07f136b1d83e35ac7f2c682c52fed7c620c 172.17.0.5:6379 master - 0 1548175274181 3 connected 10923-16383
    0b61287211cb3c6118924bcadfad169b988096b0 172.17.0.7:6379 slave 5a2a5e862290d615b6a7576524a5b5de8367344e 0 1548175272150 5 connected
    127.0.0.1:6379> 
  • 相关阅读:
    LR和SVM等线性模型比较
    博客内容和格式整理想法
    matlab安装matconvnet出错总结
    《java 核心技术一》第二章java程序设计环境
    《java 核心技术一》第一章 程序设计概论
    java eclipse 程序没错,运行结果显示无法加载主类的解决方法
    《贾平凹--朋友圈子就是你人生的世界》读后感
    java try-catch-finally输出异常
    暑假计划
    java 登录注册小程序
  • 原文地址:https://www.cnblogs.com/blazeZzz/p/10313111.html
Copyright © 2011-2022 走看看