网络 – 透明代理到Docker网络意味着TCP被破坏
我的日志记录设置是一个Docker主机,为syslog公开了UDP 514. nginx容器的端口已发布,因此当您将日志发送到10.1.1.100时(如下图所示),它首先命中nginx,其配置为Logstash容器的透明负载平衡是:
这很好用.但是,TCP 514(或任何TCP,就此而言)没有.即使我添加正确的侦听器和配置,我相信TCP握手没有完成,因为nginx执行透明的负载平衡,其proxy_bind传递,例如,10.1.1.5作为源IP,例如172.18.0.4(Logstash实例).然后该实例尝试完成握手,但10.1.1.5(以及沿途的任何路由器)不知道如何路由到172.18.0.0/16的Docker网络. 这里有解决方案能够使用TCP进行日志记录吗? 最佳答案
听起来nginx可能不是这里工作的最佳工具 – 无论是haproxy(如果你想要简单的TCP / UDP负载平衡),还是rsyslog(如果你想要一些稍微更多的应用程序感知)似乎更合适,并且会实现与nginx目前相同的功能.
查看您的设置,您甚至可以在514上有一个前端logstash监听器,它可以转发到另一个logstash实例进行实际处理. 检查https://www.nginx.com/resources/admin-guide/tcp-load-balancing/,为了同时拥有TCP和UDP,您需要以下内容:
我不清楚在UDP服务器块中使用logstash_servers是否会导致nginx对它们说UDP或TCP,因此您可能需要使它们都可用. 我有点怀疑在连接到logstash后端时使用’错误’IP作为源的nginx节点问题 – 通常,你的nginx前端将使用’正确’的IP来做这件事,在你的情况下,将意味着在172.18 / 16内的地址. 还有一个事实,你似乎说这一切都适用于UDP – 这往往会说路由不是一个问题,但你的TCP设置可能是. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- ubuntu – 无法重启nginx,bind()失败(98:地址已
- nginx – 4000个请求中有1个出现HTTP 499错误是
- 如何使用fail2ban解析Nginx访问日志以计算404并禁
- ruby-on-rails – 无法将HTTP响应转发回HTTP客户
- configuration – nginx – 我可以在不重新启
- django – gevent-socketio nginx uwsgi不能在
- 如何在Nginx中将每个https请求重定向到http?
- 禁用特定目录中图像的nginx缓存
- node.js – 带有NGINX proxy_pass的Webpack Dev
- 无法在nginx php-fpm上运行.html文件