database - 带有数据 : shared volume vs clustering vs single instance 的 Docker Swarm

标签 database elasticsearch docker redis docker-swarm

我迈出了使用 Docker Swarm 的第一步,想知道如何处理使用持久性数据的服务,如 redis、elasticsearch 或数据库。

我找到了很多关于如何使用 docker swarm 配置 redis/elasticsearch/database 集群的教程——但是使用共享存储不是更容易吗?例如,我使用 Azure,所以我可以简单地将单个 Azure 文件存储用作 redis/elasticsearch/数据库卷,并让我的所有节点安装这个文件存储。 这是一种可接受的方法还是存在一些明显的缺点(例如,当两个或多个数据库实例尝试同时写入该存储时)?

是否建议在每个 节点中使用此类“数据”服务?或者我应该只将 Docker Swarm 用于前端服务并拥有一个 redis/elasticsearch/database 服务吗?

最佳答案

如果您想使用从多个应用程序实例访问的共享文件夹,那么应用程序本身需要设计成一种避免数据损坏的方式(没有多个应用程序同时写入给定文件。所谓的互斥锁)

我所知道的所有数据库都不是这样设计的,因此您不能将它们与共享存储一起使用。

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

关于database - 带有数据 : shared volume vs clustering vs single instance 的 Docker Swarm,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40417671/

相关文章:

elasticsearch - ElasticSearch中唯一嵌套文档的数量

sql - 聚合合并到Elasticsearch的匹配中

elasticsearch - 在 elasticsearch 中返回唯一结果

php - 登录页面 - 检测用户类型并引导他到他们的主页

database - 是否有任何支持多线程的本地数据库?

C# 连接字符串到数据库。最佳实践?

java - Maven:构建子项目的 Docker 镜像

Docker Compose 卡住下载或拉取 fs 层

c# - 在 Docker 中使用 asp.net core 2 模拟 Windows 用户

c - Sqlite 给出相同的输出并且不考虑 where 子句顺序