Azure 负载平衡器新分发模式

Yves Pitsch Azure 网络首席项目经理 

Azure负载平衡器是一种第四层(TCPUDP)类型的负载平衡器,它可以将传入流量分发到云服务中正常运行的服务实例上,或者分发到负载平衡器集内所定义的虚拟机上。

使用的分发算法是一种将流量映射到可用服务器的 5元组(源 IP、源端口、目标 IP、目标端口、协议类型)哈希。这种算法只能在传输会话中提供亲和性。同一个 TCP UDP 会话中的数据包将被导向到负载平衡端点后的同一个数据中心 IP (DIP)实例上。当客户端关闭并重新打开连接或者从同一个源 IP开始新的会话时,源端口就会发生变化并会导致流量传输到不同的 DIP端点。

我们引入了一种称为源 IP 关联(也称为会话关联或客户端 IP 关联)的新分发模式。Azure 负载平衡器可以配置为使用 2 元组(源 IP、目标 IP)或 3元组(源 IP、目标 IP、协议)将流量映射到可用服务器上。使用源 IP关联,同一客户端计算机上发起的连接都会转到同一个 DIP端点。

IP 关联解决了Azure 负载平衡器和 RD 网关不兼容的问题。现在您可以在单个云服务中构建 RD 网关场。

另一个使用场景是媒体上传,在这种场景下,实际的数据上传通过 UDP实现,而控制层则通过 TCP实现:

·        客户端先向负载平衡公共地址发起 TCP会话,然后被导向至特定 DIP,这个通道将保持活动状态,用于监控连接状况。

·        同一个客户端计算机向同一个负载平衡公共端点发起新的 UDP会话,这里我们想要看到的是,这个连接也被导向至与前面 TCP连接相同的 DIP 端点,使媒体上传能够以高吞吐量执行的同时也能够维持 TCP控制通道。

请注意,如果负载平衡集发生了变化(删除或添加虚拟机),客户端请求的分发会重新计算。如果现有客户端会话有新的连接,您不能确保这些新的连接会发送至同一个服务器上。此外,使用源 IP关联分发模式可能会导致流量分布不均。使用代理的多个客户端可能会被视为一个唯一的客户端应用程序。

场景

·        使用 PowerShell或服务管理 API虚拟机上的端点配置负载平衡器分发

·        使用 PowerShell或服务管理 API负载平衡端点集配置负载平衡器分发。

·        通过服务模型 Web/Worker Role配置负载平衡器分发。

PowerShell 示例

确保下载并安装最新的 Azure PowerShell10月版)

为虚拟机添加 Azure端点并设置负载平衡器分发模式

Get-AzureVM -ServiceName"mySvc" -Name"MyVM1" | Add-AzureEndpoint -Name"HttpIn" -Protocol"tcp" -PublicPort80 -LocalPort8080LoadBalancerDistribution “sourceIP”|Update-AzureVM

要使用 2 元组(源 IP、目标 IP),LoadBalancerDistribution设置为sourceIP要使用 3 元组(源 IP、目标 IP、协议),LoadBalancerDistribution设置为sourceIPProtocol;如果您想要使用默认的 5 元组负载平衡行为,LoadBalancerDistribution设置为none

检索端点负载平衡器分发模式配置

PS C:\> Get-AzureVMServiceNameMyService” –NameMyVM” | Get-AzureEndpoint

VERBOSE:6:43:50 PM -CompletedOperation:GetDeployment

LBSetName :MyLoadBalancedSet

LocalPort :80

Name :HTTP

Port :80

Protocol : tcp

Vip :65.52.xxx.xxx

ProbePath :

ProbePort :80

ProbeProtocol : tcp

ProbeIntervalInSeconds :15

ProbeTimeoutInSeconds :31

EnableDirectServerReturn :False

Acl :{}

InternalLoadBalancerName :

IdleTimeoutInMinutes :15

LoadBalancerDistribution : sourceIP

如果 LoadBalancerDistribution元素未显示,则 Azure负载平衡器使用的是默认的 5元组算法

在负载平衡端点集上设置分发模式

