【问题标题】:Should an application stack consist of a single or multiple swarm clusters?应用程序堆栈应该由单个还是多个 Swarm 集群组成?
【发布时间】:2016-12-11 06:34:16
【问题描述】:

我正在为 Magento 应用程序堆栈构建 Docker Swarm。使用 Swarm 的主要原因是应用程序堆栈将在多节点环境中运行。

以下是应用程序堆栈将运行的服务 -

  1. 清漆(加速器)
  2. Nginx(网络服务器)
  3. Redis(缓存/会话)
  4. MySQL(存储)

上述 4 个服务中的每一个都应该属于单独的 swarm 集群(即 4 个不同的 swarm 集群)吗?或者,整个应用程序堆栈是否应该只有一个 swarm 集群以及某种机制(可能使用 Swarm 过滤器),仅将服务部署到特定的节点集?

最佳做法是什么?

【问题讨论】:

    标签: docker docker-compose magento2 docker-machine docker-swarm


    【解决方案1】:

    上述 4 个服务中的每一个都应该属于单独的 swarm 集群(即 4 个不同的 swarm 集群)吗?

    同一个 swarm 集群(让所有服务访问同一个 docker 网络),尤其是在使用 swarm 模式时。
    请参阅 Docker 船长 Luc Juggery 的“Deploy a multi services application with swarm mode”。
    他创建了一个 docker 网络和一个 kv 存储(使用 swarm 模式时不需要),并启动了 4 个服务都连接到同一个网络。

    docker-machine ssh manager1 docker network create -d overlay appnet
    docker-machine ssh manager1 docker service create --name redis --network appnet redis:3.0.7-alpine
    docker-machine ssh manager1 docker service create --name mongo --network appnet mongo:3.2
    ...
    

    但是对这些服务进行分组的“swarm mode”方式(同样,在同一个swarm集群中)是通过Distributed Application Bundle,在“My first try with DAB (aka Distributed Application Bundle)”中说明。
    它使用docker-compose bundle 将现有的 docker compose 文件转换为 dab。
    注意:捆绑包在 docker 1.12 中仍处于试验阶段。

    【讨论】:

    • 感谢分享这些链接。 Swarm 服务和捆绑包在自动化方面看起来很有前途。但是,我有一个问题——如果我的所有节点都是一个集群的一部分,我如何控制哪个服务部署到哪个节点?示例 - MySQL 服务应该只访问 DB 节点。
    • 你应该可以在环境部分定义亲和性(至少这是版本2文件中的方式,它可能已经改变了,所以请查阅关于hot wo的文档为你的配置亲和性配置文件版本)
    • @PatrickCornelissen 我在当前版本的 docker 中不再看到 affinity:container。
    猜你喜欢
    • 2014-12-03
    • 1970-01-01
    • 1970-01-01
    • 2021-03-14
    • 1970-01-01
    • 1970-01-01
    • 2022-01-17
    • 2012-06-12
    • 2015-07-26
    相关资源
    最近更新 更多