關於Auto Scaling的建置,我們預計會花兩到三天的時間來做比較詳細說明。
參考Udemy Acloudguru的課程內容中,我們提出下圖的架構來設計AutoScaling。從外而來的流量經過Route53後,會分配至兩個Node,Write Node以及Read Node。Write Node是我們自己開發網站的機器所在地,我們會在這個Node上進行程式碼的編寫。Read Node的話,則是用於提供其他使用者讀取網站的服務。為了讓Read Node的內容可以同步於Write Node,我們要先做兩件事情,第一件事情是把Write Node的Image先備份下來給Read Node使用,並讓這個Image可以持續的透過S3去索取同步化的更新內容;其次則是讓Write Node把更新的內容持續上傳至S3上(write node--> S3 --> Read Node)。以下我們依序說明。
12-1設定Read Node
在Write Node中,我們需要先設定一個可以提供給Read Node使用的Image。進入Write Node後,第一步是先設定Crontab,讓Read Node機器可以持續透過S3,將已更新的檔案從S3拉至Read Node機器上。
cd /etc
nano crontab
在Crontab編輯。指令當中的--delete表示當我們從S3刪除資料時,EC2上的資料也會同步更新被刪除。
*/1 * * * * root aws s3 sync --delete
s3://wp-code-seoul /var/www/html
完成Crontab編輯後,重啟服務,確定更新生效。
service crond restart
來S3上測試看看。在剛剛設定的Bucket下,新增一個txt檔。
接著回到EC2的/var/www/html路徑下,看看new_test_file.txt是否存在。如下圖,可以發現檔案已經成功的被同步更新至EC2所指定的路徑下。好的,這代表我們剛剛的設定成功了。
確定後續要運作於Read Node上的一切都沒問題後,就可以複製Write Node的Image(snapshot)。怎麼做snapshot呢?如下,進入EC2點選Write Node所屬的機器後,在Actions下拉選項中,選Image and templates,並接著選Create image。
進入後,開始編輯Image名稱後,選擇default的EBS(儲存空間),即可按下建立Image。
在EC2服務的左邊欄位頁面,按下AMI,就看到剛建好的Image。
我們明天接著繼續看如何設置和測試Write Node。 : )