在同一networking上进行服务redirect

我有一个networking,我运行多个服务器,每个服务器专用于一个给定的服务。

因为大多数服务运行在不同的端口上,我目前正在寻找一种统一“全部”服务到单个“代理”机器的方法。 这个想法是抽象哪个机器正在访问,但仍然允许直接连接,如果需要/要求。

这个“代理”机器只有一个networking接口,它与所有其他服务提供机器是同一networking的一部分。

我已经研究了路由和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:我不关心代理的单点故障性质。

谢谢

由于Ansgar说你需要使用反向代理,Haproxy可以做到这一点,更多。 资源非常less

  • haproxy主页
  • haproxy的性能

请注意:

  • 代理现在是一个潜在的瓶颈
  • 这也是一个单点故障(在故障转移,分离开关电源,主机等运行两个)

我想Ansgar本来打算给你使用DNS SRVlogging,它们允许你parsingdns条目,也是ip端口。

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

更新

我build议您计算所有服务的组合带宽,如果这低于预期的代理主机networking接口的最大吞吐量,则应该大体上可以,但可能需要一些networkingIO调整。

您需要反向代理连接,这是所有协议都不支持的(例如SSH)。 我build议添加指向DNS中相应服务器的特定于服务的CNAMElogging,而不是创build这种单点故障。