Day 13 阿里云架设网站-弹性负载 & CDN

笔者过往经验经常会遇到因为活动或遇到系统负载过大,导致单一主机无法负荷而造成服务延宕、甚至不可用,遇到这种情况,通常会准备多台主机增加负载能量,但流量可能只是一个早上的时间,为了一瞬的流量而必须耗费大量资源,在云端的环境中解决流量过大的解决方案,则可以透过弹性的方式应对突发流量兆呈的主机负载问题

弹性伸缩(AutoScaling)

AutoScaling是一组自动伸缩的规则,可以根据流量、CPU使用率等等参数,来自动水平扩展机器数量

水平扩展
https://ithelp.ithome.com.tw/upload/images/20210925/20140353FADUNcfp6u.png

AutoScaling包含三种架构:

  • Scale-Out:针对所设定的参数进行扩展
    https://ithelp.ithome.com.tw/upload/images/20210925/20140353kccGtxGQAK.png
  • Scale-In:针对所设定的参数进行缩减
    https://ithelp.ithome.com.tw/upload/images/20210925/20140353AcbNNGa3z0.png
  • Scale-Recovery:可以执行Health Check,确保Instances维持运作
    https://ithelp.ithome.com.tw/upload/images/20210925/20140353vcIpPjqum1.png

同时又分为以下几种模式:

  • 定时模式:固定时间内创建一定数量的机器
  • 动态模式:针对各项参数进行增减
  • 固定数量模式:可以设置最小实例数、最大实例数、期望实例数,来控制自己所需的Instances数量

AutoScaling实务操作:

  1. 选择弹性伸缩
    https://ithelp.ithome.com.tw/upload/images/20210925/20140353YfeL6Ap1kB.png

  2. 选择创建伸缩组
    https://ithelp.ithome.com.tw/upload/images/20210925/20140353PaRkunN1ZO.png

  3. 可根据自己的需求选择,此处因先前有建立过ECS Instance了,因此选择第二项
    https://ithelp.ithome.com.tw/upload/images/20210925/20140353LoJTSbBsPY.png

  4. 设置详细的策略,可根据自身业务场景选择,此次配置如下
    https://ithelp.ithome.com.tw/upload/images/20210925/20140353R5UjjGEJEq.png

  5. 此处请选择VPC、Subnet以及欲加入伸缩组的机器
    https://ithelp.ithome.com.tw/upload/images/20210925/201403532tLwK1LmF3.png

  6. 有建立Load Balance、RDS的服务,可以在这边一并选择,让伸缩组知道当扩展的时候,Instances应该跟着哪些服务一起运行
    https://ithelp.ithome.com.tw/upload/images/20210925/2014035390n3QT3lG3.png

  7. 上述选择完毕後,点选创建伸缩组
    https://ithelp.ithome.com.tw/upload/images/20210925/20140353qHf0OdnFZw.png

  8. 建立完毕後,选择查看详情,才能进一步编辑Scaling规则
    https://ithelp.ithome.com.tw/upload/images/20210925/20140353WoI14QfAnk.png

  9. 选择伸缩规则与伸缩活动
    https://ithelp.ithome.com.tw/upload/images/20210925/20140353uNTzQq45v1.png

  10. 点选创建伸缩规则
    https://ithelp.ithome.com.tw/upload/images/20210925/20140353ciUMn2g51u.png

  11. 创建伸缩规则,可根据不同状况选择伸缩规则,在创建前必须先创建报警任务
    https://ithelp.ithome.com.tw/upload/images/20210925/20140353SkVe5ss2pI.png

  12. 创建报警任务
    https://ithelp.ithome.com.tw/upload/images/20210925/20140353AcgvyrY4Oq.png

  13. 建立实际操作流程,此处显示的是当CPU使用率平均值连续两次大於等於50%,并小於80%时,会发出告警,同时扩展两台主机。若大於80%,则扩展到四台主机
    https://ithelp.ithome.com.tw/upload/images/20210925/201403534etehP2xgU.png

  14. 最大实例数为3台,代表当扩展到了第四台後,若CPU降低使用率则会自动缩减到3台
    https://ithelp.ithome.com.tw/upload/images/20210925/20140353tj5pyVC97T.png

  15. 此处展示伸缩组里面最小实例限制为1的时候,当有两台主机时,伸缩组会自动缩减一台主机
    https://ithelp.ithome.com.tw/upload/images/20210925/20140353bZMxiWg7N8.png

