【问题标题】:Docker Swarm shared volumesDocker Swarm 共享卷
【发布时间】:2017-02-26 20:07:40
【问题描述】:

目前我正在构建一个 Docker Swarm 集群。它由3名经理和3名工人组成。我将在此设置上部署的应用程序包含一个 laravel 后端,该后端需要其代码在多个容器中以实现可扩展性。我已经尝试过使用 Ceph 后端的 GlusterFS 卷和 rex-ray 作为我的卷的共享存储。 GlusterFS 不可靠,Ceph 对我来说有点矫枉过正,太难了:)

当前设置如下所示。我在 docker 之外有一个 Percona 集群,我在这些服务器上运行 GlusterFS 并将它们简单地挂载到 Docker Worker 中。

                                                Docker Managers
+-------------------------------------------------------------+
|                                                             |
|   +---------+   +---------+   +---------+    +---------+    |
|   |         |   |         |   |         |    |         |    |
|   | HAproxy +---+ HAproxy +---+ HAproxy +----+   SSL   |    |
|   |         |   |         |   |         |    | Manager |    |
|   +----+----+   +----+----+   +----+----+    +---------+    |
|        |             |             |                        |
+-------------------------------------------------------------+
         |             |             |
         |             |             |           Docker Workers
+-------------------------------------------------------------+
|        |             |             |                        |
|   +----+-------------+-------------+--------------------+   |
|   |                                                     |   |
|   |                      Applicaties                    |   |
|   |                                                     |   |
|   +---+--------------+---------------+--------------+---+   |
|       |              |               |              |       |
|       |              |               |              |       |
|   +---+----+     +---+----+     +----+---+     +----+---+   |
|   | Mysql  |     | Mysql  |     | Mysql  |     | Mysql  |   |
|   |   LB   +-----+   LB   +-----+   LB   +-----+   LB   |   |
|   +---+----+     +----+---+     +----+---+     +----+---+   |
|       |               |              |              |       |
|       +---------------+-------+------+--------------+       |
|       |                       |                     |       |
+-------------------------------------------------------------+
        |                       |                     |
        |                       |                     |
        |                       |                     |
+-------+--------+     +--------+-------+    +--------+-------+
|                |     |                |    |                |
|    MySQL01     |     |    MySQL02     |    |    MySQL03     |
|    Gluster01   +-----+    Gluster02   +----+    Gluster03   |
|                |     |                |    |                |
+----------------+     +----------------+    +----------------+

然后我像这样将它们安装到 php 容器中:

--mount type=bind,source=/mnt/client-data,target=/var/www/html/

这可行,但速度很慢。页面加载时间约为 10 秒,当文件未挂载(它们存在于容器中)时,页面加载时间约为 2-3 秒。

我来到了 Flocker,这看起来很有趣,但我认为植绒卷只能安装在一个容器上。这是真的吗?

我现在正在尝试的另一个解决方案是,每次创建新容器时都会从 git 中提取代码。这实际上是一个很好的解决方案,但拉取代码并运行 composer 大约需要 5 分钟,当我推送更新时,我需要重新启动所有容器。

在多个主机上的不同容器之间共享我的代码的最佳解决方案是什么? (甚至是数据中心)目前我可以访问许多不同的存储后端(Ceph、NFS、gluster)并且创建一个新的后端没有问题。

编辑:为什么在这种情况下 gluster 不可靠?我可能在上面说错了......当在 Gluster 上使用 docker 卷时,Gluster 不可靠,带有卷驱动程序插件。在创建服务时,卷在大多数情况下都能很好地挂载,但如果集群中发生重新调度,卷很少会再次挂载。我稍后会对此进行调查以确定出了什么问题,但我目前没有太多空闲时间。 Gluster 实际上是固体。只是在这种情况下不是。

【问题讨论】:

  • 让读者了解 GlusterFS 的不可靠之处会很有趣。
  • 我将在今天晚些时候解释为什么它在这种情况下不可靠,首先我必须完成我的工作:) 但它与在 Gluster 中创建 docker 卷有关,失败率约为 50%时间。

标签: docker docker-swarm docker-swarm-mode


【解决方案1】:

我最终做的是使用 CephFS 并将其安装在 docker 主机上。写入速度还可以,与 glusterfs 相比甚至可能非常出色。 CephFS 的读取速度非常快,GlusterFS 也是如此。

此设置适合我的需要,但我无法跨主机使用共享 docker 卷。我必须在 docker 容器中绑定挂载的文件系统。虽然这不是世界末日,但我仍在寻找一种方便快捷的方式来让我的卷跨集群中的所有主机。

目前我正在尝试为 CephFS 构建一个 Docker 卷插件来满足我的要求。如果有人感兴趣,我会保持更新。

【讨论】:

    【解决方案2】:

    请注意,我没有尝试过以下操作。

    由于您的代码大部分是只读的,在我看来,您“只是”需要一个文件系统缓存。例如运行在 NFS 之上的 CacheFS。

    既然 GlusterFS 可以作为 NFS 挂载,您应该可以将两者结合起来。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-01-03
      • 1970-01-01
      • 1970-01-01
      • 2015-08-24
      • 2017-12-29
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多