2014-06-07 288 views
1

我們正在構建在AWS EC2使用WebSockets一個縮放應用。我們正在考慮使用默認的ELB(Elastic Load Balancing),但這不必要地使負載均衡器本身成爲流量繁重的操作的瓶頸(請參閱this related thread),所以我們正在研究一種將客戶端發送給改爲連接到「好實例」的連接細節。但是,Elastic Load Balancer API似乎不支持類似「給我(公開)連接詳細信息」的查詢,這很奇怪,因爲這是任何負載平衡器的核心功能。也許我只是沒有看到正確的地方?的WebSocket負載平衡的AWS EC2

UPDATE:

目前,我們正在研究使用默認實現兩個簡單的解決方案:通過隧道通過ELB所有流量

  1. Use ELB in TCP mode
  2. 只需連接到ELB連接到您的GET實例的公共IP即可。第二種解決方案需要啓用公共IP,但不會通過ELB路由所有流量。

我很擔心這最後一部分,因爲我認爲ELB與它給予您的實例不在同一棟建築物中。但我認爲,它通常位於同一建築物中,或者與實例有其他高速連接?在這種情況下,隧道開銷可以忽略不計。

這兩種解決方案似乎都是同樣可行的,還是我監督着什麼?

+0

什麼是AWS ECL? –

+0

這是一個錯字.... – Domi

回答

1

如果你的應用程序管理,使ELB一個瓶頸,那麼你是一個相當大的魚。你爲什麼不嘗試首先使用他們的負載均衡器相信他們的工作是正確的?要使它「更好」是很困難的,關於這一點最困難的部分是首先確定什麼是「更好」。你肯定沒有很好地定義你的問題,所以我非常肯定你使用的只是他們的負載平衡器。

在某些情況下,它可能是有意義的開發自己的負載平衡邏輯,特別是如果你的機器使用依賴於非常特殊的指標本身並不給ELB系統進行訪問。

+0

感謝您的輸入!我更新了我的問題,也許可以澄清它。 – Domi

1

是的,我想說這兩種解決方案都是可行的。

第二個方面的優勢在於它允許您可能想要實現的負載均衡邏輯的更大定製(對ELB循環法提供改進),在初始HTTP GET請求之後將請求分派給服務器以方便您。

缺點可能在安全方面。目前還不清楚安全性和SSL是否是您的要求的一部分,但如果是這樣,第二種解決方案會迫使您在ec2實例級別處理它,這可能很不方便並影響每個節點的性能。否則websocket通信可能不安全。