Docker Swarm的文件存储

时间:2016-10-30 12:52:32

标签: docker storage docker-swarm

我一直在寻找几周的时间来为我的Docker Swarm实现提供持久的分布式文件存储的合适解决方案,但无济于事。

我在群中有三个节点,多个应用程序的多个实例运行得非常好。

我现在需要在每个应用程序中保持一致的存储一致性,但我似乎无法找到解决问题的任何直接解决方案。

我想采用最不可配置的方法。

我有一个群集,有三个节点,让我们只说一个应用程序的实例。

这里最好的选择是什么: 1.我有一些东西可以在我的每个节点上复制文件 我有东西可以在我的每个容器中复制文件 3.我使用单独的文件存储来连接节点 4.我使用一个单独的文件存储,将容器连接到

无论哪种方式,我都需要某种形式的复制,以实现冗余。

欣赏是否有人可以通过一些选择让我参加正确的课程!

2 个答案:

答案 0 :(得分:4)

performance/storage space明智,复制不是答案,你需要一个shared storage的解决方案。就像我们在Server Virtualization中使用的那样。如果你有现金,那里有很多SAN Storage品牌。

现在,如果您有virtualization infrastructure就像我一样(在我的情况下为vmware vsphere),您可以使用SAN Datastores通过docker-volume vsphere driver存储卷。您将在vmware datastores上创建docker卷,并在docker swarm之间共享它们。因此,如果失败,docker将在群集中的另一个节点上启动容器(其卷上的持久数据)。

其他供应商(虚拟化/存储)也有类似的drivers

有基于云的解决方案,您可以使用Cephglusterfsflocker或其他开源分布式文件系统来存储容器persistent data

答案 1 :(得分:1)

Docker的路线图是实现分布式卷驱动程序,最有希望的是来自 infinity 。它们将支持所有群集节点的分发,并且从我看到的设计承诺非常好的性能。

这可能需要至少再过6个月才能成熟,直到您需要使用连接到所有节点的一些共享存储。 (最容易的是 NFS

因此,我们的想法是在所有节点上安装共享文件夹并使用

public function order()
{
    return $this->belongsTo(Order::class);
}

如果您运行容器,或者部署服务

docker run -v /nfsShare:/container/folder

如果docker主机在alpine上运行,您可以使用我创建的图像来自动执行该过程。

以下是解释如何使用它的链接: https://www.vip-consult.solutions/post/persistent-storage-docker-swarm-nfs#content