0%

AWS 學習紀錄 Part4 – Scalability

前言

這篇文章是出自於線上課程 Ultimate AWS Certified Solutions Architect Associate 的所記錄的筆記。

本文

Scalability

Scalability 代表是 APP 藉由適應來處理更高的負載,scalability 可以分成兩種類型

  1. Vertical Scalability
  2. 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

  1. Classic Load Balancer (CLB)
  2. Application Load Balancer (ALB)
  3. Network Load Balancer (NLB)
    • 每個 AZ 都有一個 static IP,並且支援指定 elastic IP
    • 透過 TCP/UDP (Layer 4) 來轉發流量
    • 可以處理百萬請求/秒
    • 更低的延遲(約 100ms,ALB 約 400 ms)
  4. Gateway Load Balancer (GWLB)
    • 在 Layer3 運作 - IP Packet

Sticky Sessions (Session Affinity)

透過 cookie ,讓使用者就算透過 load balancer 也能夠暫時固定連到同一台機器,這方法適用於 CLB & ALB。

cookie 又分成了

  1. Application-based cookie
    • Custom cookie (generated from target)
    • Application cookie (generated from load balancer)
  2. Duration-based cookie (generated from load balancer)

Cross-Zone Load Balancing

假設 Load Balancer 對應到兩個 AZ,這些 AZ 底下的 instance 數量並不一樣,但實際被分配到的機率是一樣的。

Elastic Load Balancing 的运作- Elastic Load Balancing

如果沒有使用這個功能,會根據 AZ 底下的 instance 數量來決定被分配到的機率。


                    停用跨區域負載平衡時

Connection Draining

當 instance 運行不佳或是被取消註冊,設定此功能會將進行中請求處理完畢,並且避免新的請求,draining 時間可以是 1s ~ 3600s (預設是 300s)。 針對不同類型的 Load Balancer 而有不同的名稱

  1. Connection Draining - CLB
  2. Deregistration Delay - ALB & NLB

Auto Scaling Group

設定 auto scaling 可以讓 instance 隨著負載的高低而 scale out/in,根據 ASG 的種類可以分為

  1. Target Tracking Scaling
  2. Simple/Step Scaling
  3. Scheduled Actions
  4. Predictive Scaling