在EC2上为自定义TCP协议装载平衡和保护服务器

我们已经开发了一个自定义的TCP协议来通过套接字与iPhone客户端进行交互,我期待布置我们的生产服务器。 我们将在单个debian EC2实例上运行用erlang编写的服务器,以及在单独的实例上运行mysql(我猜这将被推荐?)。

我正在寻求保护和负载平衡连接到我们的TCP服务器,并看着EC2的ELB,HAProxy,LVM和nginx。 nginx似乎只是http,而且由于我们正在使用一个自定义的协议,所以我正在寻找一些关于这个系统devise的input。 我也想知道路由器/防火墙阻塞对蜂窝networkingISP的影响是什么。

我目前的devise思路是把所有东西都放在端口80到ELB,并将其路由到TCP服务器。 我不完全卖ELB,所以我想知道:

  1. 还有什么其他的选项是非HTTP反向代理
  2. SSL可以在反向代理上运行,还是需要在TCP服务器上运行
  3. 蜂窝networking的防火墙/路由器解决scheme的任何build议,而不是通过端口80。

那么,haproxy或ELB都不是HTTP的唯一; 他们都会执行任意的TCP连接代理。 但是,为什么你可能想要一个代理? 只需运行一个L3负载平衡器; 它更干净。 它可能无法在AWS中工作,但我会称这是AWS的限制。

  1. HAProxy和ELB似乎都适合您的需求。
  2. 添加stunnel到你的HAProxy解决scheme将完成这一点,ELB应该也是如此(尽pipe不完全清楚SSL卸载是否在原始TCP连接上工作)。
  3. 取决于您需要使用的蜂窝networking,但我会说避免端口80 – 其中一些尝试代理这些请求。 如果有的话,运行超过443您的SSLstream – 这应该适用于运营商有限的stream量干扰。