撰寫︰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
沒有留言:
張貼留言