我想了解我是否需要或是否认为将负载均衡器作为Elasticsearch部署的一部分是一种良好的实践。
据我所知,Elasticsearch的高级rest客户端以及transport客户端可以管理节点之间的负载均衡。所以客户端需要逗号分隔的端点列表,就是这样。
是否有任何点也有负载均衡器在中间?在哪种情况下它可能有用?每种方法的优缺点?
通常情况下,ES集群中的外部负载平衡器不是很常见,也不需要,因为Elasticsearch已经做了负载平衡,默认情况下ES集群中的所有数据节点都充当协调角色,但如果你想提高性能,你也可以有专门的协调节点。
如果你的目标是有一个智能负载平衡,这比你在ES 6上提高性能。X或更高版本(在7.X上默认开启),通过使用自适应副本选择,您无需进行任何外部配置即可将其取出。
使用另一个负载均衡器意味着在请求到达ES之前需要额外的配置和另一个层,所以我认为使用它没有任何意义。
答案取决于您的体系结构和需求。您是否需要一个负载均衡器来实现高可用性?还是出于性能原因/可伸缩性?还是两个?
与许多其他分布式系统一样,Elasticsearch有自己的协议和语义来跨多个节点分配负载并管理故障转移。
您可以使用这些语义以这样一种方式配置节点,即节点可以仅执行协调器的角色——有效地充当繁重操作(如搜索请求或批量索引请求)的负载均衡器。
Elasticsearch也有自己的内置协议,用于在故障情况下选择新的主节点——再次有效地执行负载均衡器的角色。
一般来说,我建议您使用本机功能来实现您的目标,而不是通过在其前面引入另一种技术来增加复杂性。
如果你想要一个稳定的URL为你的集群,那么配置你的DNS服务器来达到这个目标。云提供商管理的集群应该已经具有这样的功能,否则您可以通过一些努力来配置它。