Docker:Docker集群配置与应用(Docker Swarm)

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

前言

可以认为Docker Swarm(Go语言开发)将一个Docker主机池变成了一个单独的虚拟机。

学习目标

  • 了解 Docker Swarm,掌握 Swarm 集群建立及节点管理
  • 了解 Swarm 服务,学会在集群中部署和管理服务
  • 了解 Swarm 网络,掌握 overlay 网络的创建和使用
  • 了解 Swarm 高可用性和负载平衡,学会配置外部负载平衡器
  • 熟悉 Docker 栈,会使用它在集群中部署分布式应用程序

之前的学习都是基于单个 Docker 主机的,所有容器都是运行在同一个主机上的。实际生产环境往往会有多个 Docker 主机,涉及跨主机多子网的容器配置管理,复杂性大大提高。Docker Compose 支持多个服务的编排,但不支持跨主机部署,而集群(Cluster)将多个主机作为一个协同工作的有机整体,使其能够像单个系统那样工作,同时支持高可用、负载平衡和并行处理。在集群中部署应用程序时,用户不必关心应用程序具体部署在哪台主机上,只需关心所需的资源,应用程序由集群管理程序进行调度。Docker 从1.12版本开始通过内置 Swarm 模式实现集群管理,实现应用程序自动化部署、可伸缩、高可用和负载平衡。Docker栈能够以Swarn 网络为基础,使多个服务相互关联,并在多台主机上运行它们,便于将不同主机上的容器以服务的形式在集群中一步部署到位,为大规模分布式应用程序的部署和管理提供解决方案。
===>重点是 Swarm 集群的建立和管理,以及应用程序在集群中的部署和管理。

1. 建立Docker Swarm集群

Swarm是 Docker 官方提供的一款集群管理工具,其主要作用是把若干台 Docker 主机抽象为一个整体,并通过一个入口统一管理这些 Docker主机上的各种 Docker 资源。要通过 Docker Swarm 来部署和管理应用程序,首先要建立集群,对集群节点进行配置管理。

我们需要:

  1. 了解 Docker Swarm 的背景知识。
  2. 了解 Swarm 集群及其节点。
  3. 掌握 Swarm 集群的创建方法。
  4. 熟悉 Swarm 节点的管理操作。

1.1 为什么要使用容器集群

单主机的 Docker 引擎和单一的容器镜像只能解决单一服务的打包和测试问题,而要在生产环境中部署企业级应用,就需要容器集群。容器集群的设计目标是在主机集群之间提供一个能够自动化部署、扩容,以及运维的应用容器平台。

在 1.12 版本之前,Docker 在集群管理上依赖第三方解决方案,其中最著名的就是 Kubernetes。Kubernetes 简称 K8s,是 Google 提供的开源的容器编排引擎,用于管理云平台多主机上的容器化应用,支持容器化应用程序的自动化部署、伸缩和管理。Kubernetes 通常结合 Docker 工作,并且整合多个运行 Docker 容器的主机集群,它不仅支持 Docker,而且支持另一种容器技术 Rocket。Kubernetes 采用不同于 Docker 的配置和编排方法,比较复杂,适合大中型集群运行复杂应用程序的环境。

Docker 从 1.12 版本开始引入 Swarm 模式来实现集群管理。Swarm 本意是蜂群,表示动物的群体,Docker 使用这个概念表示由多个 Docker 引擎组成的一个整体,也就是集群。Docker Swarm 是Docker 原生的集群工具,因而无需使用额外的编排软件创建或管理集群。Docker 工具和 Docker API都可以无缝地在 Docker Swarm 上使用,只是使用环境从单机转变为更高级别的集群。Docker Swarm部署更简单,适合规模不大的应用程序环境,尤其适用于简单和快速开发。

用 Docker Swarm 创建集群非常简单,用户不需要额外安装任何软件,也不需要进行任何额外的配置,很适合作为学习和使用容器集群平台的起点,当然也可用于中小规模的 Docker 集群实际部署。

1.2 什么是Swarm集群

一个Swarm 集群包含多个以Swarm 模式运行的 Docker 主机,它们充当管理器(Manager),负责管理成员和代理;或者充当工作者(Worker),负责运行 Swarm 服务。一台 Docker 主机可以是管理器,也可以是工作者,或者同时兼任这两种角色。

Swarm 集群管理的对象主要是服务,而不是独立的容器。服务用于定义要在节点上执行的任务,是整个集群系统的核心结构,也是用户与 Swarm 交互的基本单元,用户在创建服务时可以指定要使用的容器镜像和要在容器中执行的命令。Swarm 服务相对于独立容器的一个关键优势是,无需重启服务就可以修改服务的配置,如要连接的网络和卷。

任务(Task)定义容器和要在容器中运行的命令,它是 Swarm 集群的原子调度单位。管理器节点根据服务规模中设置的副本数量将任务分配给工作者节点。一旦任务被分配给某个节点,就不能转移到另一个节点,只能在所分配的节点上正常运行或运行失败。

当 Docker 以 Swarm 模式运行时,独立容器仍然可以在加入Swarm 集群的 Docker主机上运行。

