Gibt es eine Möglichkeit, den Datenverkehr auf einen anderen Port umzuleiten, falls der Dienst, der den ursprünglichen Port abhört, nicht reagiert?

Gibt es eine Möglichkeit, den Datenverkehr auf einen anderen Port umzuleiten, falls der Dienst, der den ursprünglichen Port abhört, nicht reagiert?

Dies ist eine ziemlich spezielle Frage, auf die ich jedoch keine Antwort finden konnte. Ich betreibe eine Reihe von Diensten auf einem LXC-Container in Ubuntu 16.04 LTS, insbesondere Spieleserver. Es ist jedoch bekannt, dass dieser Dienst und sein Wrapper ausfallen. Um also die Betriebszeit und den Lastausgleich beizubehalten, wenn Dienste hängen oder nicht reagieren, muss ich in der Lage sein, sowohl UDP- als auch TCP-Verkehr umzuleiten, je nachdem, ob ein oder mehrere Dienste reagieren oder nicht.

Um das Szenario besser zu erklären: Ich habe einen LXC-Container, der einer öffentlichen IP-Adresse ausgesetzt ist, und einen anderen LXC-Container, der mit iptables verschachtelt ist und den Verkehr auf Port 21025 an den verschachtelten Container umleitet. Wenn innerhalb dieses Containers die Dienste, die den Verkehr akzeptieren (genannt ServiceWrapperund ServiceMain), nicht reagieren, muss der Verkehr an einen anderen Dienst auf einem anderen Port weitergeleitet werden, den wir nennen ServiceFallback. Andernfalls geht der Verkehr wie erwartet an ServiceWrapper, der den Verkehr dann an sendet ServiceMain.

Mein aktueller Versuch, diese Art von Routing zu implementieren, bestand darin, HAProxy zum Lastenausgleich zwischen ServiceWrapperund zu verwenden ServiceFallback. Auf den ersten Blick scheint es jedoch, dass HAProxy die Umleitung zusätzlicher Ports basierend auf der Art und Weise, wie es den Lastenausgleich zwischen ServiceWrapperund durchführt, nicht erkennt oder zulässt. ServiceFallbackSie sehen, ServiceMainakzeptiert UDP-Verkehr auf einem anderen Port, um Serverabfragen wie Version, Hostname usw. usw. zu erleichtern. Und soweit ich das beurteilen kann, wird HAProxy keinen UDP-Verkehr weiterleiten oder erkennen.

Ich bin fast verzweifelt, das zum Laufen zu bringen. Ich weiß, dass es möglich ist, weil die genaue Konfiguration, die ich versuche, bei einem meiner direkten Konkurrenten funktioniert hat. Allerdings scheinen sie nicht bereit zu sein, mir auch nur die Pakete mitzuteilen, die sie dafür verwendet haben (vernünftig, aber na ja).

Antwort1

NGINX sollte alles tun, was Sie brauchen. Es unterstützt UDP-Routing und verfügt über passive und aktive Integritätsprüfungen, sodass Sie konfigurieren können, wie es feststellt, ob der Hauptdienst ausgeführt wird oder nicht. Es kann so konfiguriert werden, dass nur dann auf Ihren Backup-Dienst zurückgegriffen wird, wenn die Integritätsprüfungen fehlschlagen.

verwandte Informationen