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