具有数据的Docker Swarm:共享卷vs集群vs单个实例

我使用Docker Swarm做了第一步,想知道如何处理使用持久化数据(如redis,elasticsearch或数据库)的服务。

我发现了很多关于如何使用docker swarmconfigurationredis / elasticsearch / database集群的教程 – 但是使用共享存储不是更容易吗? 例如,我使用Azure,因此simpy可以使用单个Azure文件存储作为redis / elasticsearch /数据库卷,并让所有节点都安装此文件存储。 这是一种可接受的方法,还是有一些显着的缺点(例如,当两个或多个数据库实例试图同时在该存储上写入时)?

是否build议在每个节点中使用这样的“数据”服务? 还是应该使用Docker Swarm来作为前端服务,并拥有一个redis / elasticsearch / database服务?

如果要使用从多个应用程序实例访问的共享文件夹(而不是应用程序本身),则需要devise一个避免数据损坏的方法(不能同时从多个应用程序写入给定的文件,称为互斥锁)

我所知道的所有数据库都不是这样devise的,所以你不能在共享存储中使用它们。

他们通常做的是连接集群中的所有数据库,同步是在软件级完成的。