在各家的雲端上建置IaaS的部份VM皆可以選擇不同的Instance Type,當然我們可以在不同的時間點進行切換,比如當有節日或活動要進行時,我們可以彈性的調整Instance Type,但目前在AWS EC2上有不同的選擇,您可以透過Auto Scaling與Load Balance的功能整合,藉以達到快速的Scale Out,來更合適的完成公司的商業需求。
建置方式:
1、建立環境所需的影像檔
1-1 先針對你的網站設計好需要的網頁與功能,然後制作成一個Image.
1-2 方法很簡單,請到EC2 -> Instances -> 選擇你要制作的Instance -> Image -> Create Image
輸入Image的名稱與預設的Disk
送出Create Image的請求,需至下一步驟進行確認是否已建立完成。
1-3 建立完成後,請到Images -> AMIS -> 確認Image是否已建立完成 。
2、建立Load Balancing
由於在後續上會有多個Instance Type自動進行建立,而且也需要進行負載平衡,所以此步驟我們建立一個Load Balanc er進行。
2-1 撰擇Load Balancing -> Load Balancers -> Create Load Balancer
2-2 在選擇Load Balancer時有三種項目可能選擇,這三種的選擇上看你的應用程式類型選擇Application Load Balancer或Network Load Balancer,基本上不建議再選擇第三種傳統模式,此部份我們選擇第二種高效能的Network Load Balancer進行。
2-3 決定NLB的名稱與開放的Port、如果您的網站有使用HTTPS的話,請將443也一同加入。
2-4 指定在Region中特定的AZ(Availability Zones)區域。
2-5 定義Target Group去指定特定的Instance。
2-6 指定特定的Instance到此Target Group中,但由於我們後續會由Auto Scaling自行啟動,所以此處不進行手動加入。
2-7 建立完成。
3、建立Auto Scaling
3-1 建立 Auto Scaling Lunch Configuration
3-1-1 選擇Auto Scaling -> Launch Configuration -> 建立Auto Scaling
3-1-2 進入後,頁面說明會有二個步驗,分別是建立設定檔與群組的部份,首先我們就先建立設定檔的動作。
3-1-3 選擇我們在步驟1-3之中所建立的Image。
3-1-4 選擇後續自動延伸時所建立的Instance Type
3-1-5 輸入Launch Configuration的名稱,建議也可以勾選透過CloudWatch進行監控。
PS:由於啟用CloudWatch進行監控時可能會有額外的費用產生,所以再請注意。
3-1-6 選擇啟動後的Instance上的Disk大小。
3-1-7 設定Security Group,此部份我只有開啟80(HTTP)與3389(RDP)二個,當然你也可以將443(HTTPS)加入,由於我之前已有設定的Security Group符合,所以我就將之前的加入。
3-1-8 再次檢示Launch Configuration的設定並確認建立。
3-1-9 設定你key pair的檔案,此處由於之前也設定過了,所以可以使用相同的檔案即可。
3-2 建立Auto Scaling Group
3-2-1 輸入Group Name與預計進行Scaling的網路區段,你可以將多個區段加入,藉以避免因單一區段發生問題時,整體無法運作,此區請至少加入一個Network與Subnet。
在進階設定的部份,請將第2步驟中建立的NLB加入,並將請將Health Check Type設定為預設的EC2,請為這樣我們就可以透過CPU與或網路流量來設定條件,藉以達到自動延伸的功能。
3-2-2 此部份由於我們要模擬當使用者過多時,CPU使用率過高,造成網站回應過慢,所以我先設定為1-5個Instance,當使用率超過50%的時候,就自動進行Scal Out。
3-2-3 設定警告通知,當遇到勾選的事件產生時,即會自動寄出通知。
3-2-4 最後檢示Auto Scaling Group的設定
3-2-5 建立完成
3-3 測試網站連結
3-3-1 建立完成後,我們可以到Auto Scaling -> Auto Scaling Groups 確認目前已自動啟動的Instance為何。
3-3-2 接下來我們同樣的透過Load Balancer的DNS來連線到網站,確認是否可以正常的連線。
請到Load Balancing -> Load Balancers -> 已建立的NLB -> Description中,即可看到。
3-3-3 測過此網址進行確認是否可以正常的連線。
4-1 由於我們在3-2-2之中,設定Auto Scaling的規則為CPU使用率超過50%,所以最快的方式我使用了測試軟體(Intel Brun Test)去直接的快速提高CPU的使用率。
4-2 經過一段時間,系統就會自動再產生一個Instance,然後自動加入NLB中。
4-3 最後,由於CPU 使用率持續不斷的增加,所以Instance數量成長到我設定的最大值。
4-4 Instance 的成長區間圖
4-5 我透過NLB的DNS網址進行連結測試,你會發現五個Instance皆會輪序的進行訪問,當然如果你要確認他有連結到那一台Instance的話,你可以逐一連到Instance中,然後修改頁面即可確認。上述的介紹,你可以透過Auto Scaling與Elastic Load Balancing的整合,藉以快速的達到Scale Out的需求,也可以達到效益的最佳化,當然此部份後續仍有其他可以研究的部份,如程式的修改與部署的部份,我們將會在後續的章節繼續再跟大家介紹,謝謝。
關鍵字:
Amazon EC2、Elastic Load Balancing、Auto Scaling、AWS
參考連結:
Getting Started with Auto Scaling
http://docs.aws.amazon.com/autoscaling/latest/userguide/GettingStartedTutorial.html
Elastic Load Balancing
https://aws.amazon.com/tw/elasticloadbalancing/
What Is Elastic Load Balancing?
http://docs.aws.amazon.com/elasticloadbalancing/latest/userguide/what-is-load-balancing.html