概念
了解 DC/OS 概念和术语
DC/OS 由许多开源组件构成,其中多个在 DC/OS 之前就存在。本文档中使用的术语可能与您熟悉的已有术语相似,但它们可能在 DC/OS 中以不同方式使用。
DC/OS
DC/OS 是数据中心的 分布式操作系统。
与传统的分布式操作系统不同,DC/OS 还是管理基于本地可执行文件或容器镜像(如 Docker 镜像)的容器化任务的容器平台。同样与传统 操作系统 不同,DC/OS 是在 节点群集 上而不是在单台机器上运行。每个 DC/OS 节点还具有管理底层机器的 主机操作系统。
DC/OS 由许多组件构成,尤其是分布式系统内核 (Mesos) 和容器编排引擎 (Marathon)。
虽然 DC/OS 本身是开源,但像 Mesosphere DC/OS Enterprise 等高级分布可能包括其他闭源组件和功能,例如多租户、细粒度权限、密钥管理和端对端加密。
DC/OS GUI
DC/OS 图形用户界面 (GUI) 是用于从网页浏览器远程控制和管理 DC/OS 群集的界面。GUI 有时也被称为 DC/OS UI 或 DC/OS Web 界面。
DC/OS CLI
DC/OS 命令行界面 (CLI) 是从终端远程控制和管理 DC/OS 群集的界面。
群集
DC/OS 群集是一组联网的 DC/OS 节点,具有法定数量的管理节点以及任意数量的公共和/或专用代理节点。
网络
DC/OS 有两种类型的网络:基础架构网络和虚拟网络。
基础架构网络
基础架构网络是由 DC/OS 运行所在的基础架构提供的物理或虚拟网络。DC/OS 并不管理或控制此网络层,但是需要它才能让 DC/OS 节点进行通信。
虚拟网络
DC/OS 虚拟网络具体来说是群集内部的虚拟网络,连接在 DC/OS 上运行的 DC/OS 组件和容器化任务。
- DC/OS 提供的虚拟网络是由虚拟网络服务 (Navstar) 管理的 VXLAN。
- 虚拟网络必须由管理员配置,然后才能被任务使用。
- DC/OS 上的任务可以选择加入到特定虚拟网络上,并被给予容器特定的 IP。
- 虚拟网络允许对在 DC/OS 上运行的任务进行逻辑细分。
- 虚拟网络上的每个任务都可以用可选地址组配置,这几乎隔离了与同一网络和地址组上任务的通信。
节点
DC/OS 节点是 Mesos 代理节点和/或 Mesos 管理节点进程运行所在的虚拟机或物理机。DC/OS 节点联网以形成 DC/OS 群集。
管理节点
DC/OS 管理节点是一个虚拟机或物理机,运行一系列协同工作的 DC/OS 组件来管理群集的其他部分。
- 每个管理节点都包含多个 DC/OS 组件,尤其包括 Mesos 管理节点 进程。
- 管理节点在 Quorum 中工作,以实现群集协调的一致性。要避免 脑裂 群集分区,群集的管理节点数应始终为奇数。例如,具有三个管理节点允许一个管理节点出故障;具有五个管理节点允许两个管理节点出故障,允许在滚动更新过程中出故障。可添加额外的管理节点,以提高风险承受力。
- 只有一个管理节点的群集可用于开发,但可用性不高,可能无法从故障中恢复。
代理节点
DC/OS 代理节点是 Mesos 任务运行所在的虚拟机或物理机。
- 每个代理节点都包含多个 DC/OS 组件,尤其包括 Mesos 代理节点 进程。
- 代理节点可以是 专用的 或 公共的,具体取决于代理和网络配置。
专用代理节点
专用代理节点是位于网络上的代理节点,不允许*通过群集的基础架构网络从群集外部访问。
- 每个专用代理节点上的 Mesos 代理节点默认配置为不带有为任何特定 Mesos 角色分配的资源 (
*
)。 - 大多数服务包默认安装在专用代理节点上。
- 群集一般由大部分专用代理节点组成。
公共代理节点
公共代理节点是位于网络上的代理节点,允许通过群集的基础架构网络从群集外部访问。
- 每个公共代理节点上的 Mesos 代理节点配置有
public_ip:true
代理属性及其分配给slave_public
角色的所有资源。 - 公共代理节点主要用于面向外部的反向代理负载均衡器,如 Marathon-LB 或 Edge-LB。
- 群集通常只有几个公共代理节点,因为单个负载均衡器通常可以处理多个代理服务。
主机操作系统
主机操作系统是一个 操作系统,在 DC/OS 组件下的每个 DC/OS 节点上运行,管理本地硬件和软件资源,并提供运行其他程序和服务的公共服务。
主机操作系统管理本地任务和机器资源,DC/OS 则管理群集任务和资源,使得您不需要与节点上的主机操作系统进行交互。Bootstrap 机
bootstrap 机是配置、构建和分发 DC/OS 安装程序工件的机器。
- bootstrap 机在技术上不被视为是群集的一部分,因为它没有安装 DC/OS。对于大多数安装方法,必须通过基础架构网络来对群集中的机器进行 bootstrap 节点访问。
- bootstrap 机有时用作跳转盒来控制 SSH 访问群集中的其他节点,以提高安全性和日志记录。
- 允许管理节点更改 IP 的一种方法涉及在 bootstrap 机上用 Exhibitor 运行 ZooKeeper。其他替代方案包括使用 S3、DNS 或静态 IP,具有各种权衡。如需更多信息,请参阅 Exhibitor 存储后端 参数描述。
- 如果管理主节点 IP 更改不需要使用 bootstrap 机或将其作为 SSH 跳转盒,可在引导后将其关闭并按需转换 添加新节点 到群集。
服务
DC/OS 服务是一组或多个服务实例,可以作为一个组启动和停止,并在停止前退出时自动重启。
- 服务目前是一个 DC/OS GUI 抽象,可转换为 CLI 和 API 中的 Marathon 应用程序和 Pod。这种区分将随着名称“服务”上游推送到组件 API 而随时间变化。
- 有时“服务”也可以指主机操作系统上的
systemd
服务。这些通常被视为组件,实际上不在 Marathon 或 Mesos 上运行。 - 服务可以是系统服务或者用户服务。这种区分是新的并且随着命名空间转换为系统范围的第一类模式而不断发展。
Marathon 服务
Marathon 服务由零个或多个容器化服务实例组成。每个服务实例由一个或多个容器化 Mesos 任务组成。
- Marathon 应用程序和 Pod 均被视为服务。
- Marathon 应用程序实例与任务一对一映射。
- Marathon 应用程序实例与任务一对多映射。
- 服务实例在提前退出时作为新的 Mesos 任务重新启动。
- 如果服务实例提前退出且代理节点已关闭或不再有足够的资源,则可以重新安排到另一个代理节点上。
- 服务可通过 DC/OS API (Marathon) 直接安装,或者从 Mesosphere Catalog 等 包资源库 通过 DC/OS 包管理器 (Cosmos) 间接安装。可以使用 DC/OS GUI 和 DC/OS CLI 更轻松地与 DC/OS 包管理器 (Cosmos) 交互。
- Marathon 服务可以是 DC/OS 调度器,但并非所有服务都是调度器。
- Marathon 服务是围绕 Marathon 服务实例的抽象,后者是围绕 Mesos 任务的抽象。DC/OS 作业 (Metronome) 或 Jenkins 等其他调度器有自己的名称,用于围绕 Mesos 任务的抽象。
操作系统 systemd 服务
systemd
服务包含单个可选的容器化机器操作系统进程,在管理节点或代理节点上运行,由 systemd
管理,由 DC/OS 本身拥有。
- 所有
systemd
服务目前是主机操作系统服务、DC/OS 依赖关系、DC/OS 组件或系统管理员手动管理的服务。
管理员和 DC/OS 系统服务
系统服务是一项实现或增强 DC/OS 本身功能的服务,作为 Marathon 服务或 systemd
服务运行,由系统(管理员)用户或 DC/OS 本身拥有。
- 系统服务可能需要特殊权限才能与其他系统服务进行交互。
- 在 DC/OS Enterprise 群集上作为系统服务运行的权限需要特定的细粒度权限,而在开放的 DC/OS 上,所有登录用户都有相同的管理权限。
用户服务
用户服务是不属系统用户所拥有的 Marathon 服务,它并不是系统服务。
这种区分是新的,并且随着命名空间转换为系统范围的第一类模式,并映身到细粒度用户和用户组权限而不断发展。
示例: Jenkins、Cassandra、Kafka、Tweeter。
服务组
DC/OS 服务组是用于命名空间和组织的分级(路径式)DC/OS 服务集合。
- 服务组目前仅适用于 Marathon 服务,不适用于
systemd
服务。 - 这种区分可能随着命名空间转换为系统范围的第一类模式而改变。
作业
DC/OS 作业是一组类似的短期作业实例,作为 Mesos 任务运行,由 DC/OS 作业 (Metronome) 组件管理。可创建一个作业以仅运行一次,也可以按计划定期运行。
DC/OS 调度器
DC/OS 调度器是一个 Mesos 调度器,在管理节点上作为 systemd
服务运行,在代理节点上作为 Mesos 任务运行。
DC/OS 调度器和 Mesos 调度器之间的主要区别在于它运行的位置和安装的方式。
- 某些调度器预先安装为 DC/OS 组件(例如 Marathon、DC/OS 作业 (Metronome))。
- 某些调度器可以由用户作为用户服务安装(例如,Kafka、Cassandra)。
- 某些调度器作为多个服务实例运行,以提供高可用性(例如 Marathon)。
DC/OS 调度器服务
DC/OS 调度器服务是作为 DC/OS 服务运行的长期 DC/OS 调度器(Marathon 或 systemd
)。由于 DC/OS 调度器也可以作为短期任务运行,因此并非所有调度器都是服务。
DC/OS 服务组件
DC/OS 组件是与 DC/OS 一起分发的 DC/OS 系统服务。
- 组件可以是
systemd
服务或 Marathon 服务。 - 组件可以高可用性的配置部署。
示例: Mesos、Marathon、Mesos-DNS、Bouncer、Admin Router、DC/OS 包管理器 (Cosmos) 等。
包
DC/OS 包是指元数据捆绑包,描述如何使用 Marathon 来配置、安装和卸载 DC/OS 服务。
包管理器
DC/OS 包管理器 (Cosmos)) 是管理在 DC/OS 群集上安装和卸载包的一个组件。
- DC/OS GUI 和 DC/OS CLI 充当与 DC/OS 包管理器交互的客户端。
- DC/OS 包管理器 API 允许进行程序化交互。
包注册表
DC/OS 包注册表是 DC/OS 包的存储库。DC/OS 包管理器 可以被配置为从一个或多个包注册表安装包。
Mesosphere Catalog
Mesosphere Catalog 是由 Mesosphere 管理的一个公共包注册表。
如需更多信息,请参阅 GitHub 上的 Catalog 资源库。
容器注册表
容器注册表是预建容器镜像的存储库。Universal 容器运行时 和 Docker 引擎 都可以从公共或专用 Docker 容器注册表运行 Docker 镜像。
云模板
云模板是声明性描述 DC/OS 群集的一种基础架构特定方法。
有关使用云模板部署的更多信息,请参阅 Mesosphere 安装方法。
Mesos 概念
以下术语在谈到 Apache Mesos 时根据上下文是正确的,但可能会被 DC/OS 中的其他抽象所隐藏。
Apache Mesos
Apache Mesos 是一个分布式系统内核,可管理群集资源和任务。Mesos 是 DC/OS 的核心组件之一,先于 DC/OS 本身,为平台带来成熟性和稳定性。
有关详细信息,请参阅 Mesos 网站。
Mesos 管理节点
Mesos 管理节点是在管理节点上运行的一个进程,以协调群集资源管理并促进任务编排。
- Mesos 管理节点构成法定数量并选举领导者。
- 主 Mesos 管理节点收集 Mesos 代理节点报告的资源,并向 Mesos 调度器作出资源邀约。调度器然后可以接受资源邀约,并将任务置于其相应节点上。
Mesos 代理节点
Mesos 代理节点是在代理节点上运行的一个进程,以管理该节点的执行器、任务和资源。
- Mesos 代理节点寄存节点的部分或全部资源,允许主 Mesos 管理节点向调度器提供这些资源,调度器则决定运行任务的节点。
- Mesos 代理节点将任务状态更新报告给主 Mesos 管理节点,后者则将其报告给相应的调度器。
Mesos 任务
Mesos 任务是一个抽象的工作单位,由 Mesos 执行器进行生命周期管理,在 DC/OS 代理节点上运行。任务通常是进程或线程,但可以只是单线程队列中的内联代码或项目,具体取决于其执行器的设计方式。Mesos 内置命令执行器将每个任务作为一个进程运行,可以由多个 Mesos 容器化工具 的一个进行容器化。
Mesos 执行器
Mesos 执行器是 Mesos 代理节点启动任务的一种方法。Mesos 任务由其调度器定义,由特定执行器(或默认执行器)运行。每个执行器都在自己的容器中运行。
有关框架调度器和执行器的更多信息,请参阅 应用框架开发指南。
Mesos 调度器
Mesos 调度器是定义新的 Mesos 任务并为其分配资源(将其放在特定节点上)的程序。调度器收到描述 CPU、RAM 等的资源邀约,并分配给可由 Mesos 代理节点启动的离散任务。调度器必须在 Mesos 注册为框架。
示例: Kafka、Marathon、Cassandra。
Mesos 框架
Mesos 框架包括调度器、任务和可选的自定义执行器。术语“框架”和“调度器”有时可以互换使用。在 DC/OS 的情况下,我们更喜欢使用“调度器”。
有关框架调度器和执行器的更多信息,请参阅 应用框架开发指南。
Mesos 角色
Mesos 角色是一组 Mesos 框架,共享保留的资源、持久卷和配额。这些框架也在 Mesos 的层次主导资源公平性 (DRF) 份额计算中一起分组。角色通常与资源组混淆,这是由于它们在代理节点上静态配置的方式。分派实际上是反向的:资源被分派给角色。角色资源分配可以在 Mesos 代理节点上静态配置,或者使用 Mesos API 在运行时更改。
Mesos 资源 offer
Mesos 资源邀约从代理节点向调度器提供一组未分配的资源(如 CPU、磁盘、内存),以便调度器可将这些资源分配给一个或多个任务。资源邀约由领导 Mesos 管理节点构建,但资源本身由各代理节点报告。
Mesos 容器
容器化工具提供围绕特定容器运行时的容器化和资源隔离抽象。支持的运行时为
- 通用容器运行时
- Docker 引擎
通用容器运行时
通用容器运行时从二进制可执行文件和 Docker 镜像启动 Mesos 容器。通用容器运行时管理的 Mesos 容器并不使用 Docker 引擎,即使是从 Docker 镜像启动。
Docker 引擎
Docker 引擎 从 Docker 镜像启动 Docker 容器。
Exhibitor 和 ZooKeeper
Mesos 取决于 ZooKeeper,后者是管理群集状态的高性能协调服务。Exhibitor 自动配置和管理 管理节点 上的 ZooKeeper。
Mesos-DNS
Mesos-DNS 是一个 DC/OS 组件,可在群集内提供服务发现。Mesos-DNS 允许在 Mesos 上运行的应用程序和服务通过使用域名系统 (DNS) 找到彼此,与服务在整个互联网中发现彼此的方式相似。
如需更多信息,请参阅 Mesos-DNS 文档。
Marathon 概念
以下术语在谈到 Marathon 时根据上下文是正确的,但可能会被 DC/OS 中的其他抽象所隐藏。
Marathon
Marathon 是 Mesos 和 DC/OS 的容器编排引擎。Marathon 是 DC/OS 的核心组件之一,先于 DC/OS 本身,为平台带来成熟性和稳定性。
如需更多信息,请参阅 Marathon 网站。
Marathon 应用程序
Marathon 应用程序是一个长期运行的服务,可能有一个或多个实例与 Mesos 任务一对一映射。用户通过为 Marathon 提供应用定义 (JSON) 来创建应用程序。然后,Marathon 将一个或多个应用程序作为 Mesos 实例来调度,具体取决于指定了多少定义。应用程序目前支持使用
Marathon Pod
Marathon Pod 是一个长期运行的服务,可能有一个或多个实例与同地协作的 Mesos 任务一对多映射。以 JSON 文件格式为 Marathon 提供 Pod 定义,您可以创建一个 Pod。然后,Marathon 将一个或 Pod 实例作为 Mesos 任务来调度,具体取决于指定了多少定义。
- Pod 实例可能包括共享某些资源的一个或多个任务(例如 IP、端口、卷)。
- Pod 需要使用 Mesos 通用容器运行时。
Marathon 组
Marathon 组是分层目录 路径 结构中的一组服务(应用程序和/或 Pod),用于命名空间和组织。