【问题标题】:how to connect to specific server behind elb?如何连接到elb后面的特定服务器?
【发布时间】:2015-05-13 05:23:45
【问题描述】:

我正在运行一个聊天应用程序,它允许客户使用 websockets 创建房间。我想使用 aws 弹性负载平衡,但我不确定如何确保两个想要聊天的客户端最终在同一台服务器上。具体避免以下情况:

  1. 客户端 A 在服务器 A 上创建一个房间(通过负载平衡器)并 将链接发送给客户端 B。
  2. 客户端 B 连接到链接,但获取 路由到负载平衡器后面的服务器 B。

我查看了代理协议,但对于我的级别来说似乎太复杂了,我不确定这是否符合我的目的。

【问题讨论】:

  • 在这种情况下为什么要使用负载均衡器呢?您正在尝试做一些需要有状态服务器的事情。

标签: amazon-web-services websocket amazon-elb


【解决方案1】:

我与亚马逊的一些人交谈过,他们只是建议在创建聊天室时首先使用负载平衡器,并获取创建它的服务器 IP 并将其传递给客户端 B 以直接连接到该服务器。效果很好!

【讨论】:

    【解决方案2】:

    仅使用 ELB 是不可能做你想做的事的。无法确保 2 个客户端最终位于同一台服务器上。

    我可以看到 2 个选项:

    • 在 elb 后面的节点之间创建共享状态。聊天室将在所有服务器上可见,您应确保在聊天室中发送的每条消息都发送到所有客户端连接到房间的实例。

    • 创建聊天室管理和发现服务。它将负责在创建房间时选择服务器,并在用户想要连接到房间时重定向用户。您可以通过将服务器放在聊天室位置来简化它,并为服务器创建创建一个非常简单的逻辑客户端,但这会限制正确的平衡。

    对于完整的 HA 和扩展系统,您可能需要两者。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-05-05
      • 1970-01-01
      • 2017-11-01
      • 1970-01-01
      相关资源
      最近更新 更多