11. Docker Swarm(二)

这篇具有很好参考价值的文章主要介绍了11. Docker Swarm(二)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1、前言

上一篇中我们利用Docker Swarm搭建了基础的集群环境。那么今天我们就来验证以下该集群的可用性。上一篇的示例中,我创建了3个实例副本,并且通过访问http://192.168.74.132:8080得到我们的页面。

11. Docker Swarm(二),云原生,docker,容器,linux,运维,云原生

11. Docker Swarm(二),云原生,docker,容器,linux,运维,云原生

2、验证高可用

1)我们可以通过以下命令查看当前应用的节点信息:

docker service ps swarm_demo

11. Docker Swarm(二),云原生,docker,容器,linux,运维,云原生

可以看出在IP为132,133,134上各启动了一个容器来运行。

2)此时,我们将134上的节点容器关掉:

# 查看容器信息,拿到容器ID
docker ps

# 停止该容器
docker stop <容器ID>

11. Docker Swarm(二),云原生,docker,容器,linux,运维,云原生

3)停止完后,我们再到master节点上查看节点信息:

11. Docker Swarm(二),云原生,docker,容器,linux,运维,云原生

可以看到134节点上出现运行的容器宕机了,但是由于我们将节点的副本数量设置为3,所以Swarm集群自动的又重新启动了一个容器。通过当前状态可以看到启动的时间。

4)如果我们把134的docker容器整个停止掉:

11. Docker Swarm(二),云原生,docker,容器,linux,运维,云原生

5)我们再来查看master节点节点信息:

11. Docker Swarm(二),云原生,docker,容器,linux,运维,云原生

我们会发现3个节点副本中,有2个启动在了132的节点上。

而我们依然可以访问我们的应用:

11. Docker Swarm(二),云原生,docker,容器,linux,运维,云原生

3、热更新

Docker Swarm实现平滑升级,也就是不停机更新。

1)更新Dockerfile文件,版本号version改为2:

FROM nginx
RUN echo '<h1> My first Swarm demo, version: 2</h1>' > /usr/share/nginx/html/index.html

2)重新编译镜像:

docker build -t pengyaohuang/swarm_nginx_demo:2 .

3)上传Docker Hub:

docker login
docker push pengyaohuang/swarm_nginx_demo:2

11. Docker Swarm(二),云原生,docker,容器,linux,运维,云原生

4)更新之前Swarm部署的服务:

docker service update --image pengyaohuang/swarm_nginx_demo:2 swarm_demo

11. Docker Swarm(二),云原生,docker,容器,linux,运维,云原生

5)访问应用:

11. Docker Swarm(二),云原生,docker,容器,linux,运维,云原生

4、数据持久化

与单机环境一样,Docker Swarm集群中的容器也是无状态的服务。如果在Swarm集群行了MySQL 等有状态的服务,若没有将数据挂载到宿主机中,那么一旦容器被销毁,则意味着据会丢失。

Docker Swarm集群提供了两种方式解决数据持久化问题:

  1. volume模式:默认模式,将工作节点宿主机的目录同步到容器内。
  2. NFS模式:通过网络文件系统实现数据持久化。

4.1、volume挂载

这里的数据卷方式与docker容器下的数据卷完全一样。可以使用以下命令挂载数据卷:

docker service create -p 8080:80 --replicas 3 --name swarm_demo \
    --mount type=volume,src=myvolume,dst=/usr/share/nginx/html/ \
    pengyaohuang/swarm_nginx_demo:1

这里使用--mount进行挂载数据卷。这里将容器/usr/share/nginx/html/目录挂载到宿主机定义的myvolume目录下。

查看数据卷信息,可以使用:

docker volume ls

通过volume模式挂载的数据卷,可以实现容器与宿主机间的数据持久化,但是无法实现群中各个节点的数据共享。

4.2、NFS

