AWS Load Balance 基本概念介紹
什麼是負載平衡器(Load Balancer)?
負載平衡器提供了類似是路由器的功能,能幫你自動分配新進來的請求要導到哪一台 Server。
為什麼你需要它?
假設你原本只有開單台機器運行一個網站,可是某一天你的服務突然撐不住了,這時候你可以重買一台規格比較好的(Scale Up),也可以買一台比較便宜差不多的然後兩台分散(Scale Out)。
可是若是你要開多台分散,就會遇到一個問題,你的網站只有一個網址,要怎麼自動分散導到這兩台呢?
這個時候通常你就需要負載平衡器(Load Balancer)了!
而目前 AWS 上 Load Balancer 主要分為兩種類型:
- Classic Load Balancer (ELB)
2. Application Load Balancer (ALB、ELBv2) 。
這兩種類型最主要的應用差別就是如架構圖所示,ALB 可以依照不同的 Rule 分配到不同內部的 EC2 Group,提供了更有彈性的機制。
然而,深入來看其實 ELB 是使用網路層 (OSI) model的協定,而 ALB 是使用應用層 (OSI) model 的協定,也就是說 ALB 可以提供複雜的應用情境,例如:ALB 可以支援 Container-based 應用的附載平衡 / HTTP2 / Websocket…等。
所以一般情況下我們怎麼選擇呢?
AWS 提供的的建議是:
對於 TCP/SSL 或是 EC2 Classic 的應用使用 ELB,其他的情境就使用 ALB。
另外我們在 Load Balance 中,還有兩個概念會常常看到:
- Listener:通常用來定義 forwards 請求的規則。
也就是說 Load Balancer 進來端點的Protocol、port Listener 負責這邊要怎麼對應到 EC2 Group的 Protocol、port
2. Health Check:用來確認 EC2 還活著,Load Balancer 才知道可以送請求過去。
若有興趣暸解更多,可以參考 Amazon Web Services 這份 Slide