Azure省錢大作戰 - 排程讓Azure把虛擬機關機及調較VM大小
上個月把自己的MSDN Azure帳號的$100美元玩完, 令到測試環境有好幾天不能開機
所以做了點動作令上面的VM在非上班時間排程關機, 這樣就省下最少60%成本,
這篇文章雖然要打一點指令, 不過實在滿容易的, 但省下的錢用來買個紅米也不錯吧!
另一個角度來說就是能開更多的VM來測試了, 而我是使用Azure Powershell來達成這個目的的
要使用Azure Powershell, 你先要安裝Azure的Powershell套件
http://msdn.microsoft.com/en-us/library/jj156055.aspx
下載後, 開啟專屬的Windows Azure Powershell
而其實Powershell 3.0是可以自動在使用某些Add-On套件時自動Import所屬模組的
第一個指令我們要打 Get-AzurePublishSettingFile
鍵入後IE會自動開啟, 我們要登入Azure讓它把設定下載回來
IE會要求儲存一個xxxxx.publishsettings檔案
及後我們鍵入
Import-AzurePublishSettingsFile –PublishSettingsFile ‘File Path.publishsettings’
結果會如下顯示出你的帳號資料, 就等於電腦已經能以你的帳號連接Azure了
你可以試試鍵入 Get-AzureVM 來看看見不見到你建立的VM
如果要把某台VM關機, 指令是
Stop-AzureVM –ServiceName Servicename –Name VMname –Force
如果不打-Force 在關掉Provision Group最後一台VM時會出現錯誤而停止
指令會一直執行到工作完結, 再次查看 Get-AzureVM知道APP02已經關機了
測試好指令運作無誤, 我們就可以把它排程進行來省錢嚕
開啟Task Scheduler, 建立新工作
給這個工作一個名稱, 我試試把另一台VM關機
轉Trigger頁, 選擇每天(Daily)執行, 時間就自己決定了
到Actions頁, 動作是Start a Program, 把我們剛剛進行過的指令拆成兩部份, 而這次我會把另一台VM關機
Program是Powershell.exe , 而Arguments就是–File “Powershell script file path”
Start in 在Windows Server 2012上是 C:\Windows\SysWOW64\WindowsPowerShell\v1.0 (請自行確認)
按確認, 應該顯示類似這樣的畫面, 再按確認
我有試過在Arguement裡直接跑Powershell命令, 但得來的結果不太穩定, 放入.ps1裡跑成功率好像高很多
試跑一次, 右擊工作, 選RUN
待工作完成, 我們又試打一下Get-AzureVM, 確認排程工作順利完成我們預期效果
能把VM關機, 下一步我們要試試如果把VM開機, 而指令是
Start-AzureVM –ServiceName servicename –Name VMName
跟停機的指令非常類似
進階一點點, 假如我們要把所有帳號內已經停止的VM一次過開機, 可以這樣
Get-AzureVM | Where-Object {$_.Status –eq “StoppedDeallocated”} | Start-AzureVM
先以Get-AzureVM找出所有VM, 找出所有狀況為停止的VM, 再把它們傳遞給Start-AzureVM來開機
如果我們要把全部VM關機, 那情況也差不多, 不過最後的指令轉變為Stop-AzureVM, 而且找的是ReadyRole, 即開機中的VM
Get-AzureVM | Where-Object {$_.Status –eq “ReadyRole”} | Stop-AzureVM–Force
這樣下來每天交級電腦排程來開機關機, 就可以把運行Azure的成本降低很多了
不過或許某些VM並不能真的關機, 要一直運作, 但我們又想省錢,
那我們先看看Azure的VM基本收費表, 每一級的運作成本可以相差好遠啊
例如Extra Small跟Small 就是USD 0.074 / 0.018, 是4倍價錢, 所以我們要設法在非繁忙時間把VM變得小一些
以APP02做例子, 原本它是一台Small級數的VM
要改變它的大小, 首先我們要確認VM已經停機了, 這個我們已經學過怎樣做
再來改變VM大小 (例如變成Extra Small的話) 的指令是
Get-AzureVM –ServiceName servicename –Name VMname | Set-AzureVMSize “size”| Update-AzureVM
它會進行直到指令結束
完成後再次檢查, 它已經變成特小級的VM了, 把他開機, 在非繁忙時間就幫我節省75%成本了!