在 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 。
接下来,将此服务 添加到您的群集:
服务已安排且 Docker 容器已下载后,postgres 将变得运行良好并且可以使用。您可以从 DC/OS CLI 验证这一点:
要停止服务:
dcos marathon app stop postgres
此命令将 计数缩减到 0 并终止所有正在运行的任务。如果再次检查任务列表,您会注意到任务仍在那里。该列表提供了有关其被放置的代理节点及其已连接的持久卷的信息,但没有 startedAt
值的信息。这允许您使用相同的元数据重新启动服务。
重启
再次启动有状态服务:
先前 postgres
任务的元数据用于启动新任务,该任务接管先前停止的服务的保留和卷。重复上一步的命令,再次检查正在运行的任务。您将看到运行的服务任务使用与前一服务任务相同的数据。
附录
有关 DC/OS 中有状态服务的更多信息,请访问。