在 DC/OS 上运行有状态服务

教程 - 在 DC/OS 上运行有状态服务

本教程向您展示如何在 DC/OS 上安装和运行有状态服务。有状态服务对持久数据起作用。每次启动时,简单状态服务在空沙盒中运行。相反,状态服务使用驻留在群集中代理节点上的持久卷,直到被明确销毁。

这些持久卷安装在任务的 Mesos 沙盒中,因此可以连续访问服务。DC/OS 为每个任务创建持久卷,并且动态保留运行任务所需的所有资源。这样,DC/OS 可确保重新启动服务,并在需要时重用其数据。这对数据库、缓存和其他数据感知服务非常有用。

如果您打算运行的服务不会自行复制数,则需要处理备份或采用合适的复制策略。

有状态服务利用两个基础的 Mesos 功能:

时间估计

大约 20 分钟。

本教程适用于希望在 DC/OS 上运行有状态服务的开发人员。

注意:DC/OS 持久卷功能仍处于测试阶段,尚未准备好进行生产使用,因为没有数据复制策略来防止数据丢失。

  • 已安装 DC/OS CLI

  • 群集大小:至少一个代理节点,具有 1 个 CPU、1 GB RAM 和 1000 MB 可用磁盘空间。

安装有状态服务 (PostgreSQL)

这是启动官方 PostgreSQL Docker 镜像的 DC/OS 服务定义 JSON:

接下来,将此 添加到您的群集:

服务已安排且 Docker 容器已下载后,postgres 将变得健康并且可以使用。您可以从 DC/OS CLI 验证这一点:

要停止服务:

  1. dcos marathon app stop postgres

此命令将 计数缩减到 0 并终止所有正在运行的任务。如果再次检查任务列表,您会注意到任务仍在那里。该列表提供了有关其被放置的代理节点及其已连接的持久卷的信息,但没有 startedAt 值的信息。这允许您使用相同的元数据重新启动服务。

重启

再次启动有状态服务:

    先前 postgres 任务的元数据用于启动新任务,该任务接管先前停止的服务的保留和卷。重复上一步的命令,再次检查正在运行的任务。您将看到运行的服务任务使用与前一服务任务相同的数据。

    附录

    有关 DC/OS 中有状态服务的更多信息,请访问文档的存储部分.