将 ElasticSearch 集群迁移到新硬件的最佳方法是什么?
What is the best way to migrate an ElasticSearch cluster to new hardware?
我在 6 个动力不足的节点上有一个弹性搜索集群 运行。我想将它迁移到一组新的 4 个非常重型节点。我试图找出这样做的最佳方法。由于我要从 6 个节点变为 4 个节点,我不能只将数据文件从旧集群复制到新集群。看起来快照和恢复功能是可行的方法,但我找不到在一组硬件上创建快照并将其恢复到另一组硬件的记录方法。有人用 ElasticSearch 做过这种硬件升级吗?
我为此任务采用的方法如下:使用 Java API 编写一个(或多个)索引的自定义复制功能,从一个 elasticsearch 集群到另一个集群, 批量 API 和滚动 API.
更准确地说,我使用滚动 API 从旧索引中获取数据并使用批量 API 将其推送到新索引。
我也将上述功能用于 backups/emergency 个索引副本。
要使用 snapshot/restore,您必须在所有服务器(即 NFS)上有一个共同的安装点。您必须在两个集群上添加存储库,然后在一个集群上创建快照并在另一个集群上恢复。确切的命令在这里有很好的记录:http://www.elastic.co/guide/en/elasticsearch/reference/current/modules-snapshots.html
另一种迁移方式是最初将集群加入到一起,然后等待一切变为绿色。然后完成旧的慢速节点退役的过程:How to remove node from elasticsearch cluster on runtime without down time
最后一种迁移方式是@Zouzias推荐的方式,就是用程序将数据从一个集群复制到另一个集群。这里有一个基于 node.js 的开源项目:https://github.com/mallocator/Elasticsearch-Exporter 无需编写代码即可满足您的需求。
另一种迁移方法是使用 5.x 中可用的 API -- 来自远程的 reindex from remote:
POST _reindex
{
"source": {
"remote": {
"host": "http://otherhost:9200",
"username": "user",
"password": "pass"
},
"index": "source"
},
"dest": {
"index": "dest"
}
}
但请务必阅读 link 提供的文档,因为您必须在 elasticsearch.yml 文件中设置 reindex.remote.whitelist
。
我在 6 个动力不足的节点上有一个弹性搜索集群 运行。我想将它迁移到一组新的 4 个非常重型节点。我试图找出这样做的最佳方法。由于我要从 6 个节点变为 4 个节点,我不能只将数据文件从旧集群复制到新集群。看起来快照和恢复功能是可行的方法,但我找不到在一组硬件上创建快照并将其恢复到另一组硬件的记录方法。有人用 ElasticSearch 做过这种硬件升级吗?
我为此任务采用的方法如下:使用 Java API 编写一个(或多个)索引的自定义复制功能,从一个 elasticsearch 集群到另一个集群, 批量 API 和滚动 API.
更准确地说,我使用滚动 API 从旧索引中获取数据并使用批量 API 将其推送到新索引。
我也将上述功能用于 backups/emergency 个索引副本。
要使用 snapshot/restore,您必须在所有服务器(即 NFS)上有一个共同的安装点。您必须在两个集群上添加存储库,然后在一个集群上创建快照并在另一个集群上恢复。确切的命令在这里有很好的记录:http://www.elastic.co/guide/en/elasticsearch/reference/current/modules-snapshots.html
另一种迁移方式是最初将集群加入到一起,然后等待一切变为绿色。然后完成旧的慢速节点退役的过程:How to remove node from elasticsearch cluster on runtime without down time
最后一种迁移方式是@Zouzias推荐的方式,就是用程序将数据从一个集群复制到另一个集群。这里有一个基于 node.js 的开源项目:https://github.com/mallocator/Elasticsearch-Exporter 无需编写代码即可满足您的需求。
另一种迁移方法是使用 5.x 中可用的 API -- 来自远程的 reindex from remote:
POST _reindex
{
"source": {
"remote": {
"host": "http://otherhost:9200",
"username": "user",
"password": "pass"
},
"index": "source"
},
"dest": {
"index": "dest"
}
}
但请务必阅读 link 提供的文档,因为您必须在 elasticsearch.yml 文件中设置 reindex.remote.whitelist
。