同一网络上的服务重定向

同一网络上的服务重定向

我有一个网络,其中运行多个服务器,每个服务器专用于一项给定的服务。

由于大多数服务都在不同的端口上运行,因此我目前正在寻找一种将“所有”服务统一到单个“代理”机器中的方法。这个想法是抽象出正在访问哪台机器,但仍允许在需要/请求时进行直接连接。

该“代理”机器只有一个网络接口,该接口与所有其他服务提供机器属于同一网络。

我研究过路由和 NAT,但至今还没搞清楚如何让它工作。我尝试使用 shorewall 来实现这一点,但找不到清晰的示例。然而,我并不完全确定这是最佳/最简单的策略。

话虽如此,实现这一结果的最佳方法是什么?

示例案例:

Proxy IP     - Listening port - Send requests to
192.168.0.50   80 (http)        192.168.0.1:80
     "         22 (ssh)         192.168.0.2:2222
     "         3306 (mysql)     192.168.0.3:3000
     "         5432 (postgres)  192.168.0.4:5432 
     "         5222 (jabber)    192.168.0.5:5222

PS:我并不关心代理的单点故障特性。

谢谢

答案1

正如 Ansgar 所说,你需要使用反向代理,Haproxy 可以做到这一点,甚至更多。而且只需要很少的资源

请注意:

  • 代理现在是一个潜在的瓶颈
  • 它也是一个单点故障(在故障转移中运行两个,单独的交换机电源、主机等)

我认为 Ansgar 原本希望您使用 DNS SRV 记录,它们允许您解析 DNS 条目和 IP 端口。

http://en.wikipedia.org/wiki/SRV_record

更新

我建议您计算所有服务的组合带宽,如果低于预期的代理主机网络接口的最大吞吐量,那么应该基本没问题,可能需要进行一些网络 IO 调整。

答案2

你需要反向代理连接,并非所有协议(例如 SSH)都支持该功能。为了避免造成这种单点故障,我建议CNAME在 DNS 中添加指向相应服务器的服务特定记录。

相关内容