【问题标题】:Switching between the nodes in ElasticSearch using JEST client使用 JEST 客户端在 ElasticSearch 中的节点之间切换
【发布时间】:2014-08-09 16:46:48
【问题描述】:

我的 ElasticSearch 集群中有 3 个节点。 例如。 10.10.0.1、10.10.0.2、10.10.0.3

现在我正在尝试使用 Jest Client API 连接到集群并提供上述节点之一的 IP (10.10.0.1)。现在如果 Node (10.10.0.1) 宕机了,那是否意味着我无法访问集群?

如果我们有多个节点并且我们尝试使用一个IP地址从代码连接到集群,如何处理这种问题?

或者

我应该去创建其他连接并提供其他 IP 地址吗?我觉得这是一种非常粗略的做法,因为如果我们有 100 个节点怎么办,在这种情况下,我们最终会尝试一个接一个地连接到 100 个节点。

【问题讨论】:

    标签: java elasticsearch load-balancing elasticsearch-jest


    【解决方案1】:

    我会看看创建所谓的客户端节点。客户端节点将node.data 设置为false,因此虽然它是集群的完整成员,但它不会在本地存储任何数据。这既减轻了处理文档索引的节点的查询处理负担,又提供了负载平衡方法的开端。

    考虑到 Elasticsearch 的大多数软件故障场景都围绕着炸毁 JVM 堆,而当您只进行查询处理而不维护索引时,这种可能性要小得多,因此无数据节点的故障几率要低得多。此外,这种方法可以扩展到一种本地负载均衡器。

    如果您要在应用服务器上运行客户端节点 elasticsearch 实例,您可以有效地提供本地负载平衡。该节点会将查询发送到集群中需要包含在特定查询中的所有其他节点。由于该软件与您的应用程序软件在同一台服务器上运行,因此您可以在您的应用程序服务器仍在运行时消除您正在连接的节点的故障模式。

    这里详细讨论了这种架构方法:

    https://blog.liip.ch/archive/2013/07/19/on-elasticsearch-performance.html

    还有一点在客户端节点上:

    http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/modules-node.html

    或者,您可以使用不使用 REST 接口的本机 Java Elasticsearch api - 这允许您的 Java 应用程序作为集群的成员节点进行连接,在这种情况下,它会知道所有其他节点,并将能够将您的查询路由到正确的节点。我会看看客户端节点和传输节点的方法:

    http://www.elasticsearch.org/guide/en/elasticsearch/client/java-api/current/client.html#node-client

    http://www.elasticsearch.org/guide/en/elasticsearch/client/java-api/current/client.html#transport-client

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-02-12
      • 2016-02-20
      • 2021-03-25
      • 1970-01-01
      • 2016-03-01
      • 1970-01-01
      • 2022-01-23
      相关资源
      最近更新 更多