我有一個主要的系統日誌服務器,它接收來自多個源的系統日誌,並且我想將這些日誌發送到一個Graylog羣集。爲了幫助羣集跟上(在一些速度慢的虛擬機上),我需要能夠將消息負載均衡到Graylog,因爲它們有時來自端點的大塊(有些每10秒發送5k個日誌)。使用nginx進行UDP轉發
我試圖使用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;
}
}
在這種情況下,我的系統日誌箱是10.0.1.1,我的下游Graylog框是10.0.1。[2-4]。我看到了所有這些錯誤消息。
發生了什麼事情的任何線索?當我在Graylog框上運行tcpdump時,我看到來自負載平衡器的流量,這意味着它正在工作。但我認爲nginx正在等待迴應,並給我一個錯誤。
我可能已經想通了一點。我設置了「proxy_responses 0;」在流的'服務器'部分,並且錯誤消失。這基本上告訴nginx不要期待響應,這很好。我想要運行health_check,但似乎該選項可能只能在商業版本中使用。 – jasonmclose