设为首页 收藏本站
查看: 1405|回复: 0

[经验分享] 使用ARM和VMSS创建自动扩展的web集群

[复制链接]

尚未签到

发表于 2017-7-1 09:45:14 | 显示全部楼层 |阅读模式
  在很多的商业场景中,用户的访问,峰值时间都是很难预测的,尤其是做一些市场推广活动和促销的时候,到底部署什么规模的web集群合适,这一直是个问题,部署过量会造成高成本和资源不必要的浪费,部署过少,如果到达峰值,来不及部署,容易造成用户无法访问,用户体验差,交易损失等等,当然更不用提运维人员时刻神经紧绷的实时监测压力情况,以便及时采取措施……
  在云计算技术日新月异的今天,这个场景是非常不和谐的:)VMSS作为Azure新的计算方式,提供了按照压力负载自动扩展收缩,并且同时支持Windows和Linux,在提供了IAAS级别的控制灵活性的同时,也提供了PAAS级别的自动扩展,对于无状态的web服务器应用等场景非常适合,本文介绍如何通过ARM模板和VMSS创建一个自动负载均衡的,按照你的CPU负载自动扩展的web服务器集群:
DSC0000.png

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

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


  • 我修改过的,直接可以在Azure China上运行的模版如下:  https://github.com/kingliantop/azurelabs/tree/master/AzureChinaARMTemplate/vmss-lapstack-autoscale
  模板定义:


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


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


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

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

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


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


  • 最后,我们使用Powershell进行部署,我已经写好了一个deploy.ps1文件,大家在Powershell下修改下参数,直接执行即可,比如你希望的资源组名称,部署的区域等参数,然后在Powershell下执行即可:  #用你的Azure账号登陆
      Login-AzureRmAccount -EnvironmentName AzureChinaCloud
      #执行部署脚本
    DSC0006.png


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


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

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

DSC00010.png

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

DSC00012.png

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

DSC00014.png

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

DSC00016.png

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

DSC00018.png

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

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-389931-1-1.html 上篇帖子: 利用Service bus中的queue中转消息 下篇帖子: DW(三):polybase基本理论
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表