为了解决volume无法在各个节点中共享数据的问题,Swarm 集群中更常用的一种方式是,使用NFS(网络文件系统来实现数据的共享与持久化。

NFS(网络文件系统)允许计算机之间通过TCP/IP 网络共享资源。在NFS应用中,NFS客户端可以透明地读写远端NFS 服务器上的文件,就像访问本地文件一样。

系统结构图如下:

11. Docker Swarm(二),云原生,docker,容器,linux,运维,云原生

其中,NFS可被看成是 NFS 的服务器端,而 Docker 节点(master 节点、node1 节点、node2 节点)则可以被看成是NFS的客户端。因此,整个系统是 Client-Server 结构。

为了方便进行测试,可以将 master 节点作为 NFS Server。但在实际的环境中,一般可以单独搭建一个节点作为NFS Server。

1)安装NFS:

yum install -y nfs-utils
systemctl start nfs

2)master节点中编辑/etc/exports文件:

# 输入以下配置信息
/nfs *(rw,sync,no_root_squash)

参数说明:

  • /nfs:NFS共享目录
  • *:所有网段可以访问主机网段
  • rw:可读写权限
  • sync:数据传输采用同步方式,async表示异步
  • no_root_squash:NFS共享目录属性

3)master节点上创建/nfs目录:

mkdir /nfs
# 重启nfs节点
systemctl restart nfs

4)Node1节点上启动NFS客户端:

systemctl start rpcbind

5)在Node1节点上挂载NFS目录:

# 创建node1节点的目录
mkdir /nfs-node1
# 将master节点的目录/nfs挂载到node1节点的nfs-node1上
mount -t nfs 192.168.74.132:/nfs /nfs-node1

6)测试,node1目录上新建一个文件:

Node1节点上:

11. Docker Swarm(二),云原生,docker,容器,linux,运维,云原生

master节点上:

11. Docker Swarm(二),云原生,docker,容器,linux,运维,云原生

可以看到文件已经进行了同步。

7)Swarm集群中创建服务:

docker service create --replicas 3 --name swarm_demo -p 8080:80 \
    --mount 'type=volume,src=mynfsvol,dst=/usr/share/nginx/html,volume-driver=local,volume-nocopy=true,volume-opt=type=nfs,volume-opt=device=192.168.74.132:/nfs,"volume-opt=o=addr=192.168.74.132,vers=4,soft,timeo=180,bg,tcp,rw"' \
    pengyaohuang/swarm_nginx_demo:1

参数说明:

  • type=volume:数据存储类型
  • src=mynfsvol:数据卷名称
  • dst=/usr/share/nginx/html:挂载到容器中的目录
  • volume-opt=type=nfs:数据卷的类型
  • volume-opt=device=192.168.74.132:/nfs:挂载的 NFS 目录
  • volume-opt=o=addr=192.168.74.132: NFS 服务器的地址。

即可完成挂载。文章来源地址https://www.toymoban.com/news/detail-650932.html

