• 使用ARM和VMSS创建自动扩展的web集群


    在很多的商业场景中,用户的访问,峰值时间都是很难预测的,尤其是做一些市场推广活动和促销的时候,到底部署什么规模的web集群合适,这一直是个问题,部署过量会造成高成本和资源不必要的浪费,部署过少,如果到达峰值,来不及部署,容易造成用户无法访问,用户体验差,交易损失等等,当然更不用提运维人员时刻神经紧绷的实时监测压力情况,以便及时采取措施……

    在云计算技术日新月异的今天,这个场景是非常不和谐的:)VMSS作为Azure新的计算方式,提供了按照压力负载自动扩展收缩,并且同时支持Windows和Linux,在提供了IAAS级别的控制灵活性的同时,也提供了PAAS级别的自动扩展,对于无状态的web服务器应用等场景非常适合,本文介绍如何通过ARM模板和VMSS创建一个自动负载均衡的,按照你的CPU负载自动扩展的web服务器集群:

    在本模板中,将会创建如下测试环境:

    1. 定义一个负载均衡器,负责转发前端的web请求给后端的web集群
    2. 使用VMSS创建一个web集群
    3. 使用客户定制化脚本,自动安装Apache web服务器,和PHP web应用
    4. 定义自动扩展集合的规则,根据虚拟机自动扩展集合中的CPU负载进行自动扩展或者收缩,虚拟机也会自动的在负载均衡器中自动添加或者删除
    5. 压力测试用具,可以使用LoadRunner,Apache AB等等,在本例中,使用PHP产生压力,达到CPU阈值要求
    6. 原始的ARM模版请参考Azure的quick start模版:

    https://github.com/Azure/azure-quickstart-templates/tree/master/201-vmss-lapstack-autoscale

    1. 我修改过的,直接可以在Azure China上运行的模版如下:

      https://github.com/kingliantop/azurelabs/tree/master/AzureChinaARMTemplate/vmss-lapstack-autoscale

       

    模板定义:

    1. 对于VMSS的基本定义,前述文档已经介绍过,不在赘述,再次我们先看一下负载均衡器的定义,首先我们需要增加一个负载均衡器的资源,这个资源依赖于公共IP地址,前端地址就是公共IP地址:

       

       

    2. 接下来我们需要定义负载均衡的规则,前端的请求通过DNS或者公网IP地址进来以后,通过默认的地址分发给后端的IP资源池,协议是TCP,前端和后端端口都是标准的80端口,你也可以设置负载均衡器空闲超时时间,这个时间会决定你的连接空闲时长,最长可是设置为30分钟;因为我们后续主要配置的是http请求,所以主要设置一下针对80端口的探测,以此判断后端虚拟机是否健康:

       

    3. 为方便用户定制化部署,快速扩展,Azure提供了定制化脚本扩展,可以让你在虚拟机部署完成后,运行自定义的脚本,安装你自己软件,部署你自己的应用,具体的用法如下,你可以将你的应用放在Azure存储中,本例中放在了github上,然后执行bash,进行安装配置:

       

      在本次测试中,提供了两个PHP web文件,一个是index.php,用来显示当前的web应用跑在哪个服务器上,另外一个是do_work.php用来给web服务器产生压力,触发自动扩展。

       

    4. 最后需要配置一下VMSS自动扩展的规则,在什么情况下进行自动扩展,在什么情况下,进行自动收缩,在本例中,我们定义整个VMSS中平均CPU的负载在过去5分钟内高于60%就进行自动扩展,低于50%的时候自动收缩:

       

       

    5. 最后我们需要配置一下参数文件,定义一下VMSS的名称,初始在VMSS中需要几个虚拟机,用户名和密码即可:

    6. 最后,我们使用Powershell进行部署,我已经写好了一个deploy.ps1文件,大家在Powershell下修改下参数,直接执行即可,比如你希望的资源组名称,部署的区域等参数,然后在Powershell下执行即可:

       

      #用你的Azure账号登陆

      Login-AzureRmAccount -EnvironmentName AzureChinaCloud

      #执行部署脚本

    7. 部署完成后,登陆Azure新portal,https://portal.azure.cn, 可以看到新的VMSS集合已经部署成功,包括有一个扩展集,,一个负载均衡器,一个公网IP地址及多个用于分发VM的存储账号:

    8. 打开虚拟机扩展集,,查看当前实例,可以看到当前有2个实例:

    9 .点击负载均衡器,获得公网的IP地址或者DNS,在浏览器中打开,可以看到当前连接的是001 web服务器,该页面是一个demo页面,用于给虚拟机产生压力;新打开一个浏览器,连接负载均衡器,可以看到请求被分发到了002 web服务器:

    10 . 在当前的测试页面上,输入500秒,作为压力测试时长,点击"DO work",那么PHP程序就会产生压力,占满CPU:

    11. 大约等待5,6分钟以后,连续5分钟的CPU负载超过60%,我们打开新portal的虚拟机扩展页面的实例页面,可以看到,按照我们定义的VMSS自动扩展规则,虚拟机开始自动增加:

    12. 使用不同的浏览器测试网站,还会看到网站请求会被分发到新建立的服务器B,C,F等等,说明自动扩展集正在增加web服务器的时候,也会自动更新负载均衡器的设置,让前端客户的请求按照默认的哈希规则分发给后端的服务器,实现动态的负载均衡:

    13. 压力测试完成,虚拟机扩展集的压力逐步低于50%,这个时候,整个虚拟机扩展集合会监测最近5分钟的负载情况,一旦满足收缩要求,就会执行cooldown的过程,逐步移除web服务器,也会从负载均衡器移除,降低成本:

    通过这个测试可以看到,我们可以方便的使用VMSS+ARM快速的构建自动可扩展的web集群,并且使用定制化脚本部署我们的应用程序。

     

     

  • 相关阅读:
    easy ui 表单ajax和from两种提交数据方法
    easy ui 下拉级联效果 ,下拉框绑定数据select控件
    easy ui 下拉框绑定数据select控件
    easy ui 异步上传文件,跨域
    easy ui 菜单和按钮(Menu and Button)
    HTTP 错误 404.3
    EXTJS4.2 后台管理菜单栏
    HTML 背景图片自适应
    easy ui 表单元素input控件后面加说明(红色)
    EXTJS 4.2 添加滚动条
  • 原文地址:https://www.cnblogs.com/cloudapps/p/5954851.html
Copyright © 2020-2023  润新知