加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > Linux > 正文

linux – 使用nginx进行UDP转发

发布时间:2020-12-14 01:20:42 所属栏目:Linux 来源:网络整理
导读:我有一个主syslog服务器从几个源接收syslog,我想将这些日志发送到Graylog集群.为了帮助集群保持运行(在一些缓慢的虚拟机上),我需要能够将消息负载平衡到Graylog,因为有时它们来自端点的大量块(一些每10秒发送一次突发5k日志). 我正在尝试使用nginx作为系统日
我有一个主syslog服务器从几个源接收syslog,我想将这些日志发送到Graylog集群.为了帮助集群保持运行(在一些缓慢的虚拟机上),我需要能够将消息负载平衡到Graylog,因为有时它们来自端点的大量块(一些每10秒发送一次突发5k日志).

我正在尝试使用nginx作为系统日志消息的负载均衡器,但我似乎无法让它工作,而且似乎是因为nginx正在寻找Graylog服务器的响应.使用UDP,它不会得到响应.至少这是我认为正在发生的事情.

我得到的错误是这样的:

2016/12/01 11:27:59 [error] 2816#2816: *210325 no live upstreams while connecting 
  to upstream,udp client: 10.0.1.1,server: 0.0.0.0:11016,upstream: "juniper_close_stream_backend",bytes from/to client:932/0,bytes from/to upstream:0/0

作为我在nginx.conf中的这个规则的一个例子,它看起来像:

stream {
    server {
        listen 11016 udp;
        proxy_pass juniper_close_stream_backend;
    }
    upstream juniper_close_stream_backend {
        server 10.0.1.2:11016;
        server 10.0.1.3:11016;
        server 10.0.1.4:11016;
    }
}

在这个例子中,我的syslog框是10.0.1.1,我的下游Graylog框是10.0.1.[2-4].我看到所有这些错误消息.

有关正在发生的事情的任何线索?当我在Graylog盒子上运行tcpdump时,我看到来自负载均衡器的流量,这意味着它正在工作.但我认为nginx期待一个回应,并给我一个错误.

解决方法

所以这似乎是解决方案(在我上面的注释中).

如果使用上面的示例,您希望它看起来像:

stream {
     server {
         listen 11016 udp;
         proxy_pass juniper_close_stream_backend;
         proxy_responses 0;
     }
 }

这告诉nginx不要期待响应,它不应该来自UDP.我不知道为什么他们的examples在讨论DNS时没有显示这个,它可以完全由UDP驱动.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读