使用glusterfs在docker swarm中保存数据

问题描述 投票:5回答:2

我有一个装有很多容器的码头群,但特别是:

  • MySQL的
  • MongoDB的
  • fluentd
  • elasticsearch

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

所以我会在我的集群上创建四个分布式glusterfs卷,并将它们作为docker卷挂载到我的容器中。

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

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

这种方法存在性能问题吗?

docker docker-swarm glusterfs
2个回答
1
投票

您可能需要查看flocker(卷数据管理器),它集成了多个容器集群管理器,包括Docker Swarm

您必须使用flocker驱动程序为每个应用程序创建一个卷,如tutorial所指示:

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

6
投票

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

Gluster不支持所谓的“结构化数据”,即实时SQL数据库。当然,使用Gluster来备份和恢复数据库会很好 - 当使用至少16KB的文件大小(大约128KB左右的最佳位置)时,Gluster传统上更好。

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

主从复制基本上是数据库的2个或更多副本的位置,一个将是主服务器,其余将是从服务器。所有写操作都发生在主站上,所有读操作都发生在从站上。写入主站的任何数据都将由主站复制到从站。如果发生这种情况,一些DBMS还提供了检查主服务器是否关闭并选择新主服务器的方法,但我不认为所有DBMS都这样做。

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

我本以为你可以将GlusterFS用于Fluentd和Elasticsearch,但我不熟悉其中任何一个,所以我不能肯定。我想这将取决于他们如何存储他们收集的任何数据(如果他们收集任何数据)。

© www.soinside.com 2019 - 2024. All rights reserved.