坚持dynamicElasticsearch集群节点数据的策略

对不起,这可能是一个广泛的问题,但我没有find解决schemeforms这个问题呢。

我尝试通过使用Docker容器的Marathon在Mesos上运行Elasticsearch集群。 因此,我构build了一个可以在Marathon上启动的Docker镜像 ,并通过前端或APIdynamic扩展。

这对testing设置非常有用,但问题仍然是如何保持数据,以便如果集群缩小(我知道这也是关于索引configuration本身)或停止,并且希望稍后重新启动(或者按比例放大)与相同的数据。

问题是,马拉松决定运行节点的位置(在哪个Mesos Slave上),所以从我的angular度来看,如果所有的数据在重新启动的时候都可用于“新”节点, Docker主机通过Docker卷。

我唯一想到的是:

  • 使用像HDFS或NFS这样的分布式文件系统,在Docker主机或Docker映像上装载已安装的卷。 但是,如果“旧”群集有8个节点,新群集只有4个,那么在新的群集启动过程中,如何加载所有数据就成了问题。

  • 使用Elasticsearch的Snapshot API将其保存到networking中的某个公共驱动器。 我认为这将有性能惩罚…

有没有其他办法来解决这个问题? 有什么build议吗? 不幸的是,我没有find关于这种话题的好资源。 非常感谢。

Elasticsearch和NFS不是最好的朋友;-)。 你不想在NFS上运行你的集群,速度太慢,而Elasticsearch在存储速度更好的时候效果会更好。 如果你在这个方程中引入networking,你将会遇到麻烦。 我不知道Docker或Mesos。 但是肯定我推荐反对NFS。 使用快照/恢复。

第一个快照需要一些时间,但其余的快照应该占用更less的空间和更less的时间。 另外请注意,“增量”是指在文件级别增量,而不是文档级别。

快照本身需要所有具有想要快照的索引的初选的节点。 而且这些节点都需要访问公共位置(存储库),以便他们可以写入。 对同一地点的这种普通访问通常不是那么明显,这就是为什么我提到它。

在Mesos上运行Elasticsearch的最好方法是使用专门的Mesos框架。 第一个努力是这个领域是https://github.com/mesosphere/elasticsearch-mesos 。 还有一个更新的项目,即AFAIK,目前正在开发中: https : //github.com/mesos/elasticsearch 。 我不知道这是什么状态,但是你可能想尝试一下。