UDP-Weiterleitung mit nginx
Ich habe ein Haupt-syslog-server, der den Empfang von syslog-aus mehreren Quellen, und ich möchten, senden Sie diese Protokolle an einen Graylog-cluster. Zu helfen, die cluster-halten (auf einige langsame VMs), ich muss in der Lage sein, einen Lastenausgleich der Nachrichten zu Graylog, wie manchmal kommen Sie in riesigen Brocken von den Endpunkten (einige senden 5k logs in bursts alle 10 Sekunden).
Ich versuche, die Verwendung von nginx als load balancer für die syslog-Meldungen, aber ich kann nicht scheinen, um es zu arbeiten, und es zu sein scheint, denn nginx ist auf der Suche nach Antworten aus der Graylog-Server. Mit UDP geht es nicht um eine Antwort zu bekommen. Das ist zumindest das, was ich denke, geschieht.
Die Fehler, die ich bekommen hab ist dieses:
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
Als ein Beispiel für diese Regel in meiner nginx.conf sieht es so aus:
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;
}
}
In diesem Beispiel, meine syslog-box ist 10.0.1.1, und mein downstream Graylog-Boxen sind 10.0.1.[2-4]. Ich sehe diese Fehlermeldung für alle von Ihnen.
Keine Ahnung, was passiert ist? Wenn ich mit tcpdump auf der Graylog-Boxen, ich sehe den Datenverkehr, der von der load-balancer, das heißt, es funktioniert. Aber ich denke, nginx ist eine Antwort zu erwarten und gibt mir eine Fehlermeldung.
- Vielleicht habe ich dachte, dies ein wenig. Ich "proxy_responses 0;" in der "server" - Teil des Streams, und der Fehler geht Weg. Diese im Grunde sagt nginx nicht mit einer Antwort rechnen, was in Ordnung ist. Ich würde gerne eine health_check läuft zwar, aber es scheint, als ob diese option kann nur in der kommerziellen version.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Also das schien die Lösung zu sein (in meiner Anmerkung oben).
Wenn mit meinem Beispiel von oben, Sie wollen, dass dies so Aussehen:
Dieser erzählt nginx nicht zu erwarten, dass eine Antwort, die es nicht benötigen, sollten von UDP. Ich weiß nicht, warum Ihre Beispiele nicht zeigen, diese bei der Diskussion über DNS, die ausschließlich UDP-getrieben.
proxy_responses
Richtliniestream
undhttp
in einer config?