Docker生产环境中的高可用性

3
如何在生产环境中运行 Docker,并使用主动/主动或主动/备用 HA 系统?是否有指南或最佳实践?
我考虑了三种方案:
1) 使用 NFS - 为两个服务器 - 这两个服务器已使用 `docker-machine` 配置,并挂载共享的 NFS 到 `/var/lib/docker/` - 这样两个 Docker 节点应该可以看到相同的文件。(使用某种类型的 filer ,例如 vnx,efs 等等。)
2) 使用 DRBD 复制磁盘 - 并将其挂载到:`/var/lib/docker/` - 这样数据位于两个节点上,活动节点可以挂载并运行容器,在故障转移时,其他节点会挂载并启动容器。
3) 使用 DRBD - 如上所述 - 并导出 NFS 服务器,将 NFS 挂载到两个节点的`/var/lib/docker/` 上 - 这样两个节点都可以挂载和运行容器,使用 Heartbeat/Pacemaker 来传递虚拟 IP 和 DRBD 切换
在生产环境中运行 Docker 容器的最佳实践是什么?
此致敬礼

1
有趣的问题!(通过谷歌找到它)。可惜没有答案或评论。你在serverfault上试过了吗? - MariusSiuram
目前我已经做了几个独立的Docker机器,并在前面加上了负载均衡器 - 容器通过共享NFS(来自文件服务器)使用它们的非容器数据 - 但这并不完全令人满意。另外,我还没有尝试过Serverfault。 - Helmut Januschka
RedHat正在推动GlusterFS用于此目的,我还通过Google找到了基于LINBIT DRDB的DockerEngine插件解决方案...我没有个人经验,但确保在生产环境中进行Docker数据卷复制至关重要。 - Pierluigi Vernetto
1个回答

0

在容器/ Docker 的世界中,持久存储仍然是一个大象问题。

我不建议使用您提出的任何方法。唯一的例外是,如果您将某些特定数据放入共享卷(使用卷挂载)(但不是整个 /var/lib/docker )。

容器空间中有很多事情正在发生,有一个volume plugins 直接集成到 Docker 中。其中一个获得最多动力的卷插件/解决方案是 Flocker,值得研究。

一旦您将数据移出容器,设置高可用系统就变得更加容易,因为容器变得更加短暂。

然后,您可以使用类似于 Kubernetes, Docker Swarm, 或 Docker Datacenter 这样的工具来管理/监视这些容器。


实际上,我最终将变化/动态数据作为卷挂载到容器中,并使用共享的NFS来支持它们。 - Helmut Januschka
使用来管理有状态的服务/数据,使用容器来管理无状态的服务。然后使用K8s/Docker swarm/Apache mesos+marathon等工具来编排容器...这可能是更成熟的做法。 - Light.G

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接