我有一个Docker容器,它是REST API Webserver。 我想在 Docker Swarm 中使用此 Web 服务器,并且 Web 服务器实例之间不会有任何连接。其中一个 REST API 调用用于更新 Web 服务器(为其提供新数据)。 如何将此 REST API 调用广播到 Docker Swarm 中的所有实例,以确保每个实例都具有相同的数据?
问题
您定义一个有状态服务(Web服务器),该服务应以多个任务结尾进行复制。客户端(例如使用浏览器)能够使用 REST API 修改 Web 服务器的状态。由于客户端仅连接到其中一个任务,因此其他任务将不同步。现在您想知道如何使所有任务保持同步。
答
Dockerswarm 目前不是为有状态服务构建的,因此 Docker 没有提供 API 来解决您的问题(现在)。但他们意识到了这个问题,这可能就是Docker收购Infinit公司的原因,该公司建立了一个可扩展的分布式存储系统。
考虑到这一点,你可以给Infinit一个机会,并且可能依赖于集成到Docker中的东西,或者至少非常简单。
可能的进一步解决方案:
- 阻击者
- 米尼奥
- 雷西里奥
- 雷克斯射线
- vSpehre
当然,您可以使用任何其他传统的 NFS/DFS 解决方案在任务之间同步数据。甚至考虑将存储完全抽象到一个数据库容器中。
延伸阅读:
- forums.docker.com - 有状态容器