《Windows Azure Platform 系列文章目录

  注意:如果Azure面对的客户只是企业级客户,企业级客户使用NAT设备访问Internet的话,因为多个客户端使用相同的Source IP地址,会造成单台服务器压力过大的情况。

  这个功能已经出来一段时间了,笔者在这里做一下小记。

  熟悉Azure平台的读者都知道,Azure Load Balancer(负载均衡器)的规则,是由五要素组成source IP, source port, destination IP, destination port, protocol type

  参考资料:http://azure.microsoft.com/blog/2014/04/08/microsoft-azure-load-balancing-services/

  这样Azure Load Balancer可以保证绝对的负载均衡,如下图:

  

  但是这样的负载均衡器会有缺陷,当企业用户的应用程序需要保留会话(Session)的时候,不得不要修改应用程序代码,将Session保存到SQL Server或者In-Role Cache中去。

  最新的Azure Load Balancer可以将规则进行修改,改为2要素sourceIP,(Source IP,Destination IP)或3要素sourceIPProtocol,(Source IP, Destination IP, Protocol)。这样由同一个客户端发起的请求,会指向同一个Azure目标服务器。通过这种方式,就可以保留Session。如下图所示:

  

  

  准备工作:请读者参考[New Portal]Windows Azure Virtual Machine (9) Virtual Machine高可用与自动负载均衡(下),在Azure创建如下内容:

-  创建2台Windows Server 2012 VM,命名为LeiZhangVMOne和LeiZhangVMTwo

-  创建DNS Name为LeiZhangVM

-  负载均衡设置Public Port为80端口,Private Port为80端口,负载均衡器为LB_80

  1.查看80端口的默认Endpoint规则

  我们执行以下代码:

Get-AzureVM –ServiceName 'LeiZhangVM' –Name 'LeiZhangVMOne' | Get-AzureEndpoint

  可以查看到

  

  上图中,我们看到LoadBalancerDistribution属性为空。使用默认的规则,为五要素:source IP, source port, destination IP, destination port, protocol type

  2.重新设置Azure Load Balancer规则为sourceIP

  然后我们执行以下的代码:

Set-AzureLoadBalancedEndpoint -ServiceName 'LeiZhangVM' -LBSetName 'LB_80' -Protocol tcp -LocalPort  -ProbeProtocolTCP -ProbePort  –LoadBalancerDistribution 'sourceIP'

  查看执行结果,如下图:

  

  3.查看更新后的Load Balancer规则

  我们重新执行以下PS代码:

Get-AzureVM –ServiceName 'LeiZhangVM' –Name 'LeiZhangVMOne' | Get-AzureEndpoint

  查看与图1中的区别,如下图红色部分

  

  可以看到,相比图1,上图中LoadBalancerDistribution属性为sourceIP,这样就完成配置Load Balancer的2要素(Source IP,Destination IP)

  如果要改回默认的负载均衡器规则,请设置LoadBalancerDistribution为none

Set-AzureLoadBalancedEndpoint -ServiceName 'LeiZhangVM' -LBSetName 'LB_80' -Protocol tcp -LocalPort  -ProbeProtocolTCP -ProbePort  –LoadBalancerDistribution 'none'

  

  参考资料:http://azure.microsoft.com/blog/2014/10/30/azure-load-balancer-new-distribution-mode/

