EC2裏面有個很重要的功能就是Elastic Load Balancer,配合Auto Scaling和RDS的Multip-AZ使用,可以實現非常經濟高效的高可用的結構。
我們先看看最基本的一個ELB結構。ELB根據DNS以輪換的方式對用戶的請求實現數據分流和高可用。
以下的實驗設計來自amazon的企業培訓教案(豆子在網上找到的,還不錯)。這裏我會創建2個Web Server,並通過user data自動配置bootstrap的shell腳本。這樣的好處是我不需要在搭建完服務器之後再手動的配置一遍了。
創建EC2的實例過程很簡單,在第三步的時候需要在高級裏面添加一些Shell腳本。該命令會從指定的url下載一個sh腳本並執行
這個sh的內容就是自動安裝LAMP的相關程序,並在apache的目錄下解壓預先配置的一些php文件
虛擬機創建好了
登錄看看腳本執行沒有,可以看見,examplefiles.zip已經解壓,這樣當我們打開該服務器的公網地址或者DNS的時候,會自動加載index.php 文件,並顯示一些我們希望看見的數據作爲對比
看看index.php文件是什麼內容
在瀏覽器上面輸入EC2的DNS以後可以看見該虛擬機的實例號,AZ區域和CPU的負荷
現在,我們來創建一個ELB
輸入名字和子網,這裏我們只需要簡單的80端口
Ping Protocol是用來做健康檢查的,每隔5秒,會自動Ping 80端口確認,注意Ping Path 我指向的是/,這個會指向web server的默認的主頁進行查詢, 不管主頁是叫做index.html或者其他任何名字
配置Security group
把我們之前配置的2個Web Server加入ELB
最後確認一下即可
這樣就創建好了。注意他的Port Configuration,ELB有點類似代理服務器或者NAT服務器,所以80端口進入他,並轉發到集羣裏服務器的80端口
查看一下描述,因爲他的名字很長,可以通過CNAME來創建一個簡單好記的名字。
狀態表面已經是InService,準備就緒
最後來測試一下,輸入ELB的URL,每次刷新,都會指向不同的Web Server實現分流
我們還可以通過cloudwatch來檢測ELB的Metric參數
這樣一個基本的ELB就實現了。
下一篇博客我們來看看如何配合Auto Scaling實現在不同負載的情況下,虛擬機如何動態的自動創建和刪除。