《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. CentOS 7 安装后没有ifconfig命令

    /bin,/sbin,/usr/bin,/usr/sbin下面都没有ifconfig命令. 执行命令  yum install net-tools 即可.

  2. Memo

    1.Webpack: node_modules/css/index.js didn't return a function   npm install css-loader style-loader ...

  3. nodejs+mysql 断线重连

    var mysql = require('mysql'); var conn; function handleError () { conn = mysql.createConnection({ ho ...

  4. git 的基本使用

    git 的使用步骤: 1. 新建一个文件夹,然后进入终端, 2. cd <文件夹路径>  ——->进入当前目录: 2.psw    ————>查看当前路径 3.git init ...

  5. ActiveMQ

    前言 MQ--Message Queue,中文翻译为"消息队列",维基百科上的这样描述: 消息队列(英语:Message queue)是一种进程间通信或同一进程的不同线程间的通信方 ...

  6. 动态SQL 学习

    <select id="findUser" parameterType="Map" resultType="User">     ...

  7. Qtablevies获取内容

    首先是向tableview中添加内容 model=new QStandardItemModel(); model->setHorizontalHeaderItem(, new QStandard ...

  8. 解决安装mysql的”A Windows service with the name MySQL already exists.“问题

    如果以前安装过mysql,卸载重装,很可能会碰到"A Windows service with the name MySQL already exists."这样的提示.即服务已经 ...

  9. Delphi之静态方法,虚方法virtual,动态dynamic,抽象abstract,消息

    Delphi之静态方法,虚方法virtual,动态dynamic,抽象abstract,消息 http://www.cnblogs.com/zhwx/archive/2012/08/28/266055 ...

  10. oracle(sql)基础篇系列(一)——基础select语句、常用sql函数、组函数、分组函数

        花点时间整理下sql基础,温故而知新.文章的demo来自oracle自带的dept,emp,salgrade三张表.解锁scott用户,使用scott用户登录就可以看到自带的表. #使用ora ...