如何在TLS/SSL加密的logstash通信到elasticsearch中实现负载均衡

109次阅读
没有评论

问题描述

希望在使用TLS或HTTPS加密的情况下,通过filebeat -> logstash -> elasticsearch的流程,能够在两个目标elasticsearch集群之间实现主备负载均衡。也就是说,在其中一个集群出现故障时,用户希望能够手动或自动将所有数据流切换到另一个集群。

用户正在考虑各种代理设置,但对术语理解不够清楚,而且TLS并不能解决问题。

解决方案

请注意以下操作可能涉及版本差异或安全风险,请提前备份数据和做好测试。

使用DNS负载均衡方案

您可以通过以下几种方式实现负载均衡,但我从未见过使用CNAME实现的情况。

方案1:使用BGP实现IP故障切换

如果您对IP寻址具有控制权,可以使用BGP(边界网关协议)来实现IP的故障切换(或负载均衡)到云托管提供商。这需要一些网络设置和协议配置。

方案2:使用地理位置DNS负载均衡解决方案

您可以投资于基于DNS的地理位置负载均衡解决方案,如F5的GTM、A10的GSLB,或Kemp的GSLB等。这些解决方案可以配置您的域名服务器(NS1和NS2)为所选GSLB解决方案。您可以为DNS记录设置非常低的TTL,并从GSLB解决方案配置健康监视器到您的ELK堆栈。当监视器失败时,GSLB解决方案将自动切换流量到备用数据中心。您可以将这些GSLB解决方案设置为主/备对,一个GSLB解决方案在一个数据中心作为NS1,另一个在次要站点作为NS2。然后,GSLB将转发查询到以前的名称服务器,这些服务器将发布两个站点的IP地址。这些IP地址将被重写,以消除GSLB在当前时间不希望将流量定向到的IP(这可以用于主/主站点,甚至可以使用地理位置将用户发送到欧洲云提供商和美国用户发送到美国云提供商)。

方案3:本地负载均衡方案

您还可以考虑在本地使用本地负载均衡解决方案,例如F5的LTM、A10的SLB,或者NGINX等。在这种方案中,您可以在办公室内部署这些解决方案,通过本地DNS服务器将负载均衡器的URL提供给本地IP(虚拟IP)。然后,您需要配置负载均衡器将用户定向到所需的云提供商,通过配置健康监视器。您还需要配置负载均衡器以桥接SSL连接,将SSL连接从客户端到负载均衡器解密,然后再次通过负载均衡器建立到云提供商的SSL连接,并将数据通过新的SSL隧道转发。

使用透明代理实现TLS连接

如果您可以访问两端的证书,您可以使用透明代理来实现TLS连接的负载均衡。以下是一种可能的方法:

使用NGINX作为透明代理

  1. 安装并配置NGINX服务器。
  2. 将NGINX配置为接收来自filebeat的TLS连接。
  3. 在NGINX配置中,配置负载均衡,以将流量分发到两个目标elasticsearch集群。您可以使用round-robin等算法。
  4. 配置NGINX以建立与目标elasticsearch集群的TLS连接,并将数据转发给它们。

请确保在执行这些操作之前,您已经熟悉NGINX的配置和操作方式,以及TLS证书的使用。

总结

在TLS/SSL加密的logstash通信到elasticsearch中实现负载均衡可以通过使用DNS负载均衡解决方案或透明代理来实现。使用适当的方法和工具,您可以确保在一个集群故障时无缝切换到另一个集群,同时保持数据的安全性和一致性。

【注】本文提供的解决方案可能涉及到版本差异、安全性问题等,请务必在实施前充分了解,并在测试环境中进行验证。

正文完