我一直在寻找几周的时间来为我的Docker Swarm实现提供持久的分布式文件存储的合适解决方案,但无济于事。
我在群中有三个节点,多个应用程序的多个实例运行得非常好。
我现在需要在每个应用程序中保持一致的存储一致性,但我似乎无法找到解决问题的任何直接解决方案。
我想采用最不可配置的方法。
我有一个群集,有三个节点,让我们只说一个应用程序的实例。
这里最好的选择是什么: 1.我有一些东西可以在我的每个节点上复制文件 我有东西可以在我的每个容器中复制文件 3.我使用单独的文件存储来连接节点 4.我使用一个单独的文件存储,将容器连接到
无论哪种方式,我都需要某种形式的复制,以实现冗余。
欣赏是否有人可以通过一些选择让我参加正确的课程!
答案 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
。
有基于云的解决方案,您可以使用Ceph
,glusterfs
,flocker
或其他开源分布式文件系统来存储容器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