zoukankan      html  css  js  c++  java
  • Docker Swarm redis 集群搭建

    Docker Swarm redis 集群搭建

    环境1:

    • 系统:Linux Centos 7.4 x64
    • 内核:Linux docker 3.10.0-693.2.2.el7.x86_64
    • Docker 版本:18.09.1
    • redis 版本:redis-4.0.9
    • 主机数量:1台
    • 主机地址:192.168.1.81

    环境2:

    • 已搭建 Docker Swarm 管理
    • 已搭建 Docker 私有仓库
    • 已搭建 NFS 存储

    目录结构

    └── redis
      ├── Dockerfile
      ├── redis-4.0.9.tar.gz
      └── redis.conf

    └── service_redis.yml


    下载

    • redis压缩包
    • 下载地址:https://pan.baidu.com/s/14Sr47StorzgDYMeH054waA
    • 密码:xlln

    1、创建dockerfile

    FROM centos:6
    MAINTAINER xiangsikai
    ENV LANG en_US.UTF-8
    ENV TZ=Asia/Shanghai
    RUN yum install -y gcc gcc-c++ tcl sudo
    ADD redis-4.0.9.tar.gz /usr/local/
    RUN mkdir /usr/local/redis-4.0.9/data && mkdir /usr/local/redis-4.0.9/logs && mkdir /usr/local/redis-4.0.9/run
    RUN cd /usr/local/redis-4.0.9/ && make && make install
    RUN rm -rf /usr/local/redis-4.0.9/redis.conf
    COPY redis.conf /usr/local/redis-4.0.9/redis.conf
    RUN useradd redis && chown -R redis:redis /usr/local/redis-4.0.9/ && chown -R redis:redis /usr/local/bin/redis*
    CMD ["sudo","-u","redis","/usr/local/bin/redis-server","/usr/local/redis-4.0.9/redis.conf"]
    EXPOSE 6379
    # 指定系统镜像版本
    FROM centos:6
    # 指定管理员名称
    MAINTAINER xiangsikai
    # 添加变量,指定中文编码
    ENV LANG en_US.UTF-8
    # 添加变量,同步系统时间
    ENV TZ=Asia/Shanghai
    # 添加命令
    RUN yum install -y gcc gcc-c++ tcl sudo
    # 添加文件
    ADD redis-4.0.9.tar.gz /usr/local/
    # 添加命令
    RUN mkdir /usr/local/redis-4.0.9/data && mkdir /usr/local/redis-4.0.9/logs && mkdir /usr/local/redis-4.0.9/run
    # 添加命令
    RUN cd /usr/local/redis-4.0.9/ && make && make install
    # 添加命令件
    RUN rm -rf /usr/local/redis-4.0.9/redis.conf
    # 上传文件,上传本地文件到容器
    COPY redis.conf /usr/local/redis-4.0.9/redis.conf
    # 添加命令
    RUN useradd redis && chown -R redis:redis /usr/local/redis-4.0.9/ && chown -R redis:redis /usr/local/bin/redis*
    # 启动命令
    CMD ["sudo","-u","redis","/usr/local/bin/redis-server","/usr/local/redis-4.0.9/redis.conf"]
    # 开放端口
    EXPOSE 6379
    文件注释

    2、创建镜像(redis目录下)

    docker build -t 192.168.1.81:5000/redis:v1 .

    3、上传镜像

    docker push 192.168.1.81:5000/redis:v1

    4、创建 service_redis.yml

    version: '3.7'
    services:
    
      redis:
        image: 192.168.1.81:5000/redis:v1
        ports:
          - 6380:6379
        networks:
          - networkce
        deploy:
          mode: replicated
          replicas: 2
          update_config:
            parallelism: 1
            delay: 10s
            failure_action: rollback
            order: start-first
          rollback_config:
            parallelism: 1
            delay: 10s
            failure_action: rollback
            order: start-first
        volumes:
          - type: volume
            source: nfs-redis_log
            target: /usr/local/redis-4.0.9/logs
            volume:
              nocopy: true
    
    networks:
      networkce:
        driver: overlay
    
    volumes:
      nfs-redis_log:
        driver: local
        driver_opts:
          type: "nfs"
          o: "addr=192.168.1.81,vers=4,soft,timeo=180,bg,tcp,rw"
          device: "192.168.1.81:/docker/service/zs/redis/log"
    # 指定版本
    version: '3.7'
    # 服务
    services:
    
    # 指定服务名
      redis:
        # 指定使用镜像
        image: 192.168.1.81:5000/redis:v1
        # 指定开放端口
        ports:
          - 6379:6379
        # 指定网络
        networks:
          - networkce
        # 管理容器
        deploy:
          # 设置副本模式
          mode: replicated
          # 副本数
          replicas: 2
          # 更新配置
          update_config:
            # 每次更新数量
            parallelism: 1
            # 每次更新时间
            delay: 10s
            # 更新失败设置,rollback回滚
            failure_action: rollback
            # 更新状态,start-firest 更新同时叠加旧版本,之后删除
            order: start-first
          # 回滚配置
          rollback_config:
            # 每次回滚数量
            parallelism: 1
            # 每次回滚时间
            delay: 10s
            # 回滚失败设置,rollback回滚
            failure_action: rollback
            # 回滚状态,start-firest 回滚同时叠加旧版本,之后删除
            order: start-first
        # 配置持久化数据
        volumes:
          # 数据类型
          - type: volume
            # 设置名称
            source: nfs-redis_log
            # 挂载容器路径
            target: /usr/local/redis-4.0.9/logs
            # 默认
            volume:
              nocopy: true
    
    # 网络
    networks:
      # 添加网络名称
      networkce:
        driver: overlay
    
    # 数据持久化
    volumes:
      # 数据名称
      nfs-redis_log:
        driver: local
        driver_opts:
         # 类型
          type: "nfs"
          # 官方默认配置 
          o: "addr=192.168.1.81,vers=4,soft,timeo=180,bg,tcp,rw"
          device: "192.168.1.81:/docker/service/zs/redis/log"
    文件注释

    5、创建服务

    docker stack deploy -c service_redis.yml redis
  • 相关阅读:
    Delphi的Colorbox不需要系统那么多颜色,只想自定义显示其中几个,怎么做?
    aName:array[0..31] of WideChar;//编译提示检测到错误类EAccessViolation//没有初始化
    ACCESS2003替换数据中的通配符 本身的办法
    startActivityForResult和setResult详解
    关于android和java环境和编译的一些基本知识
    onWindowFocusChanged重要作用
    线程取消(pthread_cancel)
    通过给程序里嵌入manifest,使得程序运行时弹出UAC窗口
    c#实现打印
    access导入mssql,access自动编号编号的问题
  • 原文地址:https://www.cnblogs.com/xiangsikai/p/10291242.html
Copyright © 2011-2022 走看看