首页 文章

AWS EC2上的Websocket负载 balancer

提问于
浏览
1

我们正在构建一个在AWS EC2上使用 WebSockets 的扩展应用程序 . 我们正在考虑使用默认的ELB(Elastic Load Balancing),但这不必要地使负载均衡器本身成为流量大的操作的瓶颈(参见this related thread),因此我们目前正在寻找一种方法来发送客户端改为连接的“好实例”的连接细节 . 但是,Elastic Load Balancer API似乎不支持查询“给我(公共)连接的良好实例详细信息”,这很奇怪,因为这是任何负载均衡器的核心功能 . 也许我没看过正确的地方?

UPDATE:

目前,我们正在研究使用默认实现的两个简单解决方案:

  • Use ELB in TCP mode,它通过ELB隧道传输所有流量 .

  • 只需连接到ELB为您的GET请求连接的实例的公共IP . 第二种解决方案要求启用公共IP,但不通过ELB路由所有流量 .

我担心最后一部分是因为我认为ELB与它给你的实例不在同一个建筑物中 . 但我想,它通常是在同一个建筑物中或与实例有一些其他高速连接?在这种情况下,隧道开销可以忽略不计 .

这两种解决方案似乎同样可行,或者我是否在监督某些事情?

2 回答

  • 1

    如果你的应用程序设法使ELB成为瓶颈,那么你就是一条非常大的鱼 . 你为什么不首先尝试使用他们的负载均衡器相信他们的工作是正确的?很难使它“更好”,而最困难的部分是首先定义什么是“更好” . 你肯定没有在你的问题中很好地定义,所以我很确定你只使用他们的负载均衡器 .

    在某些情况下,开发自己的负载 balancer 逻辑可能是有意义的,特别是如果您的机器使用依赖于ELB系统本身无法访问的非常特殊的指标 .

  • 1

    是的,我会说两种解决方案都是可行的 .

    第二个好处是,它允许更大程度地定制您可能想要实现的负载 balancer 逻辑(提供对ELB循环的改进),在初始HTTP GET请求之后将请求分派给您方便的服务器 .

    不利方面可能是安全问题 . 目前尚不清楚安全性和SSL是否是您需求的一部分,但如果是,第二种解决方案会强制您在ec2实例级别处理它,这可能会带来不便并影响每个节点的性能 . 否则,websocket通信可能会不安全 .

相关问题