如果端点是负载平衡端点集的一部分,分发模式必须在负载平衡端点集上设置

Set-AzureLoadBalancedEndpoint -ServiceName"MyService" -LBSetName"LBSet1" -Protocol tcp -LocalPort80 -ProbeProtocolTCP -ProbePort8080LoadBalancerDistribution"sourceIP"

云服务示例

您可以使用 Azure SDK for .NET2.511月发布)更新您的云服务

云服务的端点设置在 .csdef中进行。要更新云服务部署的负载平衡器分发模式,必须进行部署升级。

以下是端点设置的 .csdef更改示例:

<WorkerRole name="worker-role-name"vmsize="worker-role-size"enableNativeCodeExecution="[true|false]">

  <Endpoints>

    <InputEndpoint name="input-endpoint-name"protocol="[http|https|tcp|udp]"localPort="local-port-number"port="port-number"certificate="certificate-name"loadBalancerProbe="load-balancer-probe-name"loadBalancerDistribution="sourceIP"/>

  </Endpoints>

</WorkerRole>

<NetworkConfiguration>

  <VirtualNetworkSite name="VNet"/>

  <AddressAssignments>

    <InstanceAddress roleName="VMRolePersisted">

      <PublicIPs>

        <PublicIP name="public-ip-name"idleTimeoutInMinutes="timeout-in-minutes"/>

      </PublicIPs>

    </InstanceAddress>

  </AddressAssignments>

</NetworkConfiguration>

API 示例

要进行负载平衡器分发配置,可以使用服务管理 API

确保将添加的 x-ms-version头设置为 2014-09-01或更高版本。

更新部署中指定负载平衡集的配置

请求示例

POSThttps://management.core.windows.net/<subscription-id>/services/hostedservices/<cloudservice-name>/deployments/<deployment-name>?comp=UpdateLbSet

x-ms-version:2014-09-01

Content-Type: application/xml

<LoadBalancedEndpointList xmlns="http://schemas.microsoft.com/windowsazure" xmlns:i="http://www.w3.org/2001/XMLSchema-instance">

<InputEndpoint>

<LoadBalancedEndpointSetName> endpoint-set-name </LoadBalancedEndpointSetName>

<LocalPort> local-port-number </LocalPort>

<Port> external-port-number </Port>

<LoadBalancerProbe>

<Port> port-assigned-to-probe </Port>

<Protocol> probe-protocol </Protocol>

<IntervalInSeconds> interval-of-probe </IntervalInSeconds>

<TimeoutInSeconds> timeout-for-probe </TimeoutInSeconds>

</LoadBalancerProbe>

<Protocol> endpoint-protocol </Protocol>

<EnableDirectServerReturn> enable-direct-server-return </EnableDirectServerReturn>

<IdleTimeoutInMinutes>idle-time-out</IdleTimeoutInMinutes>

<LoadBalancerDistribution>sourceIP</LoadBalancerDistribution>

</InputEndpoint>

</LoadBalancedEndpointList>

要使用 2 元组关联,LoadBalancerDistribution的值sourceIP要使用 3 元组关联,LoadBalancerDistribution的值sourceIPProtocol;要无关联(即 5 元组),LoadBalancerDistribution的值none

响应

HTTP/1.1 202Accepted

Cache-Control:no-cache

Content-Length:0

Server:1.0.6198.146 (rd_rdfe_stable.141015-1306)Microsoft-HTTPAPI/2.0

x-ms-servedbyregion:ussouth2

x-ms-request-id:9c7bda3e67c621a6b57096323069f7af

Date:Thu,16Oct2014 22:49:21 GMT

如果你有任何疑问,欢迎访问MSDN社区,由专家来为您解答Windows Azure各种技术问题,或者拨打世纪互联客户服务热线400-089-0365/010-84563652咨询各类服务信息

本文翻译自:http://azure.microsoft.com/blog/2014/10/30/azure-load-balancer-new-distribution-mode/



转载于:https://www.cnblogs.com/sesexxoo/p/6190904.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
提供的源码资源涵盖了安卓应用、小程序、Python应用和Java应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值