在 DC/OS 上运行有状态服务
教程 - 在 DC/OS 上运行有状态服务
本教程向您展示如何在 DC/OS 上安装和运行有状态服务。有状态服务对持久数据起作用。每次启动时,简单无状态服务在空沙盒中运行。相反,有状态服务使用驻留在集群中代理节点上的持久卷,直到被明确销毁。
这些持久卷安装在任务的 Mesos 沙盒中,因此可以连续被服务访问。DC/OS 为每个任务创建持久卷,并且动态保留运行任务所需的所有资源。这样,DC/OS 可确保重新启动服务,并在需要时重用其数据。这对数据库、缓存和其他数据感知服务非常有用。
如果您打算运行的服务不会自行复制数据,则需要处理备份或采用合适的复制策略。
有状态服务利用两个基础的 Mesos 功能:
- 动态保留,含保留标签
时间估计:
大约 20 分钟。
本教程适用于希望在 DC/OS 上运行有状态服务的开发人员。**注意:**DC/OS 持久卷功能仍处于测试阶段,在没有数据复制策略来防止数据丢失的情况下尚未准备好进行生产使用。
群集大小:至少一个代理节点,具有 1 个 CPU、1 GB RAM 和 1000 MB 可用磁盘空间。
安装有状态服务 (PostgreSQL)
这是启动官方 PostgreSQL Docker 镜像的 DC/OS 服务定义 JSON 。
注意 字段,它表示 postgres
用于其数据的持久卷。即使任务终止并重新启动,它也会恢复该卷,数据也不会丢失。
服务已安排且 Docker 容器已下载后,postgres 将变得运行良好并且可以使用。您可以从 DC/OS CLI 验证这一点:
要停止服务:
dcos marathon app stop postgres
此命令将 计数缩减到 0 并终止所有正在运行的任务。如果再次检查任务列表,您会注意到任务仍在那里。该列表提供了有关其被放置的代理节点及其已连接的持久卷的信息,但没有 startedAt
值的信息。这允许您使用相同的元数据重新启动服务。
重启
再次启动有状态服务:
先前 postgres
任务的元数据用于启动新任务,该任务接管先前停止的服务的预约和卷。重复上一步的命令,再次检查正在运行的任务。您将看到运行的服务任务使用与前一服务任务相同的数据。
若要在安装有状态服务之前恢复集群状态,请删除该服务: