Nginx UDP健康检查

时间:2018-07-02 08:22:34

标签: nginx tcp udp logstash syslog

我已经设置了一个ELK堆栈,该堆栈从两个nginx负载平衡器馈送了syslog数据。系统日志为UDP,负载均衡器将UDP流转发到具有循环配置的两个logstash主机。负载平衡效果很好,但是如果它们出现故障,我需要停止向其中一个节点发送数据。

nginx和UDP是否可能?因为我尝试设置参数:

fail_timeout=5s;

但是nginx仍然将数据发送到脱机节点,这可能是因为UDP连接是无连接的。

我可以代替使用UDP接收syslog流并将其转发到具有TCP的ELK堆栈吗?

这是nginx.conf的配置:

user root;
worker_processes auto;
pid /run/nginx.pid;
load_module /usr/lib/nginx/modules/ngx_stream_module.so;


worker_rlimit_nofile 1000000;

events {
        worker_connections 20000;
        # multi_accept on;
}

stream {
log_format    basic    '$time_iso8601 $remote_addr '
                       '$protocol $status $bytes_sent $bytes_received '
                       '$session_time $upstream_addr '
                       '"$upstream_bytes_sent" "$upstream_bytes_received" "$upstream_connect_time"';

# Enable access_log statements for debugging
access_log /var/log/nginx/stream.log basic;

  upstream syslog_udp {
    server 84.19.155.71:514 fail_timeout=5s;
    server 84.19.155.72:514 fail_timeout=5s;
  }
  server {
    listen 514 udp;
    proxy_pass syslog_udp;
    proxy_responses 0;
    #proxy_timeout 2s;
    proxy_bind $remote_addr transparent;
    #proxy_next_upstream_timeout 2s;
  }

}

0 个答案:

没有答案