(译)如何用命令行在windows Azure上安装负载平衡的web Farm虚拟机(linux或其他)...
我一哥們考慮把他的一些基于linux的網站移到Azure上。如果你現在的網站是node.js,?
ASP,ASP.NET,或PHP做的,使用Azure web站點是最容易的。我會在這篇文章里向你展示如何
在幾分鐘內用Git安裝Azure web站點。它們對你隱藏了底層操作系統,自動更新,易擴展,
而且共享硬盤。
然而,他喜歡虛擬機和虛擬機賦予他的控制,另外他可以到處運行,移動東西,控制他的世
界。
我會在Azure上使用開源的(GitHub)跨平臺CLI工具(命令行接口)。如果你有node
package manager你可以使用“npm install azure-cli--global”命令導入你的簽名。你也
可以從www.windowsazure.com下載安裝命令行工具。
設立一個linux虛擬機
我們會用門戶創建一個初步的虛擬機(我會向你展示如何在一分鐘內用命令行做到)。這個
虛擬機會被用來設立一個虛擬機鏡像模版。我要創建一個Ubuntu 13.04服務器,然后安裝
Apache和PHP。然后我就獲得了一個我現在安裝的機器的通用的鏡像,可以被拷貝添加到farm
。這個鏡像將會在Azure 門戶的“我的鏡像”里顯示。
注意:在Open Tech VM Depot上有個很棒的社區驅動的關于準備虛擬機鏡像的類別。這像是
最值得保存的Azure秘密。我待會兒會在上面發布,但這確實值得深入查看一下。
從Azure門戶開始,我開始新建|虛擬機|然后選擇Ubuntu Server 13.04。
名字不重要,但我要配置一個用戶名和密碼(或者使用SSH密鑰):
注意我要創建一個獨立的虛擬機了:
貼士:如果我根本不想用門戶創建虛擬機,我甚至可以通過命令行編程來發現虛擬機鏡像,
然后創建虛擬機實例。使用“azure vm list”命令能幫我獲取到可選取的虛擬機列表。我想
要的那個Ubuntu是“Ubuntu-13_04-amd64-server-20130501-en-us-30GB”(名字里帶了個
guid)。所以我只要鍵入“azure vm create MyDNSName ImageName [options]”處理他們。
一旦這個linux虛擬機啟動,我會通過SSH進入。你可以看到Azure已經為虛擬機內部的SSH端
口22隨機匹配了一個高數值的公共端口。
我用SSH進去。我將要添加Apache,PHP,重啟apache,然后添加一個test.php,這會顯示PHP
和當前的IP地址都正常工作,如此我就知道哪臺機器處理的請求。
我將添加一個 test.php
然后
加入
接著我將退出SSH。虛擬機默認的被鎖上了,所以為了測試這個我要添加一個終端。我可以通
過門戶來做,但我更想看看可否通過Azure命令行來做。
運行vm endpoint create來匹配外部的80端口到內部的80端口。
這時候我可以點擊mylinuxtemplate.cloudapp.net:80/test.php看是否工作。
酷。這樣我已經得到了我想要的linux虛擬機模版。現在我想把它做成鏡像,這樣就可以做的
更多。這個linux上的“waagent”和windows上的“sysprep”一樣。
通過SSH會話,運行waagent -deprovision。
windows用戶:如果你是windows用戶,你可以用你喜歡的方式安裝windows,然后運
行%windir%\system32\sysprep.exe,獲得一個虛擬機的鏡像然后像這篇博文里一樣操作。
我可以關機并從門戶獲得一個鏡像,但是再一次,今天我們要玩命令行。注意,關機可能要
花一點時間。
capture命令會刪除虛擬機。記住這只是個模版。然而,我有一個可重用的鏡像!我可以看到
azure虛擬機列表里的鏡像都可用,包括用戶鏡像和gallery鏡像。
注意:當你刪除虛擬機,你只是刪除了虛擬機的配置。你沒有刪除相關的硬盤,這讓你可以
再次啟動虛擬機。如果你真的想移除這些東西,確保你刪除了虛擬機實例并刪除了硬盤。
通過命令行創建一個linux虛擬機farm
現在我的存儲賬戶里有了一個鏡像,可以用它創建N個虛擬機。我要開始建一個虛擬機。建完
后我可以在“azure站點列表”里看到它啟動。當機器準備就緒,我可以做的更多!確保你使
用--ssh switch否則你無法通過SSH進入機器!
奇怪:Azure有個概念叫“云服務”,這是個很爛的名字。對我們來說,就把它當作我們虛擬
機的容器吧。這是個邏輯上的容器,會包含并關聯所有的虛擬機(和其他的云之類的東西)
到一起。當你有一個虛擬機的時候,你將有一個云服務關聯到它,但你在門戶上看不到這個
云服務,因為還沒有真正用到。當你在一個容器中有兩個虛擬機,接著你就會發現門戶里出
現了“容器”云服務。
我現在已經創建了一個hanselmanlinuxfarm 虛擬機,所以也就有了一個hanselmanlinuxfarm
云服務“容器”。現在,我要創建更多的虛擬機,但要和第一臺虛擬機連接起來。有兩種方
法。第一種,用命令行里的connect選項。注意,如果你在意的話,你不用這樣控制你的虛擬
機名字。如果你有上百臺機器,你一定不想這樣做。
命令行會發現存在的云服務(還是,“容器”),然后創建一個新的虛擬機。我將運行這個
命令兩次,這樣我總共將有3臺虛擬機。
很重要:在第二臺虛擬機上用到的connect命令被稱作key。這創建了第二臺(以后還有N+1)
虛擬機并添加到一樣的云服務“容器”。看起來這些虛擬機都互相關聯。下一臺虛擬機的名
字將是-2,接著-3,等等。但他們也用一樣的外部名字,像
hanselmanlinuxfarm.cloudapp.net。
我將這樣做兩次,每次使用不同的SSH端口號來匹配內部的22端口號。如果我不想SSH暴露在
外面,之后可以刪除公共終端。
當創建一個linux虛擬機的時候,你必須添加一個--ssh標識到命令行否則你將無法通過SSH進
去。確保添加高數值的端口號,這樣你可以匹配端口22,比如12346->22等等。如果你通過門
戶創建的這些虛擬機,會隨機給你分配端口。當你通過命令行做的時候要自己選擇。
這會兒,azure vm list說我有三臺。兩臺已經準備就緒,最后一臺現在被創建好了。你可以
看到這些虛擬機在同樣的云服務“容器”里運行,因為DNS名是一樣的。這些虛擬機正式稱呼
是“farm”。
好了,現在通過門戶創建第四臺虛擬機,只是給你看看。
通過門戶創建一個linux虛擬機并添加到farm
就像你知道的,你也可以從門戶添加虛擬機到你的farm。
給你的新虛擬機起個名字,然后“連接到一個已有的虛擬機”。我不喜歡這表述,我也很好
奇你是怎么想的。基本上這里的意思是“添加這個虛擬機到虛擬機集合中”。這無關那個你
從下拉列表中選取的,只要你從云服務“容器”中選取一個。
我不會點擊OK,但如果我點擊了,這會兒我已經有第四臺虛擬機了,這個是通過門戶創建的
。
讓我的linux虛擬機farm負載平衡
我已經有了三個一樣的虛擬機運行著Apache和PHP還有我的test.php頁面。
讓我打開這三臺機器上的80端口。我想讓它們負載平衡但是不行,這是匹配單一非負載平衡
的端口方法。
為了負載平衡的端口我需要使用“create-multiple”。我不僅想一次打開多個端口,為了負
載平衡我還想要一個探索安裝。例如,我用http,如果有從test.php返回的200個結果,我會
希望虛擬機從farm中拉出來。如果30秒內沒有回應,也將會把虛擬機從回轉中拉回來。
這里我創建了這些80端口到80端口的匹配,但還更多的監控test.php,不只一個HTTP 200狀
態。
這里的“HttpTrafficIn”就是我所說的負載平衡集的名字。
注意:我在做一個拉取請求來添加一個通過終端命令查看探索路徑的功能,但現在你可以在
“azure vm show”里看到:
好,現在我們來看一下我是不是已經有一個負載平衡的farm。
注意:為了從你的Azure虛擬機(或其他云虛擬機)獲得最好的性能,考慮放入一些像
MySQL/PostgreS 數據庫,放到不同的盤上,用不同的緩存大小。你要讓系統盤和數據盤分開
。例如,我有一個windows 虛擬機運行MySQL。系統盤在一個標準的30G的盤上,但MySQL數據
庫在單獨的一個5G的附加的盤上。這讓東西分開,整潔,并且性能更好。
查看我的新farm
如果我登入門戶,我可以看到每個獨立的虛擬機或把farm看成一個“云服務”。懂?
讓我的farm更可靠
我想確信我的新虛擬機都在Azure數據中心的不同機架上。我知道它們在“West US”,因為
我把它們放在那里,但我不清楚它們是在一個機架上還是相鄰的或是其他什么。因為一個機
架在一個“錯誤域”中,意味著一個機架可能,我不知道,自爆?我想告訴Azure,所有這些
虛擬機都是一個“可用集”的一部分。這個名字是我用在虛擬機上的,意思是“通過把它們
分開讓這些機器更具可用性”。
從門戶上我將選擇第一臺虛擬機并選擇配置,然后創建一個可用集。我把它命名
為“hanselmanlinux”,但它可以是任何名字。
添加可用集意味著Azure可以移動我的虛擬機到數據中心的其他任何地方,而且這可能需要重
啟。有時候很快,有時候要花一到十分鐘,看最初大小。所以要明白,放在這個集的東西要
小。
當這些做好后,轉頭去把其他的虛擬機一個個添加到一樣的可用集里。這看起來像是在門戶
中,現在我保證了我的三臺虛擬機都在不同的錯誤域(機架)上。
點擊我的web farm
現在我可以點擊hanselmanlinuxfarm.cloudapp.net/test.php并看到IP改變(還有在門戶中
看到cup利用率的改變)或者甚至可以通過SSH觀察HTOP,得到一個實時的視圖。嗨,我已經
有一個小的Linux farm了!
這里有我用SSH進入其中一個,看看htop(比top還棒)
我的完整腳本,總結
這里是我的完整腳本。我使用azure vm image list | find /I "13_04"來發現一個Ubuntu鏡
像。我也可以用bash完成它。
一旦我發現一個鏡像,我用命令行在自己選定的路徑下創建我的第一個虛擬機。再次,這是
linux,不要忘了-ssh
用你喜歡的方式得到它。用SSH進入,安裝,運行waagent來prep它。關閉并捕獲它。
最終,這里有個基礎腳本文件來安裝5臺虛擬機。記住第一條命令不同于后面的。當然,用
bash你可以make一個腳本叫“spinup5”并以你想要的方式自動化。在終端創建中HTTP探測器
是可選的。
這些都運行完后,我進到門戶并手動安裝可用集。現在還只能用powershell,但很快就可用
跨平臺工具來設置可用集了!
下次,也許我會嘗試“azure vm scale”移動這些小虛擬機到8處理器56G的大機器上。
轉載于:https://www.cnblogs.com/ongoing/archive/2013/05/25/3099331.html
總結
以上是生活随笔為你收集整理的(译)如何用命令行在windows Azure上安装负载平衡的web Farm虚拟机(linux或其他)...的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: win7配置Eclipse+Cocos2
- 下一篇: css常用属性笔记