到了这里,关于11. Docker Swarm(二)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 从swarm到kubernetes Docker容器云实践

    kubernetes 与swarm 比较 优点 复制集与健康维护 服务自发现与负载均衡 灰度升级 垃圾回收 自动回收失效镜像与容器 与容器引擎解耦 不仅仅支持docker容器 用户认证与资源隔离 缺点 大而全意味着 复杂度较高 从部署到使用都比swarm 复杂的多 相对而已swarm比较轻量级 而且跟docke

    2024年02月19日
    浏览(30)
  • Docker Swarm: 容器编排的力量和优势深度解析

    🎈个人主页:程序员 小侯 🎐CSDN新晋作者 🎉欢迎 👍点赞✍评论⭐收藏 ✨收录专栏:大数据系列 ✨文章内容:Docker Swarm 🤝希望作者的文章能对你有所帮助,有不足的地方请在评论区留言指正,大家一起学习交流!🤗 在现代应用开发和部署中,容器化技术以其轻量、可移

    2024年02月01日
    浏览(38)
  • Docker可视化容器监控工具portainer.io(docker监控docker)(Docker Standalone、Docker Swarm、Kubernetes、ACI、Nomad)监控容器

    Ubuntu上有一些流行的Docker容器监控服务,可以通过Web界面进行查看和管理。以下是一些常用的Docker容器监控工具: Portainer:Portainer是一个轻量级的Docker管理界面,提供了直观的Web界面来管理和监控Docker容器。它支持容器的创建、启动、停止、删除等操作,并提供了实时的容器

    2024年02月08日
    浏览(32)
  • 容器编排工具的比较:Kubernetes、Docker Swarm、Nomad

    随着容器化技术的普及,容器编排工具成为了现代应用部署和管理的重要组成部分。容器编排工具能够自动化容器的部署、扩展和管理,从而提高应用的可靠性和可伸缩性。在众多的容器编排工具中,Kubernetes、Docker Swarm和Nomad是三个备受关注的主要候选。本文将对这三个工具

    2024年02月09日
    浏览(41)
  • 【云原生】详细学习Docker-Swarm部署搭建和基本使用

      个人主页: 征服bug-CSDN博客 kubernetes专栏: 云原生_征服bug的博客-CSDN博客 目录 Docker-Swarm编排 1.概述 2.docker swarm优点 3.节点类型 4.服务和任务 5.路由网格 6.实践Docker swarm         Docker Swarm 是 Docker 的集群管理工具。它将 Docker 主机池转变为单个虚拟 Docker 主机,使得容器

    2024年02月13日
    浏览(30)
  • Kubernetes VS Docker Swarm:选择适合自己的容器编排工具

    容器编排工具是一种自动化部署和管理容器的工具。 利用容器编排工具可以方便地解决容器化应用程序的部署、扩展和高可用性等问题。 Kubernetes 和 Docker Swarm 是目前最流行的两个容器编排工具,因此选用它们来进行比较。 1.1 Kubernetes 的来源和发展背景 Kubernetes 源于 Google 的

    2024年02月06日
    浏览(63)
  • Kubernetes、Docker Swarm和Rancher的特点 - 容器编排平台比较

    本文将介绍三种流行的容器编排平台:Kubernetes、Docker Swarm和Rancher。我们将比较它们的特点,包括架构、功能、性能和生态系统。通过了解这些平台的优势和劣势,读者可以更好地选择适合自己需求的容器编排平台。 随着容器技术的快速发展,容器编排平台的需求也日益增长

    2024年02月12日
    浏览(47)
  • Docker Swarm实现容器的复制均衡及动态管理:详细过程版

    Swarm是一套较为简单的工具,用以管理Docker集群,使得Docker集群暴露给用户时相当于一个虚拟的整体。Swarm使用标准的Docker API接口作为其前端访问入口,换言之,各种形式的Docker Client(dockerclient in go, docker_py, docker等)均可以直接与Swarm通信。 Swarm的设计和其他Docker项目一样,遵

    2024年02月05日
    浏览(41)
  • 49学习容器管理平台 Docker Swarm 的基本概念和应用,包括节点管理、服务编排

    Docker Swarm 是 Docker 官方提供的容器编排工具,可以管理多个 Docker 节点,并支持自动化扩展、负载均衡等功能。下面是 Docker Swarm 的基本概念和使用方法,包括节点管理和服务编排。 在 Docker Swarm 中,一个或多个 Docker 节点组成一个 Swarm 集群,其中一个节点是 Swarm Manager,负责

    2024年02月05日
    浏览(36)
  • 『 云原生·Docker』Docker容器相关操作(二)

    本系列主要分为以下六大部分,正在更新中,尽请期待! 『 云原生·生之门』 『 云原生·前置知识』 『 云原生·Docker』 『 云原生·Kubernetes』 『 云原生·KubeSphere』 『 云原生·DevOps』 🚩点击关注本专栏 提示:已经更新的或正在更新的文章前面打勾了哈! 容器是 Docker的另一个

    2024年02月06日
    浏览(32)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包