我有一个拥有大量容器的码头工人群,但特别是:
我的问题是,当节点发生故障时,管理器会丢弃当前容器并在另一个节点中创建一个新容器。因此,每当我丢失存储在该特定容器中的持久数据时,即使使用docker卷也是如此。
所以我会在我的集群上创建四个分布式glusterfs卷,并将它们作为docker卷挂载到我的容器中。
这是解决问题的正确方法吗?
如果是,我应该为glusterfs卷使用什么类型的文件系统?
这个approch是否存在性能问题?
答案 0 :(得分:6)
GlusterFS不是解决所有容器的正确方法,因为Gluster不支持“结构化数据”,如GlusterFS Install Guide中所述:
Gluster不支持所谓的“结构化数据”,即实时SQL数据库。当然,使用Gluster来备份和恢复数据库也没问题 - 当使用至少16KB的文件大小(大约128KB左右的最佳位置)时,Gluster传统上更好。
对此的一个解决方案是数据库中数据的主从复制。 与大多数常见的DBMS一样,MySQL和mongoDB都支持这一点(如here和here所述)。
主从复制基本上是数据库的2个或更多副本的位置,一个是主服务器,其余将是从服务器。所有写操作都发生在主站上,所有读操作都发生在从站上。写入主站的任何数据都将由主站复制到从站。 一些DBMS还提供了一种方法来检查主服务器是否发生故障并选择新的主服务器(如果发生这种情况),但我不认为所有DBMS都这样做。
您也可以设置Galera Cluster,但据我所知,这只支持MySQL。
我原本以为你可以将GlusterFS用于Fluentd和Elasticsearch,但我不熟悉其中任何一个,所以我不能肯定地说。我想这将取决于他们如何存储他们收集的任何数据(如果他们收集任何数据)。