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