只有 Swam 管理器能够管理 Swarm 集群,而独立容器可以由任何守护进程启动。Docker 守护进程可以作为管理器或工作者加入Swarm 集群。

与使用 Docker Compose 定义和运行容器编排单主机上的多个服务一样,管理员也可以定义和运行Swarm 服务栈(Service Stack),实现多个节点多个服务的集群部署。

1.3 Docker Swarm特性

Docker目前的版本包括原生的 Swarm 模式,其主要特性列举如下。

  1. 实现与 Docker 引擎集成的集群管理。
  2. 去中心化设计。Swarm 节点的角色分为管理器和工作者,任一节点的故障都不影响应用程序的使用。
  3. 声明式服务模型。Docker 引擎使用声明式方法在应用栈中定义各种服务所需的状态。
  4. 可伸缩服务。
  5. 状态自动调整。管理器节点持续监视集群状态并调整实际状态与期望状态之间的差异。
  6. 多主机连网。
  7. 服务发现(Service Discovery )。管理器节点为 Swarm 集群中的每个服务分配一个唯一的 DNS 名称,并平衡正在运行的容器的负载。
  8. 默认安全机制。Swarm 集群中的每个节点都强制进行 TLS相互认证和加密,以保护其自身与所有其他节点之间的通信。
  9. 滚动更新。—旦有更新推出,就可以以增量方式将服务更新应用于节点。如果出现任何问题,则可以将任务回滚到以前版本。

1.4 Swarm节点

Swarm 集群架构如图所示,整个集群由一个或多个节点组成。这些节点可以是运行 Docker 引擎的物理机或虚拟机,节点按角色分为管理器节点工作者节点两种类型。
Docker:Docker集群配置与应用(Docker Swarm),Docker,docker,eureka,容器

(1)管理器节点
管理器节点负责下列集群管理任务。

  • 维护集群状态。
  • 调度服务。
  • 提供 Swarm 模式的 HTTP API 端点。

管理器使用 Raft 共识算法,可以维持整个 Swarm 集群及其中运行的所有服务的内部状态一致性。
Raft 要求大多数管理器(也称为法定人数)同意对集群的更新建议,如节点添加或者删除。如果仅用于测试,则一个集群使用单个管理器就可以。在单个管理器的集群中,若管理器发生故障,服务会继续运行,但需要创建一个新的集群以进行恢复。

为充分利用 Swarm 模式的容错功能,Docker 建议用户根据自己的高可用性要求部署奇数个节点。
当存在多个管理器时,如果管理器节点发生故障,不用停机就可以恢复。可以按照下列建议确定管理器节点数量。

  • 3个管理器的 Swarm 集群最多允许一个管理器节点的失效。
  • 5个管理器的 Swarm 集群最多允许两个管理器节点的同时失效。
  • N个管理器的 Swarm 集群最多允许(N-1)/2 个管理器节点的同时失效。
    Docker 建议一个集群最多包含 7 个管理器节点,添加更多的管理器节点并不意味着更强的可扩展
    性或更高的性能,情况往往正好相反。

(2)工作者节点
  工作者节点也是 Docker 引擎的实例,其唯一目的是运行容器。工作者节点不加入 Raft 分布式状态存储,不进行调度决策,也不提供 Swarm 模式的 HTTP API 服务。

  可以创建单个管理器节点的集群,但集群中不能只有工作者节点而没有管理器节点。默认情况下,所有管理器节点同时也是工作者节点

(3)改变节点的角色
  可以将工作者节点升级为管理器节点。例如,要对管理器节点进行离线维护时,可能需要升级工作者节点。当然,也可以将管理器节点降级为工作者节点。

1.5 Swarm 集群管理命令

  • docker swarm ca: 显示和轮转根 CA
  • docker swarm init: 初始化集群
  • docker swarm join: 作为节点加入集群
  • docker swarm join-token: 管理加入集群的令牌
  • docker swarm leave: 脱离集群
  • docker swarm unlock: 解锁集群
  • docker swarm unlock-key: 管理解锁密钥
  • docker swarm update: 更新集群

建立集群必须使用初始化集群命令,基本语法如下。

docker swarm init --advertise-addr [参数]

执行此命令时,--advertse-addr 选项用于将管理器节点的ip地址通告给集群中的其他节点,该地址必须是固定ip地址。默认情况下,Docker Swarm 为全局作用域 overlay 网络分配默认的地址池 10.0.0.0/8,每个网络都将从这个地址池中被依次分配一个子网。要配置自定义默认地址池,可以使用 --default-addr-pool 选项定义,其中子网掩码使用 CIDR 记法。--listen-addr 选项指定用于承载 Swarm 流量的ip和端口,通常与--advertise-addr选项的参数值一致,但是当节点上有多个iP 地址的时候,可用于指定某个具体ip地址。还可以使用--force-new-custer选项强制从当前状态创建新的集群,这个操作会删除当前管理器节点以外的所有管理器节点。

执行 docker swarm init命令会生成两个随机的令牌(Token)作为其他节点加入集群的密钥:一个是工作者令牌,另一个是管理器令牌。当一个节点加入集群时,其角色是工作者还是管理器就取决于传递的是哪个令牌。

