【问题标题】:is it necessary to use a load balancer for an Elasticsearch cluster running on Amazon EC2?是否有必要为在 Amazon EC2 上运行的 Elasticsearch 集群使用负载均衡器?
【发布时间】:2017-03-18 17:06:36
【问题描述】:

我对我的 elasticsearch 集群如何处理流量感到有些困惑。我在一个集群中连接了几个 EC2 实例。现在,在我的应用程序中,我将其设置为通过其中一个实例的 ip 连接到集群。我知道该节点随后可以与集群中的所有其他节点连接并适当转发,但是该特定实例是否不会因为所有流量最初都指向该节点而变得负担过重?我是否必须使用负载均衡器,然后将应用程序指向它,还是我没有正确理解这一点?

谢谢! :)

【问题讨论】:

    标签: elasticsearch amazon-ec2


    【解决方案1】:

    我认为你的问题和想法是合法的。然而,根据我的经验,客户端应该知道多个实例并在不需要负载均衡器的情况下分配负载。

    请参阅此 ruby​​ 客户端配置示例:Multiple nodes and retry on falure

    【讨论】:

    • 这是有道理的——如果我在客户端创建一个弹性搜索节点数组,然后使用随机数生成器随机选择节点,你会怎么想?例如:[node1, node2, node3] 随机数生成器选择 2,然后客户端针对此特定搜索命中 node2?
    • 听起来不错,但我希望客户端库可以为您做到这一点。此外,一个好的客户端库还会重试在不同节点上失败的查询,甚至更多,如果该节点一直失败,则从数组中删除该节点一段时间。
    • 赞成,但您应该写“客户必须注意”。如果没有正确编码,客户端将超载一台服务器并使集群失衡,从而导致全球资源浪费。
    【解决方案2】:

    不,没有必要。 Elasticsearch 已经通过在集群中的不同节点之间分片和复制搜索索引数据来为您处理负载平衡。

    参考:https://www.elastic.co/guide/en/elasticsearch/reference/current/_basic_concepts.html#_shards_amp_replicas

    可能重复:Is using a load balancer with ElasticSearch unnecessary?

    【讨论】:

    • 感谢您的回答,但我已经知道这种行为。我担心的是,我使用集群中单个节点的 IP 地址来处理我的所有请求 - 因此,虽然该节点当然会适当地引导请求,但它仍然是那个节点我的所有请求都直接被击中,因此一个节点必须处理所有流量吞吐量吗?
    • 如果你使用TransportClient,你可以为集群中的节点配置多个IP地址,它会在它们之间循环请求。也可以使用client.transport.sniff=true,这样会自动发现数据节点,并在它们之间进行负载均衡。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-10-05
    • 2014-09-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-11
    • 1970-01-01
    相关资源
    最近更新 更多