AdSense

網頁

2023/6/14

AWS 建立Load Balancer (Application Load Balancer)

在AWS console建立Application Load Balancer(負載平衡器)。


事前要求

參考「AWS EC2 建立instance」建立EC2 instance,所在的VPC是region的detault VPC,套用的也是VPC預設的security group。

參考「AWS EC2 安裝Docker Nginx」在建立的EC2 instance中安裝nginx,用來回應load balancer對target group發送的health check請求。

參考「AWS 建立Security Group」建立security group。為建立load balancer時要套用的security group。

參考「AWS 建立Target Group (instance type)」建立target group。Load balancer的listner要路由的target group。


建立Load Balancer

登入AWS console,選擇服務區域(region)。

在上方搜尋欄搜尋"EC2",點選[EC2]進入EC2 dashboard。



在EC2左側選單的[Load Balancing]點選[Load Balancers]進入[Load balacers groups]頁面。



在[Compare and select load balancer type]頁面,點選[Application Load Balancer]下面的[Create]來建立Application Load Balancer。




在[Create Application Load Balancer]頁面的[Basic configuration]區塊,
[Load balancer name]輸入load balancer的名稱;
[Scheme]選擇[Internet-facing],即load balancer是從網際網路接收請求;
[IP address type]選擇[IPv4]。



[Network mapping]區塊,選擇要路由的VPC ID,即下面要路由的instance所在的至少兩個Availibility Zone的subnet。



[Security groups]區塊,
[Security groups]選擇建立的security group。



[Listeners and routing]區塊,
在[Listener]區塊的[Portocol]選擇[HTTP];[Port]填入80;
[Default action]選擇target group。



完成以上設定後按最下方的[Create load balancer]完成建立。



返回[Load balancers]頁面,點選建立好的application load balancer進入詳細頁面。
[DNS name]為外部發送請求給load balancer的位址。



詳細頁面下方的[Listeners]頁籤可查看設定的listener。點選[Rules]的連結可開啟listener的頁面。



在listner頁面的[Rule]頁籤可看到設定的規則,目前只有一個預設的規則,即請求會轉發(foward)到設定的target group。



詳細頁面下方的[Network mapping]頁籤可查看load balancer路由的可用區域(Availability Zone)及subnet。



詳細頁面下方的[Security]頁籤可查看load balancer套用的security group。



架構圖如下。




Target group health status

Load balancer建立後,則其listner會向路由的target group進行health check並顯示結果在target group詳細頁面[Targets]頁籤中target的[Health status]。

範例設定好後target group的instance的[Health status]為[unhealthy],原因是[Request time out],也就是load balancer依照target group設定的health check所發送的health check請求至target時,發生逾時錯誤,也就是無回應。



這是因為instance的security group的inbound rules中未允許load balancer送來的請求(load balancer與target instance套用不同的security group),所以下面在instance的security group的inbound rules加入load balancer的security group的HTTP 80 port規則即可成功讓load balancer的請求通過。



修改好instance的security group inbound rules後,回到target group查看可看到target instance的health status變成了[health]。



要注意的是,load balancer發給target group的health check請求是發送到target group設定的health check protocol及path,也就是說target instance中要有可接收並回應該protocal及path的web server,否則load balancer仍會因為得不到回應而使target instance的heanth status為unhealthy。


測試

在瀏覽器網址列貼上http://[LOAD_BALANCER_DNS_NAME]:80可轉導至Target Group中的target instance的nginx頁面。[LOAD_BALANCER_DNS_NAME]為load balancer的[DNS name],本範例為demo-loadbalancer-1-1942646727.ap-northeast-1.elb.amazonaws.com,所以是http://demo-loadbalancer-1-1942646727.ap-northeast-1.elb.amazonaws.com:80




沒有留言:

AdSense