AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 1017283
Accepted
NIK220V
NIK220V
Asked: 2020-05-16 03:25:03 +0800 CST2020-05-16 03:25:03 +0800 CST 2020-05-16 03:25:03 +0800 CST

使用 NGINX/HAproxy 的透明 TCP 负载平衡

  • 772

我已经尝试了几天,但仍然无法让透明的 TCP 负载均衡器使用 HAproxy/NGINX 工作。

问题是:一切正常,直到我尝试启用透明度。NGINX 和 HAproxy 都进行负载平衡,但将 localhost 作为用户 IP。

我试图改变这一点:

  • 将它们更改为以 root 身份运行。

  • 对于 NGINX:

    • 尝试使用这篇文章: https ://www.nginx.com/blog/ip-transparency-direct-server-return-nginx-plus-transparent-proxy/#upstream-reach-external

    • 配置了 iptables,添加了路由表等。关于“默认网关应该是 NGINX 服务器 ip”的部分我不明白,因为 NGINX 和应用程序在没有任何容器的同一台机器上运行。

  • 对于 HAProxy:

    • 根据文章设置 iptables 并更改 sysctl 转发选项:https ://www.loadbalancer.org/blog/configure-haproxy-with-tproxy-kernel-for-full-transparent-proxy/
    • 但是,我没有得到关于“但是,如果要使用客户端源 IP 地址,则 HAProxy 服务器必须位于返回流量的路径中”的部分。出于与 NGINX 相同的原因。

所以,一般的问题是:我在 xxxx:30000 上有 HAproxy/NGINX 负载平衡。在同一台机器上,我在 xxxx:30001 和 xxxx:30002 有应用程序。

如何负载平衡此配置?需要哪些额外的路由规则?我是否需要为某些重新路由创建一个虚拟子网?因为到目前为止,负载均衡器似乎可以连接到应用程序,但无法将答案返回给用户。

load-balancing nginx tcp transparent-proxy haproxy
  • 1 1 个回答
  • 1626 Views

1 个回答

  • Voted
  1. Best Answer
    Malcolm turnbull
    2020-05-17T03:58:15+08:002020-05-17T03:58:15+08:00

    我不确定您是否可以在同一主机上执行此操作。

    TPROXY 在最好的时候是复杂的。我只见过它与两个单独的子网和单独的主机(虚拟或物理)一起工作得很好。

    你确定你不能只使用像DSR模式这样更简单的东西吗?

    我知道 LVS DSR 在同一台主机上工作。

    或者HAPROXY 代理协议(如果您的应用程序支持它)。

    从理论上讲,我想 TPROXY 应该可以在单个主机上使用,所以也许聪明的人会回答:-)。

    • 0

相关问题

  • 网络负载平衡服务器无法相互通信

  • 用于网络监控的路由/代理 SNMP 陷阱(或 Netflow、通用 UDP 等)的解决方案?

  • 防止拒绝服务攻击的最佳技术是什么?

  • 添加备份互联网连接需要哪些硬件?

  • 什么是最有效的 Windows 负载平衡解决方案?

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve