代码之家  ›  专栏  ›  技术社区  ›  Antonio Caristia

使用glusterfs在docker群中持久化数据

  •  5
  • Antonio Caristia  · 技术社区  · 7 年前

    我有一个码头工人,里面有很多集装箱,但特别是:

    • mysql
    • 数据库
    • fluentd公司
    • 弹性搜索

    我的问题是,当一个节点出现故障时,管理器会丢弃当前容器,并在另一个节点中创建一个新容器。所以每次我丢失存储在特定容器中的持久数据时,即使使用docker卷也是如此。

    因此,我将在集群上创建四个分布式glusterfs卷,并将它们作为docker卷装载到容器中。

    这是解决我问题的正确方法吗?

    如果是,我应该为我的glusterfs卷使用什么类型的文件系统?

    这种方法是否存在性能问题?

    2 回复  |  直到 7 年前
        1
  •  6
  •   benjilev08    7 年前

    GlusterFS并不是解决所有容器问题的正确方法,因为Gluster不支持“结构化数据”,如 GlusterFS Install Guide :

    Gluster不支持所谓的结构化数据,即实时SQL数据库。当然,使用Gluster来备份和恢复数据库会很好-Gluster通常在使用至少16KB的文件时会更好(最合适的地方大约是128KB左右)。

    解决此问题的一个解决方案是对数据库中的数据进行主从复制。 MySQL和mongoDB都支持这一点(如上所述 here here ),最常见的DBMS也是如此。

    主从复制基本上是指对于数据库的两个或多个副本,一个是主副本,其余是从副本。所有写操作都发生在主设备上,所有读操作都发生在从设备上。写入主设备的任何数据都将由主设备跨从设备进行复制。 一些DBMS还提供了一种方法来检查主服务器是否关闭,并在出现这种情况时选择一个新的主服务器,但我不认为所有DBMS都会这样做。

    您也可以设置 Galera Cluster ,但据我所知,这只支持MySQL。

    我本以为你可以使用GlusterFS进行Fluentd和Elasticsearch,但我对这两种都不熟悉,所以我不能肯定。我想这将取决于他们如何存储他们收集的任何数据(如果他们收集任何数据的话)。

        2
  •  1
  •   Gonzalo Matheu    7 年前

    你可能想看看 flocker (卷数据管理器),它集成了多个容器群集管理器,包括 Docker Swarm .

    您必须使用创建卷 植绒工 每个应用程序的驱动程序 tutorial :

    ...
    volumes:
      mysql:
        driver: "flocker"
        driver_opts:
          size: "10GiB"
          profile: "bronze"
     ...