建立集群之后,其他主机加入集群需要使用 docker swarm join 命令,其基本语法如下。

docker swarm join [选项] 主机:端口

该命令的主机和端口参数分别指集群创建者的|P 地址和集群管理的通信端口(通常是2377)。该命令最重要的选项是–token,用来传递初始化集群所生成的令牌。

docker swarm update 命令使用新的选项值更新现有的集群,此命令在管理器节点上运行。

集群涉及自动锁定,执行 docker swarm initdocker swarm update 命令时可设置–autolock 选项值为 true 来生成一个加密密钥,以自动锁定管理器。所有管理器存储的私钥和数据都将受到该加密密钥的保护,如果不提供该密钥,将无法访问。密钥通过 docker swarm unlock 命令提供以重新激活管理器。也可以执行 docker swarm update --autolock=false 命令取消集群的锁定。默认情况下没有自动锁定集群。

Swarm 集群节点管理命令

这些命令都只能在管理器节点上运行

  • docker node demote:将一个或多个管理器节点降级为工作者节点。
  • docker node inspect:显示一个或多个节点的详细信息。
  • docker node ls:列出 Swarm 集群中的节点。
  • docker node promote:将一个或多个节点升级为管理器节点。
  • docker node ps:列出在一个或多个节点(默认为当前节点)上运行的任务。
  • docker node rm:从 Swarm 集群中删除一个或多个节点。
  • docker node update:更新节点的选项,如可用性、标签或角色。

1.6 Docker Swarm 集群搭建

// TODO文章来源地址https://www.toymoban.com/news/detail-775014.html

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

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

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

相关文章

  • 4.docker容器编排(docker compose 与 docker swarm)

    容器编排:就是针对容器生命周期的管理,对容器的生命周期进行更快速方便的方式进行管理。 实例:一个java程序,依赖了mysql,redis,要想把 java 程序运行起来,则必须要先启动 mysql、redis。那么这三者这件就存在了依赖关联。   容器编排存在的意义: 依赖管理,当一个容

    2024年02月03日
    浏览(56)
  • Docker Swarm集群管理

    秋风阁(https://focus-wind.com/) Docker Swarm官方文档 Docker Swarm是Docker引擎原生内置的容器集群管理工具。 Swarm节点 运行Docker的主机可以主动初始化一个Swarm集群作为Leader节点或者加入一个已存在的Swarm集群,这样这个运行Docker的主机就成为一个Swarm集群的节点。 Swarm集群节点可以分为

    2024年02月05日
    浏览(34)
  • Docker Swarm 集群搭建

    Docker Swarm Mode Docker Swarm 集群搭建 Docker Swarm 节点维护 Docker Service 创建  搭建一个 docker swarm 集群,包含 5 个 swarm 节点。这 5 个 swarm 节点的 IP 与暂 时的角色分配如下(注意,搭建完成后会切换角色): host ip role docker 192.168.137.100 manager docker2 192.168.137.101 manager docker3 192.168.1

    2024年02月04日
    浏览(39)
  • Docker Swarm集群企业案例实战

    Docker Swarm 和 Docker Compose 一样,都是 Docker 官方容器编排项目,但不同的是,Docker Compose 是一个在单个服务器或主机上创建多个容器的工具,而 Docker Swarm 则可以在多个服务器或主机上创建容器集群服务,对于微服务的部署,显然 Docker Swarm 会更加适合 。 Swarm是Docker公司自主研

    2024年02月19日
    浏览(41)
  • 【大白学Docker】Docker Swarm 集群部署 Wordpress【实验】

    1.1 Docker 集群概念和优势 Docker 集群是由多个 Docker 主机 组成的分布式系统,用于协同管理和运行容器化应用程序。 这个集群可以通过 Docker Swarm 或 Kubernetes 等容器编排工具来实现。 Docker 集群的几个概念 节点(Node): 集群中的物理或虚拟主机,可以运行 Docker 守护进程。 集

    2024年02月04日
    浏览(37)
  • portainer管理远程docker和docker-swarm集群

    使用前请先安装docker和docker-compose,同时完成docker-swarm集群初始化 部署portainer-ce实时管理本机docker,使用docker-compose一键拉起 docker-compose.yml 6053537/portainer-ce 此镜像为中文版本,效果如下 管理本地docker比较简单,直接使用 volumes 挂载目录即可 /var/run/docker.sock:/var/run/docker.sock

    2024年03月20日
    浏览(47)
  • 从swarm到kubernetes Docker容器云实践

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

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

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

    2024年02月01日
    浏览(49)
  • Docker Swarm 集群搭建和使用 —— 筑梦之路

    swarm 集群由 管理节点 (Manager)和 工作节点 (Worker)构成。 管理节点:主要负责整个集群的管理工作包括集群配置、服务管理等所有跟集群有关的工作。诸如监控集群状态、分发任务至工作节点等操作。 工作节点:主要负责执行运行服务的任务。  官方文档:docker swarm |

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

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

    2024年02月08日
    浏览(44)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包