2016-08-08 6 views
0

Wenn diese Regel aktivierenWie startet man einen Java-Dienst ohne Unterbrechung mit Firewall/iptables?

iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to 8080 

Dann Verbindungen kommen an den Server-Port 80 an localhost umgeleitet: 8080. Wenn ich den Dienst neu starten möchte, kann ich den Dienst einfach an einem anderen Port starten? Sagen Sie Port 8081 und erneut Route des Firewalling zu

iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to 8081 # Apparently -A won't work. I have to replace the rule, not add it. But I don't know how to do it yet 

Was aber ist mit den etablierten TCP-Socket-Verbindungen auf dem NAT-ed Port 8080? Werden sie sofort nach der Änderung der Firewall gelöscht? Oder werden sie weiterarbeiten, bis ein normaler TCP-Socket schließt?

Wenn dies der Fall ist, dann funktioniert dies ein Neustart der Anwendung ohne Unterbrechung durch die alte Instanz auf Port 8080 auf eine ordnungsgemäße Herunterfahren und die neue auf Port 8081 mit den neuen Funktionen.

Ist diese Argumentation korrekt?

Antwort

0

Ja, Sie können einen zusätzlichen Java-Prozess auf dem neuen Port 8081 starten und die Firewall-Regel auf diesen Port ändern. Ob die Verbindung bei einem Neustart unterbrochen wird, wird durch die Option IPTABLES_MODULES_UNLOAD festgelegt. Wenn diese Option auf "yes" (Standard) gesetzt ist, werden sie gelöscht, wenn nein, dann sollten sie nicht. Ich würde vorschlagen, einen Reverse-Proxy (Nginx zum Beispiel) anstelle einer Firewall zum Ausgleich zu verwenden.

+0

Können Sie den Befehl erarbeiten, der den Schalter machen und die bestehenden Verbindungen zu den alten Hafen halten? –

+0

Verbindungsverfolgung beginnt, sobald die ‚ip_conntrack‘ Modul geladen wird. Iptables Neustart ist ein Stopp und startet dann Funktionen. In '/ etc/init.d/iptables', die 'Stop' Funktion ausführt: ' if [ "x $ IPTABLES_MODULES_UNLOAD" = "xyes"]; dann echo -n $ "$ {IPTABLES}: Entladen von Modulen:" ' IPTABLES_MODULES_UNLOAD = no in'/etc/sysconfig/iptables' und 'service iptables restart' einrichten sollte das Modul ip_conntrack nicht entladen, und Verbindungen sollten nicht ' t fallen gelassen werden. – valch85

0

In Serverfault habe ich eine falsche technische Antwort, aber das hat meine Denkweise korrigiert. Ich sollte HAproxy oder ähnliches anstelle einer Firewall verwenden. https://serverfault.com/a/795654/175654

Verwandte Themen