gpt4 book ai didi

azure - 云中自定义客户端服务器应用程序的负载平衡

转载 作者:行者123 更新时间:2023-12-02 00:16:41 26 4
gpt4 key购买 nike

我正在设计一个自定义客户端服务器 tcp/ip 应用程序。该应用程序的网络要求是:

  1. 能够通过安全 TCP/IP channel (在指定端口打开)使用自定义应用程序层协议(protocol)
  2. 客户端-服务器连接/ channel 需要保持持久性。
  3. 如果服务器端应用程序的多个实例正在运行,则能够将客户端连接分派(dispatch)到服务器端应用程序的特定实例(基于服务器端唯一 ID)。

设计目标之一是使应用程序可扩展,因此负载平衡尤为重要。我一直在研究 EC2 和 Windows Azure 的负载平衡功能。我相信当今大多数产品都支持要求 1。但是我不太确定要求 2 和 3。特别是:

  1. 这些服务(EC2、Azure)是否允许应用程序通过指定其他应用程序层要求来影响负载平衡策略?例如,Azure 对云服务使用循环作业分配,但显然需要将上述要求 3 作为负载平衡决策的一部分考虑在内,即基于唯一 ID 进行转发,但如果唯一 ID 则使用循环分配在任何服务器端实例中都找不到。

  2. 负载均衡器是否可以根据要求 2 使用持久连接?我对Azure的理解是,你可以指定一个公共(public)和私有(private)端口对作为端点,这样负载均衡器就会监视公共(public)端口并将连接请求转发到某个正在运行的实例的私有(private)端口,所以基本上你可以这样做此后无论你想要什么连接。这是正确的理解吗?

如有任何帮助,我们将不胜感激。

最佳答案

Windows Azure 在托管服务上有输入端点,这些端点是面向公众的端口。如果您有一个或多个 VM 实例(Web 或 Worker 角色),流量将在实例之间分配;您无法选择路由到哪个实例(例如,您必须支持无状态应用程序模型)。

如果您想强制执行粘性 session 模型,则需要运行自己的前端负载平衡器(以 Web/Worker 角色)。例如:您可以使用 IIS + ARR(应用程序请求路由),或者 nginx 或其他支持此功能的服务器。

我上面所说的也适用于 Windows Azure IaaS(虚拟机)。在这种情况下,您创建负载平衡端点。但您也可以选择非负载平衡端点:可能有 3 个服务器,每个服务器都有一个唯一的端口号。这会绕过任何类型的负载平衡,但可以直接访问每个虚拟机。您还可以只运行一个运行服务器的虚拟机(同样,nginx、IIS+ARR 等),然后将流量路由到多个应用程序服务器虚拟机之一(通过负载均衡器虚拟机和应用程序之间的直接通信进行访问)服务器虚拟机)。

注意:公共(public)到专用端口映射不允许您执行任何负载平衡。这对您来说更加方便:有时您运行的软件绝对必须监听特定端口,无论您希望客户端访问哪个端口。

关于azure - 云中自定义客户端服务器应用程序的负载平衡,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12722836/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com