为动态 Elasticsearch 集群持久化节点数据的策略
Strategy to persist the node's data for dynamic Elasticsearch clusters
很抱歉,这可能是一个广泛的问题,但我还没有找到解决这个问题的方法。
我尝试 运行 Mesos through Marathon with Docker containers. Therefore, I built a Docker image 上的 Elasticsearch 集群,它可以在 Marathon 上启动并通过前端或 API 动态扩展。
这非常适合测试设置,但问题仍然是如何保留数据,以便在集群缩小(我知道这也与索引配置本身有关)或停止时,我想重新启动稍后(或放大)使用相同的数据。
问题是 Marathon 决定了节点 运行 的位置(在哪个 Mesos Slave 上),所以从我的角度来看,如果所有数据都可用于 "new" 节点,则无法预测当我尝试通过 Docker 卷将数据保存到 Docker 主机时重新启动。
我唯一想到的是:
使用像 HDFS 或 NFS 这样的分布式文件系统,在 Docker 主机或 Docker 图像本身上安装卷。尽管如此,如果 "old" 集群有例如 8 个节点,而新集群只有 4 个节点,那将留下如何在新集群启动期间加载所有数据的问题。
使用Elasticsearch的Snapshot API保存到网络某处的公共驱动器。我认为这会带来性能损失...
还有其他方法可以解决这个问题吗?有什么建议吗?不幸的是,我没有找到关于此类主题的好资源。非常感谢。
Elasticsearch 和 NFS 并不是最好的伙伴 ;-)。你不想 运行 你的集群在 NFS 上,它太慢了,当存储速度更好时,Elasticsearch 工作得更好。如果你在这个等式中引入网络,你就会遇到麻烦。我不知道 Docker 或 Mesos。但我肯定不建议使用 NFS。使用 snapshot/restore.
第一个快照需要一些时间,但其余快照应该花费更少 space 和更少的时间。另外,请注意 "incremental" 表示文件级别的增量,而不是文档级别。
快照本身需要所有具有要快照的索引的主节点的节点。这些节点都需要访问公共位置(存储库),以便它们可以写入。这种对同一位置的共同访问通常不是那么明显,这就是我提到它的原因。
运行 Mesos 上的 Elasticsearch 的最佳方式是使用专门的 Mesos 框架。第一次努力是这个领域是https://github.com/mesosphere/elasticsearch-mesos. There is a more recent project, which is, AFAIK, currently under development: https://github.com/mesos/elasticsearch。我不知道状态如何,但你可能想试一试。
很抱歉,这可能是一个广泛的问题,但我还没有找到解决这个问题的方法。
我尝试 运行 Mesos through Marathon with Docker containers. Therefore, I built a Docker image 上的 Elasticsearch 集群,它可以在 Marathon 上启动并通过前端或 API 动态扩展。
这非常适合测试设置,但问题仍然是如何保留数据,以便在集群缩小(我知道这也与索引配置本身有关)或停止时,我想重新启动稍后(或放大)使用相同的数据。
问题是 Marathon 决定了节点 运行 的位置(在哪个 Mesos Slave 上),所以从我的角度来看,如果所有数据都可用于 "new" 节点,则无法预测当我尝试通过 Docker 卷将数据保存到 Docker 主机时重新启动。
我唯一想到的是:
使用像 HDFS 或 NFS 这样的分布式文件系统,在 Docker 主机或 Docker 图像本身上安装卷。尽管如此,如果 "old" 集群有例如 8 个节点,而新集群只有 4 个节点,那将留下如何在新集群启动期间加载所有数据的问题。
使用Elasticsearch的Snapshot API保存到网络某处的公共驱动器。我认为这会带来性能损失...
还有其他方法可以解决这个问题吗?有什么建议吗?不幸的是,我没有找到关于此类主题的好资源。非常感谢。
Elasticsearch 和 NFS 并不是最好的伙伴 ;-)。你不想 运行 你的集群在 NFS 上,它太慢了,当存储速度更好时,Elasticsearch 工作得更好。如果你在这个等式中引入网络,你就会遇到麻烦。我不知道 Docker 或 Mesos。但我肯定不建议使用 NFS。使用 snapshot/restore.
第一个快照需要一些时间,但其余快照应该花费更少 space 和更少的时间。另外,请注意 "incremental" 表示文件级别的增量,而不是文档级别。
快照本身需要所有具有要快照的索引的主节点的节点。这些节点都需要访问公共位置(存储库),以便它们可以写入。这种对同一位置的共同访问通常不是那么明显,这就是我提到它的原因。
运行 Mesos 上的 Elasticsearch 的最佳方式是使用专门的 Mesos 框架。第一次努力是这个领域是https://github.com/mesosphere/elasticsearch-mesos. There is a more recent project, which is, AFAIK, currently under development: https://github.com/mesos/elasticsearch。我不知道状态如何,但你可能想试一试。