如果Docker Swarm集群中运行了mysql、nginx等服务,这些服务的数据如果没有挂载到宿主机中,那么容器一旦停止运行,那就意味着数据丢失。
有什么方法可以解决swarm集群中运行的服务能够数据持久化呢?我们可以通过volme、nfs等方法来实现swarm集群应用数据持久化,其实也和docker数据持久化的形式是一样的。
可以用两种方式来实现:
  1. volume 默认模式:工作节点宿主机数据同步到容器内。
  2. volume NFS 共享存储模式:管理节点宿主同步到工作节点宿主,工作节点宿主同步到容器。
一、通过volume实现数据持久化
注意:这种方式各个节点的数据不能共享。
卷是绕过联合文件系统的一个或多个容器内的特定目录。 卷被设计为保持数据,与容器的生命周期无关。 因此,Docker在删除容器时不会自动删除卷,也不会“垃圾收集”不再由容器引用的卷。 也称为:数据卷。

使用的语法格式如下:
 
使用案例:
  • 在Swarm上部署服务,同时指定相应的数据卷
docker service create -p 7788:80 --replicas 3 --name myswarmtest \
--mount type=volume,src=myvolumn,dst=/usr/share/nginx/html/ collenzhao/mynginx:v1
  • 查看数据卷
docker volume ls

  • 查看数据卷挂载的目录
docker volume  inspect myvolumn

二、通过NFS实现数据持久化
NFS(Network File System)即网络文件系统,它允许网络中的计算机之间通过TCP/IP网络共享资源。在NFS的应用中,本地NFS的客户端应用可以透明地读写位于远端NFS服务器上的文件,就像访问本地文件一样。
 
为了方便我们进行测试,单独准备一台机器作为NFS的服务器:node3。接下来,我们就需要安装NFS了。
 
1、所有节点安装NFS
yum -y install nfs-utils  
 
2、NFS服务器端的部署

  • 开启NFS服务
systemctl enable nfs
systemctl start nfs
  • 创建NFS目录
mkdir /nfs 
  • 编辑NFS配置文件
vi /etc/exports

输入以下内容:
/nfs *(rw,sync,no_root_squash) 参数说明:
/nfs : 共享的目录
* : 可以访问的主机网段,星号表示所有网段。
rw : 可读写权限,只读权限ro
sync : 同步,数据更安全,速度慢
async : 异步,速度快,效率高,安全性低
no_root_squash :NFS 服务共享的目录的属性, 如果用户是root, 对这个目录就有root的权限
  • 重启NFS
systemctl restart nfs

3、NFS客户端的部署
  • 启动NFS客户端
systemctl start rpcbind
  • 测试挂载nfs共享目录
mount -t nfs 192.168.15.140:/nfs /mynfs

其中:192.168.15.140为node3(NFS服务器的地址)
  • 在文件/mynfs/a.txt 输入一些内容,在nfs服务器端查看是否能够看到刚才输入的内容。也可以通过下面的语句卸载NFS目录。
umount /mynfs/

4、基于NFS共享目录,创建Swarm集群服务

docker service create \
--replicas 3 \
--name my-nginx \
-p 7788:80 \
--mount 'type=volume,src=my-nfs-vol,dst=/usr/share/nginx/html,volume-driver=local,volume-nocopy=true,volume-opt=type=nfs,volume-opt=device=192.168.15.140:/nfs,"volume-opt=o=addr=192.168.15.140,vers=4,soft,timeo=180,bg,tcp,rw"' \
collenzhao/mynginx:v1

参数说明:

 
5、验证实验环境
  • 在Manager节点上,查看服务和数据卷目录
docker service ls

docker volume ls

  • 查看node1数据卷目录
docker volume ls

  • 查看node2数据卷目录
docker volume ls

  • 在任意一个节点上,进入数据卷共享目录修改a.html

