Linux
EC2 上自定義 TCP 協議的負載平衡和保護伺服器
我們開發了一個自定義 TCP 協議來通過套接字與 iPhone 客戶端進行互動,我正在尋找我們的生產伺服器的佈局。我們將在單個 debian EC2 實例上執行用 erlang 編寫的伺服器,並且很可能在單獨的實例上執行 mysql(我猜這會被推薦嗎?)。
我正在尋找與我們的 TCP 伺服器的連接和負載平衡,並且正在研究 EC2 的 ELB、HAProxy、LVM 和 nginx。nginx 似乎只是 http,並且由於我們使用的是自定義協議,因此我正在尋找有關此類系統設計的一些輸入。我還想知道路由器/防火牆阻塞對蜂窩網路 ISP 的影響是什麼。
我目前的設計理念是將所有內容通過埠 80 連接到 ELB,並將其路由到 TCP 伺服器。我沒有完全在 ELB 上出售,所以我想知道:
- 非http反向代理還有哪些其他選擇,
- SSL 可以在反向代理上執行還是也需要在 TCP 伺服器上執行
- 對於蜂窩網路的防火牆/路由器解決方法的任何建議,而不是通過埠 80。
好吧,haproxy 或 ELB 都不是僅 HTTP;他們都會做任意的 TCP 連接代理。但是為什麼你可能想要一個代理呢?只需執行 L3 負載均衡器即可;乾淨多了。它可能在 AWS 中不起作用,但我稱之為 AWS 的限制。
- HAProxy 和 ELB 似乎都很好地滿足了您的需求。
- 將 stunnel 添加到您的 HAProxy 解決方案將實現此目的,ELB 也應如此(儘管尚不完全清楚 SSL 解除安裝是否適用於原始 TCP 連接)。
- 取決於您需要使用的蜂窩網路,但我會說避免使用埠 80 - 其中一些嘗試代理這些請求。如果有的話,請使用您的 SSL 流執行超過 443 - 這應該適用於流量干擾相當有限的運營商。