前言
這篇文章是出自於線上課程 Ultimate AWS Certified Solutions Architect Associate 的所記錄的筆記。
本文
Scalability
Scalability 代表是 APP 藉由適應來處理更高的負載,scalability 可以分成兩種類型
- Vertical Scalability
- Horizontal Scalability(=elasticity)
Vertical Scalability (Scale up / down)
增加 instance 的大小,常見於非分散式的架構, e.g. 資料庫
Horizontal Scalability (Scale in / out)
增加 instance/app 的數量,常見於分散式的架構,e.g. Auto Scaling Group, Load Balancer
High Availability
與 Horizontal Scalability 相近,主要目的是在多個的 AZ 上運作同一個 App
Elastic Load Balancing
Load Balancer 是負責轉發流量到多個 server 的 server,而 elastic load balancing 會固定檢查底下 instance 的狀態,若 instance 沒有正常回應,則該 instance 會被視為 unhealthy。
AWS 有四種 Load Balancer
- Classic Load Balancer (CLB)
- Application Load Balancer (ALB)
- Network Load Balancer (NLB)
- 每個 AZ 都有一個 static IP,並且支援指定 elastic IP
- 透過 TCP/UDP (Layer 4) 來轉發流量
- 可以處理百萬請求/秒
- 更低的延遲(約 100ms,ALB 約 400 ms)
- Gateway Load Balancer (GWLB)
- 在 Layer3 運作 - IP Packet
Sticky Sessions (Session Affinity)
透過 cookie ,讓使用者就算透過 load balancer 也能夠暫時固定連到同一台機器,這方法適用於 CLB & ALB。
cookie 又分成了
- Application-based cookie
- Custom cookie (generated from target)
- Application cookie (generated from load balancer)
- Duration-based cookie (generated from load balancer)
Cross-Zone Load Balancing
假設 Load Balancer 對應到兩個 AZ,這些 AZ 底下的 instance 數量並不一樣,但實際被分配到的機率是一樣的。
如果沒有使用這個功能,會根據 AZ 底下的 instance 數量來決定被分配到的機率。
Connection Draining
當 instance 運行不佳或是被取消註冊,設定此功能會將進行中請求處理完畢,並且避免新的請求,draining 時間可以是 1s ~ 3600s (預設是 300s)。 針對不同類型的 Load Balancer 而有不同的名稱
- Connection Draining - CLB
- Deregistration Delay - ALB & NLB
Auto Scaling Group
設定 auto scaling 可以讓 instance 隨著負載的高低而 scale out/in,根據 ASG 的種類可以分為
- Target Tracking Scaling
- Simple/Step Scaling
- Scheduled Actions
- Predictive Scaling