【发布时间】:2017-03-18 17:06:36
【问题描述】:
我对我的 elasticsearch 集群如何处理流量感到有些困惑。我在一个集群中连接了几个 EC2 实例。现在,在我的应用程序中,我将其设置为通过其中一个实例的 ip 连接到集群。我知道该节点随后可以与集群中的所有其他节点连接并适当转发,但是该特定实例是否不会因为所有流量最初都指向该节点而变得负担过重?我是否必须使用负载均衡器,然后将应用程序指向它,还是我没有正确理解这一点?
谢谢! :)
【问题讨论】:
我对我的 elasticsearch 集群如何处理流量感到有些困惑。我在一个集群中连接了几个 EC2 实例。现在,在我的应用程序中,我将其设置为通过其中一个实例的 ip 连接到集群。我知道该节点随后可以与集群中的所有其他节点连接并适当转发,但是该特定实例是否不会因为所有流量最初都指向该节点而变得负担过重?我是否必须使用负载均衡器,然后将应用程序指向它,还是我没有正确理解这一点?
谢谢! :)
【问题讨论】:
我认为你的问题和想法是合法的。然而,根据我的经验,客户端应该知道多个实例并在不需要负载均衡器的情况下分配负载。
请参阅此 ruby 客户端配置示例:Multiple nodes and retry on falure
【讨论】:
不,没有必要。 Elasticsearch 已经通过在集群中的不同节点之间分片和复制搜索索引数据来为您处理负载平衡。
可能重复:Is using a load balancer with ElasticSearch unnecessary?
【讨论】:
TransportClient,你可以为集群中的节点配置多个IP地址,它会在它们之间循环请求。也可以使用client.transport.sniff=true,这样会自动发现数据节点,并在它们之间进行负载均衡。