如果启用此规则
CELERY_IMPORTS = (
'reports.tasks',
'some_app.some_module',
)
然后,连接到服务器端口80的连接将重定向到localhost:8080。如果我想重新启动服务,我可以在另一个端口上启动服务吗?说端口8081并将防火墙重新路由到
iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to 8080
然而,在NAT-ed端口8080上建立的TCP套接字连接怎么样? 防火墙更改后会立即丢弃它们吗?或者,他们会继续工作,直到正常的TCP套接字关闭吗?
如果是这样,那么通过在正常关闭时使端口8080上的旧实例和具有新功能的端口8081上的新实例,可以重新启动应用程序而不会中断。
这种推理是否正确?
答案 0 :(得分:0)
是的,您可以在新端口8081上启动其他Java进程并将防火墙规则更改为该端口。是否在重新启动时删除连接由选项IPTABLES_MODULES_UNLOAD确定。如果此选项设置为yes(默认值) - 它们将被删除,如果不是 - 那么它们不应该被删除。我建议使用反向代理(例如Nginx)而不是防火墙来进行平衡。
答案 1 :(得分:0)
在serverfault中,我得到了一个不正确的技术答案,但这纠正了我的思维方式。我应该使用HAproxy或类似的工作而不是防火墙。 https://serverfault.com/a/795654/175654