elasticsearch Elasticsearch-限制碎片的分配,elasticsearch,logstash,kibana,elasticsearch,Logstash,Kibana" /> elasticsearch Elasticsearch-限制碎片的分配,elasticsearch,logstash,kibana,elasticsearch,Logstash,Kibana" />

elasticsearch Elasticsearch-限制碎片的分配

elasticsearch Elasticsearch-限制碎片的分配,elasticsearch,logstash,kibana,elasticsearch,Logstash,Kibana,我已经阅读了许多关于放置索引/碎片的文章/论坛,但尚未找到满足我要求的解决方案 从根本上说,我想使用Logstash(+Elasticsearch/Kibana)构建一个全球分布的集群,但我想将主碎片和副本碎片的放置限制在创建它们所在的区域的本地,以减少WAN流量,但我也希望能够将所有数据作为单个数据集进行查询 例子 假设我在英国有两个ES节点(uknode1/uknode2),在美国有两个(usnode1/usnode2)。 如果Logstash向usnode1发送一些数据,我希望它将复制副本

我已经阅读了许多关于放置索引/碎片的文章/论坛,但尚未找到满足我要求的解决方案

从根本上说,我想使用Logstash(+Elasticsearch/Kibana)构建一个全球分布的集群,但我想将主碎片和副本碎片的放置限制在创建它们所在的区域的本地,以减少WAN流量,但我也希望能够将所有数据作为单个数据集进行查询

例子 假设我在英国有两个ES节点(uknode1/uknode2),在美国有两个(usnode1/usnode2)。 如果Logstash向usnode1发送一些数据,我希望它将复制副本放在usnode2上,而不是通过WAN将其发送到uknode*节点

我尝试过使用索引和路由分配设置,但无法阻止碎片在所有4个节点上分布。索引名是基于“类型”动态构建的,这一事实稍微复杂一些,但这是以后的另一个挑战。即使只有一个索引,我也无法使用它

我可以将其分为两个单独的集群,但我希望能够将所有节点作为单个数据集(通过Kibana)进行查询,因此我认为这在现阶段不是一个有效的选项,因为Kibana只能查询一个集群

这有可能实现吗

我问这是否可能的原因是,如果我在英国节点上写一个名为“myTest”的索引,在美国节点上写同一个索引,会发生什么……因为这最终是同一个索引,我不确定ES会如何处理


因此,如果有人有任何建议,或者只是说“不可能”,那将非常有帮助。

是的,但不推荐。Elasticsearch需要集群中节点之间的可靠数据连接才能正常工作,这对于地理分布的集群来说是很难保证的。更好的解决方案是有两个集群,一个在英国,另一个在美国。如果您需要同时搜索它们,可以使用

是的,但不推荐。Elasticsearch需要集群中节点之间的可靠数据连接才能正常工作,这对于地理分布的集群来说是很难保证的。更好的解决方案是有两个集群,一个在英国,另一个在美国。如果您需要同时搜索它们,可以使用

谢谢。我对此进行了更多的研究,并得到了一个解决方案,它确实使用了部落节点

对于任何不熟悉它们的人来说,这是ES 1.0.0中的一个新特性+

您要做的是将一个新的ES节点分配为部落节点,并将其配置为连接到所有其他集群,当您对其运行查询时,它将查询所有集群并从所有集群返回一组合并的结果

在我的场景中,我有两个不同的集群,每个区域一个

美国地区

cluster.name:美国地区

此区域中的两个节点称为
usnode1
usnode2

两个节点都是主/数据节点

英国地区

cluster.name:英国地区

此区域中的两个节点称为
uknode1
uknode2

两个节点都是主/数据节点

您可以创建另一个ES节点并添加一些配置以使其成为部落节点

使用如下内容编辑elasticsearch.yml:


node.data:false
node.master:false
tribe.blocks.write:false
tribe.blocks.metadata:false
tribe.t1.cluster.name:美国地区
tribe.t1.discovery.zen.ping.unicast.hosts:[“usnode1”、“usnode2”]
tribe.t2.cluster.name:英国地区
tribe.t2.discovery.zen.ping.unicast.hosts:[“uknode1”、“uknode2”]

然后,您将Kibana指向部落节点,它工作得非常出色—功能非常出色


Kibana仪表盘仍在保存,虽然我还不确定它如何选择要保存到哪个群集,但似乎解决了我的问题,因此需要更多的操作,我想我会对其进行排序。

谢谢。我对此进行了更多的研究,并得到了一个解决方案,它确实使用了部落节点

对于任何不熟悉它们的人来说,这是ES 1.0.0中的一个新特性+

您要做的是将一个新的ES节点分配为部落节点,并将其配置为连接到所有其他集群,当您对其运行查询时,它将查询所有集群并从所有集群返回一组合并的结果

在我的场景中,我有两个不同的集群,每个区域一个

美国地区

cluster.name:美国地区

此区域中的两个节点称为
usnode1
usnode2

两个节点都是主/数据节点

英国地区

cluster.name:英国地区

此区域中的两个节点称为
uknode1
uknode2

两个节点都是主/数据节点

您可以创建另一个ES节点并添加一些配置以使其成为部落节点

使用如下内容编辑elasticsearch.yml:


node.data:false
node.master:false
tribe.blocks.write:false
tribe.blocks.metadata:false
tribe.t1.cluster.name:美国地区
tribe.t1.discovery.zen.ping.unicast.hosts:[“usnode1”、“usnode2”]
tribe.t2.cluster.name:英国地区
tribe.t2.discovery.zen.ping.unicast.hosts:[“uknode1”、“uknode2”]

然后,您将Kibana指向部落节点,它工作得非常出色—功能非常出色


Kibana仪表盘仍在保存,虽然我还不确定它如何选择要保存到哪个群集,但似乎解决了我的问题,因此需要更多的操作,我想我会对其进行排序。

谢谢,部落节点是一个不错的选择。我将发布一个关于我如何使用这个伟大的新功能的问题的更详细的答案。谢谢,部落节点是一个不错的选择。我将发布一个关于我如何使用这个伟大的新fe的问题的更详细的答案