AWS 設定Load Balancer 教學(含SSL憑證)

AWS的負載平衡Load Balancer服務可以讓我們很輕鬆就架好環境, 而且即使您只有一台EC2主機也是可以設的喔! 筆者也只有一台EC2 instance當VPN主機在使用. 以下就分享如何架ELB吧

1.首先,  到EC2的管理介面, 左選單=>Load Balancing->Load Balancers , 就可以看以下畫面,
目前是未申請, 所右邊畫面列表是空的. 此時請按"Create Load Balancer"

bbb1

2.您會看到以下的選擇畫面:
1.http/https (application ) => 可針對hostname , 或 80, 443 port 做導向
2.TCP (network) =>只對應IP位址

如果你有多個站台時, 建議可選(http/https), 可以針對不用的domain, 指向不同的load balancing主機.

筆者以下是選http/https方案做教學

bbb2

3. Step1是先取一個名稱, 你可以自己取一個好辨識的, 如: blog-LB 或 Develop-LB ,可以看出來是哪個站的LB.
Scheme 選 internet-facing : 這是對外的網路用的, 也是我們一般官網使用.
下方的 load balancer protocal 預設是80port ,(後面會教如何新增443port)
直接按一下步即可

bbb3

4. 接下來下面Avalibility Zones是選擇機房位置, 請選相同地區的, 否則會無法Load Balance喔.
至少要選二個, 然後按下一步.
bbb4

5.按下一步, (這裡會提示你還沒設https, 先略過)

bbb5

6. 接下來要選一下security groups, 請選跟你目前EC2使用的那一個就可以了. 或您要另外新增也可以. 筆者是選之前就設好的security groups

bbb6

7.接下來, 下圖設定Routing, 這裡先幫Target Group取個名字, 現在是80port, 所以取如: WEB-80

Health checks 可以指定你主機的預設頁面, 如果是index.html, 就在Path 輸入 /index.html

這個用意是ELB會自動呼叫此頁面是否200, 若404就會認為掛點, 會把流量導到另一台主機.

經筆者實測, 只有一台時, 以下沒指定health check,流量仍會導到EC2主機.

心得分享:
 Health checks設定只是供ELB判斷目前線上的主機有哪些, 並把流量平均分配到線上主機中. 
但如果只有一台或所有主機都offline時, ELB仍會把流量導到其中一台. 並不會回應網頁說找不到主機喔!! 所以如果您不用太在意unhealth這個狀態.  但如果可以healthy當然是最好. 
ELB設定邏輯清楚了就好.

然後按下一步.
bbb7

8.接下來 , 先在下方勾一個instance, 然後按藍色:add to registered on port 80,
上方會出現一條instance 才對喔. 然後按下一頁bbb8

9.此時會讓你確認所有設定, 如果您都照前面步驟, 就直接按下一步即可Create 建立.
bbb9

10. 恭喜你建立成功!bbb10

11.接下來回到列表, 你會看到剛建立的一筆LB01, 下方是Listener, 這裡面可以設定SSL, 因為剛才我們只建立http 80 port,所以沒有地方可以選 AWS ACM SSL憑證
(請參考我另一篇:https://liangdaddy.com/2018/10/17/aws-%E5%85%8D%E8%B2%BBssl%E6%86%91%E8%AD%89%E7%94%B3%E8%AB%8B%E6%95%99%E5%AD%B8%E6%9C%89%E6%A2%9D%E4%BB%B6%E7%9A%84/)
bbbx1

12.請按上圖中藍色"Add listener",看到如下畫面,
a. 下拉 https , 443
B. add action => Forward to 您設好的target group 如: GP01,
(若沒有可先跳到步驟13去建一個443port的Target Group, 再回來這設定)
C.security policy預設即可
D.在Default SSL certificate 選您在ACM申請好的免費憑證, 如下 *.liangdaddy.com-….

bbbx

13.選到左選單Target Goups (Load Balancers 下面), 按"create target group "
PS.    目前為止教學只有開http 80 port, 所以下圖只看到一個GP01 => port 80
bbbx2

14. 請取一個容易識別的名稱如: for-SSL, HTTPS, 443, instance,
Health check settings 可參考步驟7. 或直接按"Create"
bbbx3

15.此時列表就可以看到有二筆Target Group , 80 & 443,
PS. 也可以把port 80 & 443 設在同一筆Target Group裡,
但如果你的程式碼裡有判斷http強制轉https時, 會可能導致無窮loop ,
因為筆者遇過這個問題, 所以建議分開建立,
日後你就不會因為被要求http轉https時, 再度遇到有這樣的問題.
bbbx4
16. 如果你剛在第12步遇到沒有443 target group可以選時, 此時就可以繼續回頭設定SSL了.
請到步驟12. 在下面按Add listener, 會看到如下畫面, (同步驟12),
在最下面選好ACM的SSL即可大功告成!
bbbx5
17. 完成,
你在Load Balaners裡應該看到下面, 上面有一筆LB01的設定, 下面listener有 80& 443二筆.
bbbx6

以上就是如何在AWS架Load Balancer及AWS免費SSL設定教學. End

 

One comment

發表迴響

在下方填入你的資料或按右方圖示以社群網站登入:

WordPress.com 標誌

您的留言將使用 WordPress.com 帳號。 登出 /  變更 )

Google photo

您的留言將使用 Google 帳號。 登出 /  變更 )

Twitter picture

您的留言將使用 Twitter 帳號。 登出 /  變更 )

Facebook照片

您的留言將使用 Facebook 帳號。 登出 /  變更 )

連結到 %s

This site uses Akismet to reduce spam. Learn how your comment data is processed.