我刚刚学习如何使用 CoreOS,就遇到了第一个真正困扰我的问题:当使用 fleetctl 启动和管理单元时,我发现当选择运行该单元的机器重新启动或由于其他原因无法访问集群时,该单元会自动移动到另一台机器。现在想象一下这样一种情况,当您有一个运行 Docker 容器的单元时,该容器只能访问特定机器上的某个目录(通过 Docker 卷)。
如果运行此容器的单元被移动到另一台机器会发生什么?我猜想该单元将失败,因为应该作为 Docker 卷安装的目录在新机器上不存在。这真的会发生吗?我该如何规避这个问题?通常,在自动迁移容器的情况下,我如何才能保留 Docker 容器使用的工作数据?
答案1
我想现在你有责任确保数据可用。你可能需要检查https://github.com/ClusterHQ/flocker它专门用于随 docker 容器一起传输数据。我认为它依赖于 ZFS 功能,这可能会排除它在 CoreOS 上的使用。我能想到的唯一替代方案是使用安装在 CoreOS 上的高可用性外部卷。
答案2
您可以考虑在 CoreOS 集群上运行一些分布式文件系统。这样,无论您的数据库服务容器最终位于哪台机器上,它始终能够使用从 DFS 挂载的数据库。