【赵渝强老师】Docker Swarm集群的数据持久化的更多相关文章

  1. 通过docker-machine和etcd部署docker swarm集群

    本片文章介绍一下 使用docker-machine 搭建docker swarm 集群:docker swarm是docker 官方搭建的容器集群编排工具:容器编排,就是可以使你像使用一太机器一样来使 ...

  2. Centos7的安装、Docker1.12.3的安装,以及Docker Swarm集群的简单实例

    目录 [TOC] 1.环境准备 ​ 本文中的案例会有四台机器,他们的Host和IP地址如下 c1 -> 10.0.0.31 c2 -> 10.0.0.32 c3 -> 10.0.0. ...

  3. 从零开始搭建Docker Swarm集群

    从零开始搭建Docker Swarm集群 检查节点Docker配置 1. 打开Docker配置文件(示例是centos 7)vim /etc/sysconfig/docker2. 添加-H tcp:/ ...

  4. docker + swarm 集群

    docker + swarm 集群 导读 Swarm是Docker公司在2014年12月初新发布的容器管理工具.和Swarm一起发布的Docker管理工具还有Machine以及Compose.Swar ...

  5. Docker Swarm集群

    Docker Swarm集群 IP 10.6.17.11  管理节点 IP 10.6.17.12   节点A IP 10.6.17.13   节点B IP 10.6.17.14   节点C 安装 Sw ...

  6. 故障公告:docker swarm集群“群龙无首”引发部分站点无法访问

    今天傍晚 17:38-18:18 左右,由于 docker swarm 集群出现 "The swarm does not have a leader" 问题,造成博问.闪存.园子. ...

  7. 云计算之路-阿里云上-容器难容:自建docker swarm集群遭遇无法解决的问题

    我们从今年6月开始在生产环境进行 docker 容器化部署,将已经迁移至 ASP.NET Core 的站点部署到 docker swarm 集群上.开始我们选用的阿里云容器服务,但是在使用过程中我们遭 ...

  8. 云计算之路-阿里云上:docker swarm 集群故障与异常

    在上次遭遇 docker swarm 集群故障后,我们将 docker 由 17.10.0-ce 升级为最新稳定版 docker 17.12.0-ce . 前天晚上22:00之后集群中的2个节点突然出 ...

  9. 云计算之路-阿里云上:节点 CPU 波动引发 docker swarm 集群故障

    非常抱歉,今天 10:05-10:20 左右,我们用阿里云服务器搭建的 docker swarm 集群又出现故障,又是因为突然的节点 CPU 波动. 受这次故障影响的站点有 闪存,博问,班级,园子,短 ...

  10. 云计算之路-阿里云上:部分服务器未及时续费造成docker swarm集群故障

    非常非常抱歉,由于我们的疏忽 —— docker swarm 集群中的 2 台服务器没有及时续费,造成在夜里0点被自动关机,从而引发整个 docker swarm 集群故障,造成今天凌晨 0:30 ~ ...

随机推荐

  1. 全网最适合入门的面向对象编程教程:24 类和对象的 Python 实现-异常的捕获与处理:try/except 语句、文件读写示例、Exception 引用

    全网最适合入门的面向对象编程教程:24 类和对象的 Python 实现-异常的捕获与处理:try/except 语句.文件读写示例.Exception 引用 摘要: 本文主要介绍了在使用 Python ...

  2. Dubbo日志链路追踪TraceId选型

    一.目的 开发排查系统问题用得最多的手段就是查看系统日志,但是在分布式环境下使用日志定位问题还是比较麻烦,需要借助 全链路追踪ID 把上下文串联起来,本文主要分享基于 Spring Boot + Du ...

  3. 安全可信,Solon v2.8.6 发布

    Solon 框架! Java "纯血国产"应用开发框架.开放原子开源基金会,孵化项目.从零开始构建(非 java-ee 架构),有灵活的接口规范与开放生态. 追求: 更快.更小.更 ...

  4. ComfyUI插件:ComfyUI layer style 节点(一)

    前言: 学习ComfyUI是一场持久战,而ComfyUI layer style 是一组专为图片设计制作且集成了Photoshop功能的强大节点.该节点几乎将PhotoShop的全部功能迁移到Comf ...

  5. 为什么是Google创造了AlphaGo,而不是其他公司?

    相关: Artificial Intelligence | 60 Minutes Full Episodes 答案: Google一直在进行AI方向的探索: Google有足够的算力.

  6. Hutool常用工具类

    1.背景 实际开发中经常用到很多的工具类,这里hutool提供了一系列的工具类,下面重点介绍常用的工具类. 2.使用步骤 官方文档:https://hutool.cn/docs/#/ 添加依赖 < ...

  7. 用户案例 | Apache DolphinScheduler 离线调度在自如多业务场景下的应用与实践

    用户案例 | 自如 随着自如业务的快速发展,不断增长的调度任务和历史逾万的存量任务对平台稳定性提出了更高的要求.同时,众多非专业开发人员也需要一种更为"亲民"的调度平台使用体验. ...

  8. B. BerSU Ball

    B. BerSU Ball 排序后考虑\(dp\),\(dp_{i,j}\)表示前\(i\)个男生和前\(j\)个女生能匹配的最大数. \[\begin{aligned} if(|a_i - b_j| ...

  9. SMU Summer 2023 Contest Round 4

    SMU Summer 2023 Contest Round 4 A. Telephone Number 满足第一个8后面存在10个字符即可 #include <bits/stdc++.h> ...

  10. 网络问题mark

    复杂且混乱的网络环境, 主内网是192.168.0.254(网关), 中间混杂无数网段 , 无数dhcp, 同时还有0段的外网(跟254没关系) 现在是有一台服务器 , 192.168.0.47 , ...