為了在突然湧入流量時候讓保持系統穩定,加開機器會是讓系統承受更多流量的其中一個解法,如果使用的是AWS的EC2,就可以使用EC2的Auto Scaling讓系統自動加開機器。而在部署系統的時候,可以使用cloudformation設定ec2的Auto Scaling,只要撰寫好serverless framework的yaml檔,即可一次產生多台ec2並設定好Auto Scaling。
要使用Auto Scaling之前,必須先設定Launch Template,告訴AWS要使用的image id、instance type和security group,如果需要透過ssh登入機器,還需要設定key name,才能在ssh登入時,順利的讓使用者手中的key驗證通過。
service: gitlab-serverless-ci-cd
provider:
name: aws
stage: ${opt:stage}
region: ${opt:region}
resources:
Resources:
AutoScalingtTemplate:
Type: AWS::EC2::LaunchTemplate
Properties:
LaunchTemplateName: MyLaunchTemplate
LaunchTemplateData:
ImageId: ami-0885b1f6bd170450c
InstanceType: t2.micro
KeyName: test-blue-green
SecurityGroupIds:
- sg-0ac12345678cefxxx
設定好Launch Template之後,就可以設定Auto Scaling Group,並指定subnet和Launch Template,並透過MinSize
這個欄位設定要部署幾台機器,最多可以透過Auto Scaling機制新增幾台機器。
service: gitlab-serverless-ci-cd
provider:
name: aws
stage: ${opt:stage}
region: ${opt:region}
resources:
Resources:
DeployASG:
Type: AWS::AutoScaling::AutoScalingGroup
Properties:
VPCZoneIdentifier:
- subnet-0765xxxxxxxx6b284
LaunchTemplate:
LaunchTemplateId: !Ref AutoScalingtTemplate
Version: !GetAtt AutoScalingtTemplate.LatestVersionNumber
MaxSize: '5'
MinSize: '3'