AWS Load Balance 基本概念介紹

Chi-Hsuan Huang
3 min readMay 16, 2017

--

什麼是負載平衡器(Load Balancer)?

負載平衡器提供了類似是路由器的功能,能幫你自動分配新進來的請求要導到哪一台 Server。

為什麼你需要它?

假設你原本只有開單台機器運行一個網站,可是某一天你的服務突然撐不住了,這時候你可以重買一台規格比較好的(Scale Up),也可以買一台比較便宜差不多的然後兩台分散(Scale Out)。

可是若是你要開多台分散,就會遇到一個問題,你的網站只有一個網址,要怎麼自動分散導到這兩台呢?

這個時候通常你就需要負載平衡器(Load Balancer)了!

目前 AWS 上 Load Balancer 主要分為兩種類型:

  1. Classic Load Balancer (ELB)
Classic Load Balancer

2. Application Load Balancer (ALB、ELBv2)

Application Load Balancer

這兩種類型最主要的應用差別就是如架構圖所示,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 中,還有兩個概念會常常看到:

ALB 的詳細架構 http://docs.aws.amazon.com/elasticloadbalancing/latest/application/images/component_architecture.png
  1. Listener:通常用來定義 forwards 請求的規則。

也就是說 Load Balancer 進來端點的Protocol、port Listener 負責這邊要怎麼對應到 EC2 Group的 Protocol、port

2. Health Check:用來確認 EC2 還活著,Load Balancer 才知道可以送請求過去。

若有興趣暸解更多,可以參考 Amazon Web Services 這份 Slide

--

--

Chi-Hsuan Huang

Back to The Mind: Follow Your Heart. Co-Founder at Taiwanstat; Full Stack Developer. https://github.com/chihsuan