AWS ELB & ASG
Scalability
- 可扩展性是指应用/系统能通过调整,承担更大的负荷
- 可拓展性分为:纵向可拓展性(为单个实例分配更多的CPU,内存)和横向可拓展性(elasticity)
Horizontal Scalability
Scale out / in

Vertical Scalability
Scale up / down

High Availability
- 可拓展性、高可用是紧密相关的
- 高可用在AWS中指系统或应用至少运行在两个可用区
- 高可用性的目标是在某个数据中心发生故障(灾难)时,另一个数据中心能够失效备援

Elastic Load Balancer
- 将流量转发给下游的EC2实例
- 为你的应用暴露DNS(单点入口)
- 处理下游EC2实例的failures
- 定期检查EC2实例的健康状况
- 跨可用区

ELB Hands On
创建两台EC2实例

使用公共IP访问他们

创建一个ALB(layer 7),用一个单点入口(DNS)来访问EC2实例


将ALB部署在以下两个可用区

创建一个新的
安全组,只允许HTTP请求(80)与HTTPS请求(443)

创建一个目标组(EC2实例组)

将两个实例加入目标组

绑定在ALB上

成功创建ALB

访问DNS名称ALB-1723269650.us-east-1.elb.amazonaws.com,报错

发现目标组未注册目标(第7步)

重新注册

再次根据DNS名称访问,成功!并且多次访问,流量会被分发到不同的EC2实例


终止第二个EC2实例,注意私有IP

在目标组中查看到,第二个是李的运行状态是Unused

之后通过ALB访问,流量只会被转发给第一台EC2实例

Auto Scaling Group
- 根据流量迅速自动创建(scale out)与删除(scale in)EC2实例
- 自动注册新的EC2实例到Load Balancer
- 自动替换不健康的EC2实例

ASG + ALB Hands On
创建ASG

创建启动模板


选择所有的可用区和子网

新建一个ALB,选择之前创建的目标组

配置组大小

创建成功


创建好ASG后,EC2实例会被自动创建,目标组自动关联这些实例


根据ALB的DNS NAME来访问

终止一个实例,看看会发生什么

activity页面,检测到不健康实例,所以自动扩展了一个新的实例


ASG - Scaling Strategies
Manual Scaling
Dynamic Scaling
Simple Scaling
- 当
CloudWatch alarm被触发,比如CPU使用率 > 70%,增加两个EC2实例 - 当
CloudWatch alarm被触发,比如CPU使用率 < 30%,删除一个EC2实例
Target Tracking Scaling
比如:我想让ASG CPU的平均使用率为60%,高于或者低于都可能进行缩放
Scheduled Scaling
根据已知的使用模式预测缩放,比如:每天晚上十点缩容,每天上午八点扩容
Predictive Scaling
- 使用机器学习预测未来的流量,并调整EC2实例的个数

AWS ELB & ASG
https://leopol1d.github.io/2024/01/15/AWS-ELB-ASG/