内容传递分发(Content Delivery Network,CDN)

CDN通过全球布署众多节点以服务快取源站内容,达成就近存取,让使用者在存取网页、图片、影片等物件的速度加快,并且根据地区来分散存取节点,达成分流的效果;同时降低源站的压力

https://ithelp.ithome.com.tw/upload/images/20210925/20140353QK0pTNl8uI.png

上图可以看到,在台湾的User 1若要存取南美洲的内容,原本需要通过DNS并经过路由绕到南美洲存取,中间的延迟时间较高。但如果透过CDN,就可以先将资料预先Cache(快取)在最靠近台湾的CDN节点上,User 1只要去该节点,即可取得网站资料。并且可以透过这个方式来达成全球分流,不必都到同一个服务器取得资料,可以很大程度的缓解服务器压力,从而避免服务器无法正常运作的状况

CDN架构示意图:

https://ithelp.ithome.com.tw/upload/images/20210925/20140353DCW3UgggKh.jpg

CDN实务操作:

  1. 在导览页选择CDN
    https://ithelp.ithome.com.tw/upload/images/20210925/20140353VCbMAKI3UT.png

  2. 使用CDN的服务必须创建域名
    https://ithelp.ithome.com.tw/upload/images/20210925/20140353nsR1FK3XXq.png

  3. 填写想要通过CDN分发的网域域名;一般网站内容可以选择图片小文件即可;分发地区也可以根据自己的需求选择,若要在中国内使用CDN,则必须准备ICP备案
    https://ithelp.ithome.com.tw/upload/images/20210925/20140353ebKa8Guwuk.png

  4. 填写源站资讯
    https://ithelp.ithome.com.tw/upload/images/20210925/20140353UHgYRNBxTS.png

  5. 完成後将CDN的cname地址解析到DNS cname纪录
    https://ithelp.ithome.com.tw/upload/images/20210925/20140353yFTsIBMN1M.png
    https://ithelp.ithome.com.tw/upload/images/20210925/20140353pMZxvK6hRP.png

  6. 完成CDN布署後在管理选单内,可以针对回源、Cache、Https等做设置
    https://ithelp.ithome.com.tw/upload/images/20210925/20140353R53DLiIWSH.png

  7. 使用nslookup,回传Alibabacloud的CDN cname域名及CDN节点IP
    https://ithelp.ithome.com.tw/upload/images/20210925/20140353MsEZNr5Vgb.png

在这一篇写了很多内容,主要是在AutoScaling的设定步骤其实较为繁多,但如果有具体的逻辑也可以很好的针对需求使用这这个服务,而不至於太阳春,在CDN方面阿里云提供了一个简单易於设定的平台使用,相较於笔者在使用AWS、akamai等CDN在操作上对於新手来说有很大的优势


<<:  DAY 10 Partials, Modules

>>:  Day11|【Git】档案管理 - 重新命名档案 git mv

回头呼喊你的爱情:Callback回呼函式

甚麽是「Callback function」? MDN的解释如下: 「回呼函式(callback ...

Day 7 : 回圈-用来解决重复的事情

今天要来学习程序语言中非常重要的一个概念(功能)-回圈,回圈到底可以拿来干嘛呢?先来看个例子: 如果...

【在厨房想30天的演算法】Day 16 演算法 : 排序 sort III 希尔、摇晃、基数

Aloha!又是我少女人妻 Uerica ~ 我每天看到时间快接近午夜 12 点,都能感受到灰姑娘的...

IOS、Python自学心得30天 Day-23 Firebase衔接Python-1

前言: 之前提到 我一直在想办法让原本的训练模型 转成IOS可以用的模型 但找了许多方法後 还是没成...

DAY18-JAVA的抽象类别(1)

透过继承,我们可以从原有的类别衍生出新的类别,原有的类别称为父类别,而衍生出的类别称为子类别。透过这...