Linux入门教程:管理swarm(14) – 服务介绍,通常时候,一个服务对


要在Docker Engine swarm模式中部署一个应用程序镜像,你需要创建一个服务。通常时候,一个服务对于一些规模比较大的应用程序的一个微服务镜像。例如服务比较包含一个HTTP服务器,一个数据库或者你想运行在分布式环境的可执行程序。
当你创建一个服务,你可以指定使用哪个容器镜像和在容器中运行的命令。你也可以定义服务的选项,包括:

可在swarm外部访问服务的端口 在swarm中服务之间可以互相通信的覆盖网络 CPU和内存限制和预留 滚动更新策略 运行在swarm的镜像副本的数量

服务,任务和容器

当你部署服务到swarm,swarm管理器接收你对服务期望状态的定义。然后它为你服务在swarm中的节点调度一个或多个副本任务。这些任务在swarm的节点上彼此独立地运行。
例如假设你想负载均衡三个HTTP服务器实例。下面的图表展示了三个HTTP服务器副本。三个HTTP实例中的每一个是swarm中的一个任务。

一个容器是孤立的进程。在swarm模式模型中,每个任务调用一个容器。任务包含着容器。一旦容器运行正常,调度器就会把相此容器相关联的任务识别为在线状态。否则容器停止或有异常,则任务显示为终止。

任务和调度

任务是swarm内调度的原子单位。当你通过创建或更新服务声明一个期望状态的服务,调度器通过调度任务来实现期望的状态。例如,你指定一个服务始终保持运行三个HTTP实例。调度器就创建三个任务。每个任务运行一个容器。容器是任务的实例化。如果一个HTTP容器之后出现故障停止,此任务被标志为失败,调度器就会创建一个新的任务来生成一个新容器。
任务是一个单向机制。它单向地执行一系统状态,assigned, prepared, running等。如果一个任务失败了,调度器就会删除这个任务和它的容器,然后创建一个新的任务来替换它。
下面的图表显示swarm模式是如何接收服务创建请求和调度任务到worker节点的。

副本和全局服务

有两种类型的服务部署,副本和全局。
对于副本服务,你可以指定运行相同任务的数量。例如,你决定部署三个HTTP实例的副本,每个提供相同的内容。
一个全局服务是在每个节点上运行一个相同的任务。不需要预先指定任务的数量。每次你增加一个节点到swarm中,协调器就会创建一个任务,然后调度器把任务分配给新节点。比如你希望在每个节点上运行监控代理,病毒扫描器等。
下面的图表显示以黄色标注的三个副本的服务和灰色标注的一个全局服务。

相关内容