2012年8月28日 星期二

使用Auto-Scale

撰寫︰2012/8/29 02:32
次數︰1
一、前言
亞馬遜因為擁有自動調整伺服器需求的功能,
因此在近年來成為灸手可熱的選擇之一。

最近在研究CloudWatch + AutoScale來自動依狀況自動增加或減少EC2開啟的機臺,
想要做到能夠自動調節+省錢,
而這件事也真的辦到了。

二、說明
CloudWatch稱為雲監控,
亞馬遜將他們大部份的服務,
提供一個還蠻完善的機臺監控服務。

我可以利用亞馬遜提供的tool工具,
寫出一套適合自己的腳本,
每5分鐘從EC2主機print出記憶體用量的log給CloudWatch,
然後再在CloudWatch裡做ALARM監聽,
只要記憶體報告跟我說現在的記憶體用量超過總量的30%(我是用m1.small型EC2),
就寄一封EMAIL給我,
並幫我自動開一臺機臺分擔流量。

因為要能分擔流量,
所以在製作自動增設機臺的腳本時,
要用到ELB(流量負載平衡)的概念。

ELB(流量負載平衡)提供了多機臺一統的概念,
只要用戶連結至ELB的End Point(對外連結點),
ELB就會馬上將其名下擁有的EC2們做偵測,
並將流量分派到任一健康的EC2機臺。

三、Auto Scale的腳本製作法
Auto Scale由於仍然需要用Terminal去執行,
因此必須先將Auto Scale tool安裝且設定好環境變數。

之後就做一堆事,
這裡將我寫好的Auto Scale腳本列出來。

欲執行以下指令時,
需先將做好Credential的設定。
如果你操作tool的環境是Window,則下︰
C:\> set AWS_CREDENTIAL_FILE=<PATH> 

[建立Launch-Config檔]
寫一個產出基本執行腳本,名稱定為MsLaunchConfig(可自訂),image-id找一個你喜歡的AMI(當然也可以用自己安裝設定後的EC2製成的AMI,這樣就能做出一臺一模一樣的主機了。)
region最好是指定一下,因為預設是在美國。
key pair也設定一下,這樣子才能夠有登入並修改主機的權限。
as-create-launch-config MsLaunchConfig --image-id ami-9c8ccdce(你要備份的AMI_ID) --instance-type m1.small --region ap-southeast-1 --group quicklaunch-1 --key jsp

[建立Auto-scale Group]
製作一個Auto scale群組。
在這邊設定一次開臺上限就是1,然後開出來的機臺要放進我創建的mslb這個負載平衡器(load balance)裡。
as-create-auto-scaling-group MsGroup --availability-zones ap-southeast-1b --launch-configuration MsLaunchConfig --min-size 1 --max-size 1 --load-balancers mslb --region ap-southeast-1

[加開1臺EC2 Policy(政策)]
告訴MsGroup一旦Auto Scale的+1臺EC2條款被啟動,
一次就是新開一臺。
as-put-scaling-policy MsScaleUpPolicy --auto-scaling-group  MsGroup --adjustment 1 --type ChangeInCapacity --cooldown 300 --region ap-southeast-1

[關閉1臺EC2 Policy(政策)]
CloudWatch一旦觸發到一個我們設定的狀態(如主要的EC2記憶體沒用那麼兇了),
就幫我關掉1臺EC2。
as-put-scaling-policy MsScaleDownPolicy --auto-scaling-group  MsGroup "--adjustment=-1" --type ChangeInCapacity --cooldown 300 --region ap-southeast-1

註︰
亞馬遜Document裡提到,
一個正常的Auto scale腳本,
應該要有2個Policy,
一個是啟動,
另一個則是關閉。

如果要換成別的AMI做Auto Scale,
目前還沒有update等相關指令,
只能用刪除的方式將設定檔刪除,
再重新建立一組設定資料︰
先刪除Group,再刪Config檔。
[刪除Auto-scale Group]
as-delete-auto-scaling-group MsGroup --force-delete --region ap-southeast-1

[刪除Launch-Config檔]
因為auto scale tool沒有提供修改的功能,
因此如果值設錯了,就得刪除再重新新增了。
as-delete-launch-config MsLaunchConfig --region ap-southeast-1

沒有留言:

張貼留言