我有2个logstash服务器,可以从多个文件节目中监听5000。只有一个logstash服务器正在获取流量。我可以使用nginx对这些进行负载均衡吗?我可以对一组弹性搜索服务器执行相同的操作吗?
答案 0 :(得分:1)
这听起来不像是一个问题。
我可能会建议在两种情况下使用haproxy作为反向代理。 Nginx在快速提供数据方面拥有良好的代表,但开箱即用的逆向代理效果不佳 - 与haproxy相比,有很多504网关超时问题和最低指标。
您可以配置用于logstash和elasticsearch服务器组的相同代理。
答案 1 :(得分:0)
我得到了它的工作。我有一个版本的nginx,它是在没有--with-stream标签的情况下构建的,它允许我代理tcp流量。现在有效。
答案 2 :(得分:0)
使用 NginX 为 Logstash 进行负载平衡应该没有问题。请注意,您需要使用 stream
块而不是 http
在 tcp/udp 层中进行负载平衡。那是因为 filebeat 使用一种叫做 lumberjack 的协议来连接 logstash 服务器。该协议位于 tcp 之上。所以,你的 NginX 配置应该是这样的:
stream {
upstream logstash {
server logstash-1:5044;
server logstash-2:5044;
}
server {
listen 5044;
listen [::]:5044;
proxy_pass logstash;
}
}
这里我使用 docker 在不同的容器上运行 logstash-1
和 logstash-2
,这样它们就可以在同一个 5044 端口上。您可以根据您的特定 Logstash 主机和端口随意更改这些地址。