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:
MAINTAINER xiangsikai
ENV LANG en_US.UTF-
ENV TZ=Asia/Shanghai
RUN yum install -y gcc gcc-c++ tcl sudo
ADD redis-4.0..tar.gz /usr/local/
RUN mkdir /usr/local/redis-4.0./data && mkdir /usr/local/redis-4.0./logs && mkdir /usr/local/redis-4.0./run
RUN cd /usr/local/redis-4.0./ && make && make install
RUN rm -rf /usr/local/redis-4.0./redis.conf
COPY redis.conf /usr/local/redis-4.0./redis.conf
RUN useradd redis && chown -R redis:redis /usr/local/redis-4.0./ && 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
# 指定系统镜像版本
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

Docker Swarm redis 集群搭建的更多相关文章

  1. 基于Docker的redis集群搭建

    Redis集群官方介绍:http://www.redis.cn/topics/cluster-tutorial.html 基于Docker搭建Redis集群 环境:6个节点,三主三从 制作Redis镜 ...

  2. docker 实现redis集群搭建

    摘要:接触docker以来,似乎养成了一种习惯,安装什么应用软件都想往docker方向做,今天就想来尝试下使用docker搭建redis集群. 首先,我们需要理论知识:Redis Cluster是Re ...

  3. docker实验--redis集群搭建

    背景介绍: 我经常在做一些小项目的时候,采用了Redis来做缓存,但是都是基于单节点的,一旦redis挂了,整个项目就挂了.于是乎,想到了多节点集群的方式来使用,就开始折腾着怎么去搭建这个集群.在网上 ...

  4. Docker Swarm nginx 集群搭建

    环境1: 系统:Linux Centos 7.4 x64 内核:Linux docker 3.10.0-693.2.2.el7.x86_64 Docker 版本:18.09.1 redis 版本:ng ...

  5. 基于Dokcer搭建Redis集群搭建(主从集群)

    最近陆陆续续有不少园友加我好友咨询 redis 集群搭建的问题,我觉得之前写的这篇 <基于Docker的Redis集群搭建> 文章一定是有问题了,所以我花了几分钟浏览之前的文章总结了下面几 ...

  6. docker redis4.0集群搭建

    一.前言 redis集群对于很多人来说非常熟悉,在前些日子,我也有一位大兄弟也发布过一篇关于在阿里云(centOS7)上搭建redis 集群的文章,虽然集群搭建的文章在网上很多,我比较喜欢这篇文章的地 ...

  7. 25.redis集群搭建笔记

    ###Redis集群### 0.准备 软件: redis-3.0.0.gem redis-3.0.0.tar.gz#源码   1.安装ruby环境 redis基于ruby槽位计算,hash算法技术,k ...

  8. Redis 集群搭建详细指南

    先有鸡还是先有蛋? 最近有朋友问了一个问题,说毕业后去大城市还是小城市?去大公司还是小公司?我的回答都是大城市!大公司! 为什么这么说呢,你想一下,无论女孩男孩找朋友都喜欢找个子高胸大的.同样的道理嘛 ...

  9. 二、redis集群搭建

    redis集群搭建 redis3.0后支持集群.集群中应该至少有三个节点,每个节点有一备份节点.需要6台服务器.搭建伪分布式,需要6个redis实例.搭建集群的步骤: 一.安装单机版redis 第一步 ...

随机推荐

  1. kafka---->kafka stream的使用(一)

    kafka stream的简单使用,这里是官方文档上面的例子. kafka的简单使用 一.启动Kafka server huhx@gohuhx:~/server/kafka_2.11-1.1.0$ b ...

  2. 联想R720面板右下部分按压后和上面按键串联了

    如图所示的位置,一用力按压,就会触发键盘的按键. 前提: 本人刚刚加装了内存条,内存条是京东买的 十铨(Team) DDR4 2400 8GB 笔记本内存,安装完内存以后,发现电脑出了这样的问题. 解 ...

  3. lamda表达式和stream

    stream主要用于处理数据,看一下jdk的文档,并且主要处理集合对象: int sum = widgets.stream() .filter(w -> w.getColor() == RED) ...

  4. Codeforces Round #531 (Div. 3)

    A:瞎猜. #include <bits/stdc++.h> using namespace std; int main(){ ios::sync_with_stdio(false); i ...

  5. Nestjs 增加全局前缀

    文档 const app = await NestFactory.create(AppModule); app.setGlobalPrefix('v1'); // http://localhost:5 ...

  6. python中元组与数组的区别

    列表: a=['12', '3rr'] 元组: t=(21,34) 列表可以修改,而元组不可以修改,如果元组中仅有一个元素,则要在元素后加上逗号. 元组和列表的查询方式一样. 元组只可读不可修改. 如 ...

  7. java+js实现展示本地文件夹下的所有图片demo[申明:来源于网络]

    java+js实现展示本地文件夹下的所有图片demo[申明:来源于网络] 地址:http://blog.csdn.net/allgis/article/details/46364875

  8. 请大神留言:使用static方法和从Spring IOC 容器里面取出的方法有什么区别????

    类的静态方法,不用new出对象,因为它在类的初始化阶段加载到jvm内存的. 而spring容器,是在启动服务的时候,new出容器所管理的对象. 本质区别就是一个在堆中产生了对象,一个没产生对象只在方法 ...

  9. 终于等到你!WebOptimizer - A bundler and minifier for ASP.NET Core

    迷人的 ASP.NET Core 有一个美中不足之处,自从一开始接触它到现在,我就一直不喜欢,一直想找到替代品,甚至想过自己实现一个,它就是 BundlerMinifier . 昨天面对 bundle ...

  10. shiro 角色与权限的解读

    1.为什么 shiro 有了<角色>后,还要设置<角色权限>呢?(问题) 思考:设置好角色了,那么就代表什么操作都可以执行了吗? 理解:如果上边回答是的话,那么只是<角色 ...