昨天有提到,ECS可以因應需求進行Task數量的擴充/縮減,
那我要怎麼讓流量導向不同的Task呢?還是要等一個Task的負載全滿後,流量才會導入下個Task嗎?
一般來說,在有多個Server的情況下,會透過負載平衡器來進行分流。
以ECS來說通常是使用ELB(Elastic Load Balancing)。
ELB分為以下四種:
以這次的架構來說,我們會採用ALB來串接ECS,
首先要說明ALB如何串接。
Request進入ALB後,會依據他是HTTP或HTTPS以及Port來決定會導向哪個Listener
接著會依據Request的Path來決定要導向哪個Target Group,若Target Group內有多個Task,則ALB會自動分配流量到不同的Task內。
以下圖的範例來說。如果我的Request是
http://example-alb-123456789.ap-northeast-1.elb.amazonaws.com/IThome/test
會導向哪裡呢?
答案是ECS的其中一個Task (至於是哪個Task則要看ALB心情了)
為什麼答案是ECS?
就需要來拆解Request了,
首先他是http的請求,所以Load Balancer會將它分派給Listen1。
再來example-alb-123456789.ap-northeast-1.elb.amazonaws.com是為了範例所寫的ALB DNS,是讓外不能夠連到這個ALB的位置
接著其後接了 /IThome/ 則符合了Listener1的Rule1 (*表示萬用字元),因此會導向ECS。
看到這邊,在這張圖中,如果我想要導向EC2的話,Request應該會是什麼呢?
大家應該已經知道答案了吧
以上是ALB的原理,以及如何串接ECS。
明天會說明部署ECS的方式。