【问题标题】:How to setup Elasticsearch client nodes?如何设置 Elasticsearch 客户端节点?
【发布时间】:2016-02-20 17:52:31
【问题描述】:

我有几个关于客户端节点的 Elasticsearch 问题:

  1. 我能说:任何节点,只要他们开放了HTTP端口,我都可以把它们当作“客户端”节点,因为我们可以通过这个节点进行搜索/索引。

  2. 其实我们在cluster=falsedata=false的时候把节点当作客户端节点,如果我设置了10个客户端节点,是否需要在客户端路由,我的意思是如果我指定 clientOne:9200 在我的代码中作为 ES 门户,然后 clientOne 会将其他 HTTP 请求转发到其他客户端节点,否则 clientOne 将承受非常高的压力。即它们是否在客户端节点之间相互通信?

  3. 在ES集群中指定客户端节点时,是否应该关闭其他节点的HTTP端口?因为我们只能查询客户端节点。

  4. 你认为有必要在同一台机器上设置数据节点和客户端节点,还是只设置数据节点作为客户端节点,反正它在同一台机器上?

    李>
  5. 如果 ES 集群被大量/频繁地索引而搜索较少,那么我不必设置客户端节点,因为客户端节点适合收集数据,对吧?

  6. 对于一般搜索/索引目的,我应该使用 http 端口还是 tcp 端口,请问从客户端的角度来看有什么区别?

【问题讨论】:

  • 这不是太难,只是一个问题塞进了太多问题,这降低了它的整体质量,因为它会使寻找特定主题的人难以找到正确的答案他们的问题。一个问题应该只是一个问题,六个问题,应该是六个不同的问题。
  • 打破这个意味着如果有人知道答案,他们会发布它。就像现在一样,人们可能知道一两个问题的答案,但不知道其余问题的答案,所以他们跳过了它。此外,您的措辞有点难以解析,多描述背景可能会有所帮助。

标签: elasticsearch


【解决方案1】:
  1. 是的,您可以通过 http 向任何开放了 9200 端口的节点发送查询。

  2. 使用 node.data: false 和 node.master: false,你会得到一个“client node”。这些对于从数据节点卸载索引和搜索流量很有用。如果您有 10 个,则需要在它们前面放置一个负载均衡器。

  3. 关闭数据节点的 http 端口 (http.enabled: false) 会阻止它们为客户端请求提供服务(可能很好),但它也会阻止您直接卷曲它们以获取统计信息等。

  4. 客户端节点很有用(请参阅 #2),因此我不会将流量直接路由到您的数据节点。您是否在同一块硬件上同时运行客户端和数据节点将取决于该机器的配置(您是否有足够的 RAM 等)。

  5. 客户端节点对于索引也很有用,因为它们知道哪个数据节点应该接收数据进行存储。如果您将索引请求发送到随机数据节点,则它必须将该请求重定向到另一个节点的可能性很高。如果您可以创建客户端节点,那将是浪费时间和资源。

  6. 让您的客户端加入集群可能使他们能够访问有关集群的更多信息,但使用 http 会为他们提供更通用的“黑匣子”界面。使用 http,您也不必让您的客户端与您的 ES 节点保持相同的版本。

希望对您有所帮助。

【讨论】:

  • 好答案!!!我还有两个问题: 对于答案(2):客户端节点不会相互转发请求以进行负载平衡,所以我必须在它们前面放置一个负载平衡器,对吧?对于答案(5):如果我们只是默认 master=true 和 data=true,那么集群中没有任何客户端节点,因此,正如您提到的那样,几率会很高,对吧?非常感谢!
  • 答案 2 已经说过,“你会想在他们面前放一个负载均衡器”。对于答案 5,如果您有 5 个数据节点并将数据直接随机发送给它们,那么您将在 80% 的时间中访问错误的服务器(并且有移动数据的开销)。使用客户端节点可以防止这种情况发生。
  • 非常感谢!对于答案 5,我的意思是默认情况下 ES 集群将每个节点设置为 master=true 和 data=true,因此,默认情况下没有客户端节点。所以默认情况下集群没有优化,我们必须指定客户端节点才能更好地转发,对吧?
猜你喜欢
  • 2015-09-25
  • 1970-01-01
  • 2017-02-12
  • 2017-08-31
  • 2012-11-03
  • 1970-01-01
  • 1970-01-01
  • 2019-02-24
  • 2018-04-27
相关资源
最近更新 更多