私人dockerregistry和高可用性

我们目前正在一个托pipe我们所有图片的服务器上运行一个私人registry。 如果服务器崩溃,我们基本上都会丢失所有的图片。 我们希望find一种方法来在我们的图像上实现高可用性。 我看到一个简单的解决scheme是每个服务器都有一个registry实例。 负载平衡器会将stream量redirect(循环)到可用的registry实例。 registry实例将共享相同的networking数据驱动器(NFS)来存储图像。

你看到这个解决scheme的任何问题吗? 即:如果一个用户在一个实例上推送一个映像,而另一个推送另一个(负载均衡器轮询决策),它是否会在NFS上创build任何locking文件?

感谢您的反馈意见

在docker-registry网站上有一些这方面的信息 。 简而言之,它似乎旨在支持多个registry与同一个数据存储库进行交谈,因此您不应该看到任何问题。

如果可靠性对您来说是一个真正的问题,那么查看其中一个商业产品(例如企业集线器或CoreOS企业registry)可能是明智之举。 (虽然这些似乎强调安全和访问控制,而不是医pipe局)。

按照此处所述,可以使用S3备份registry。 值得在容器中运行registry,以便在发生灾难性主机/数据中心故障时立即启动另一个容器。 registry也支持GCloud和OpenStack。

如果您担心数据丢失,请为您的持久性添加冗余,并确保定期备份。 你也应该确保你的构build是幂等的,所以你可以重build图片,如果绝对必要的。