Azure PowerShell (8) 使用PowerShell设置Azure负载均衡器规则的更多相关文章

  1. Azure 自动化:使用PowerShell Credential连接到Azure

    最近在中国版windows azure中新上线的自动化功能, 使用自动化,您可以导入自己的PowerShell脚本,然后设置一个运行计划使得脚本能按计划运行. 在本文中,我们来学习如何使用PowerS ...

  2. Azure 基础:使用 powershell 创建虚拟网络

    什么是虚拟网络 虚拟网络是您的网络在 Azure 云上的表示形式.您可以完全控制虚拟网络的 IP 地址.DNS 的设置.安全策略和路由表.您还可以更进一步,把虚拟网络划分为多个子网.然后用它们连接您的 ...

  3. Azure 基础:用 PowerShell 自动登录

    PowerShell 是管理 Azure 的最好方式,因为我们可以使用脚本把很多的工作自动化.比如把 Azure 上的虚拟机关机,并在适当的时间把它开机,这样我们就能节省一些开支,当然我们同时也为减少 ...

  4. 【Azure Developer】调用SDK的runPowerShellScript方法,在Azure VM中执行PowerShell脚本示例

    当需要通过代码的方式执行PowerShell脚本时,可以参考以下的示例. Azure SDK中提供了两个方法来执行PowerShell脚本 (SDK Source Code: https://gith ...

  5. 【Azure 环境】用 PowerShell 调用 AAD Token, 以及调用Azure REST API(如资源组列表)

    问题描述 PowerShell 脚本调用Azure REST API, 但是所有的API都需要进行权限验证.要在请求的Header部分带上Authorization参数,并用来对List Resour ...

  6. Azure PowerShell (9) 使用PowerShell导出订阅下所有的Azure VM的Public IP和Private IP

    <Windows Azure Platform 系列文章目录> 笔者在之前的工作中,有客户提出想一次性查看Azure订阅下的所有Azure VM的Public IP和Private IP. ...

  7. Azure 基础:使用 powershell 创建虚拟机

    在进行与 azure 相关的自动化过程中,创建虚拟主机是避不开的操作.由于系统本身的复杂性,很难用一两条简单的命令完成虚拟主机的创建.所以专门写一篇文章来记录使用 PowerShell 在 azure ...

  8. 【Azure 应用服务】Azure Function App 执行PowerShell指令[Get-Azsubscription -TenantId $tenantID -DefaultProfile $cxt]错误

    问题描述 使用PowerShell脚本执行获取Azure订阅列表的指令(Get-Azsubscription -TenantId $tenantID -DefaultProfile $cxt).在本地 ...

  9. 【Azure 应用服务】使用PowerShell脚本上传文件至App Service目录  

    问题描述 使用PowerShell脚本上传文件至App Service目录的示例 脚本示例 对文件进行上传,使用的 WebClient.UploadFile 方法进行上传.当文件夹中包含子目录,执行以 ...

随机推荐

  1. ubuntu14 备份

    备份命令 # tar cvpjf backup.tar.bz2 –exclude=/proc –exclude=/lost+found –exclude=/backup.tar.bz2 –exclud ...

  2. 毕业论文中使用的技术—FileReader接口

    用来把文件读入内存,并且读取文件中的数据. FileReader接口提供了一个异步API,使用该API可以在浏览器主线程中异步访问文件系统,读取文件中的数据 FileReader接口的方法 方法名 参 ...

  3. hive学习笔记

    html,body,div,span,applet,object,iframe,h1,h2,h3,h4,h5,h6,p,blockquote,pre,a,abbr,acronym,address,bi ...

  4. codevs1048 石子合并

    题目链接:http://codevs.cn/problem/1048/ 题目描述 Description 有n堆石子排成一列,每堆石子有一个重量w[i], 每次合并可以合并相邻的两堆石子,一次合并的代 ...

  5. unix shell命令

    man  commandxx    查看某个命令的使用说明 权限---------------------- chmod o+wx   testfile  给某个目录权限 chmod 777 READ ...

  6. BZOJ4293: [PA2015]Siano

    Description 农夫Byteasar买了一片n亩的土地,他要在这上面种草. 他在每一亩土地上都种植了一种独一无二的草,其中,第i亩土地的草每天会长高a[i]厘米. Byteasar一共会进行m ...

  7. 初探javascript

    javascript是一种在网络广泛应用的脚本语言,虽然名字与java相近,但其实两者并没有直接的关系,脚本语言是一种为了便于操作和拓展功能而开发出来的解释性语言,不同于传统的编程语言,脚本语言不需要 ...

  8. java项目启动后,数据库字段生成 user_name带下划线这种形式的

    hibernate 5.0 版本以上去掉了 hibernate.naming-strategy = org.hibernate.cfg.ImprovedNamingStrategy  这个属性,如果非 ...

  9. mysql数据库导出模型到powerdesigner,PDM图形窗口中显示数据列的中文注释

    1,mysql数据库导出模型到powerdesigner 2,CRL+Shift+X 3,复制以下内容,执行 '******************************************** ...

  10. iOS 让按钮上的标题换行显示

    项目中遇到了要让按钮上的文字换行显示的需求,就写了这个博客. 1.如果按钮上的文字固定,形式是写死的,可以考虑给标题文字加\n换行符来达到效果,但是,记得一定要设置这个属性,不然是不会换行的, but ...