Azure上的幾個坑

2022-06-18 19:24:08 字數 1494 閱讀 6321

此文用於記錄在使用azure中國版時遇到的一些「坑」。

1、虛擬機器備份/還原

在某些場景中,使用備份/還原功能來建立(轉殖)虛擬機器比使用capture的image要方便很多。虛擬機器備份後,執行還原操作實質上是建立乙個新的虛擬機器,原虛擬機器仍然保留。其效果和使用capture的image建立虛擬機器基本是一樣的,唯一的區別就是:在通過還原功能建立虛擬機器時,虛擬機器大小是不能選擇的。如果要更改虛擬機器的大小,只能在虛擬機器還原完成後執行resize操作。還原出來的虛擬機器其endpoint也被原樣保留下來了。

這裡的坑有兩個:

中國版azure的虛擬機器備份功能與ubuntu作業系統之間存在相容性問題。執行ubuntu作業系統的虛擬機器可以正常備份,但還原出來的虛擬機器的所有endpoint埠都變成了隨機的數值(包括ssh埠)。而且無法使用ssh登入,提示使用者名稱和密碼錯誤。處理方法為:首先手工將endpoint埠修改正確,然後登入到預覽版的azure管理控制台重置管理員密碼。

對於ds系列使用高階儲存的虛擬機器,執行備份是沒有問題的,但還原時只能選擇還原到普通儲存上。處理方法為:使用指令碼將還原出來的虛擬機器複製到高階儲存中。

2、建立ds系列(高階儲存)虛擬機器

在經典管理控制台中是無法建立ds系列虛擬機器的,只能通過powershell指令碼建立ds系列虛擬機器,但是官方的文件中(包括中文和英文)都漏掉了乙個步驟:

set-azuresubscription -currentstorageaccountname [高階儲存賬號名稱] -subscriptionid [訂閱id]

如果不指定當前訂閱的預設儲存賬號,建立虛擬機器的過程是無法執行成功的。

建立虛擬機器的命令是這樣的:

new-azurevm -servicename [雲服務名稱] -vms [虛擬機器配置] -vnetname [虛擬網路名稱]

是不是感覺少了點什麼?沒錯這個命令沒有指定subnet的引數!如果虛擬機器所在的虛擬網路劃分了多個子網,那麼新建立出來的虛擬機器就會被放到子網之外去,即:新建立出來的虛擬機器不在任何子網中!所以建立好ds系列的虛擬機器之後,一定要為新建立出來的虛擬機器設定子網:

get-azurevm -servicename [雲服務名稱] -name [虛擬機器名稱] | set-azuresubnet -subnetnames [子網名稱] | update-azurevm

等新版的azure管理控制台正式上線後,就可以在通過web介面愉快的建立ds系列虛擬機器了。

3、azcopy是可以指定blob型別的

上傳自定義映象除了使用powershell命令之外,azcopy也是可以的。只不過預設情況下,用azcopy上傳的vhd映象是block型別的,而block型別是無法作為虛擬機器映象使用的。其實azcopy有乙個引數是可以指定上傳型別的:「/blobtype: page」。記住這個引數吧,否則幾十gb的檔案上傳完成後才發現型別不對肯定是令人抓狂的。:)

azure負載均衡上遇到的坑 12 28

前置條件 使用azure上現有的兩台虛擬機器做負載,使用azure上的負載均衡器 1.新建負載均衡器 2.新建完負載均衡器之後,接下來配置,配置後端池,執行狀況探測,負載均衡規則。在新增後端池的時候,沒有可用性集,返回主機列表,找到需要新增到後端池的主機,看到這裡涼了,不能使用azure的負載均衡做...

刪除Azure上的container

在使用azure時,當啟動hdinsight時,會產生一些container來儲存相關的日誌,這樣就導致會產生過多的無需儲存的container,乙個個刪除太過於麻煩,故這裡使用python通過迴圈進行刪除。由於container過多,我們可以反向思考,將部分container新增進白名單保留,其餘...

在 Mac 上使用 sed 命令的幾個坑

sed i s hello world g hello.text上面這行 可以在 linux 上執行,作用是將找到的hello替換為world,並且直接儲存修改到檔案。但是如果在 mac 上,你會發現這行 會報錯。原因是在 mac 上,sed命令直接操作檔案的時候,必須指定備份的格式,而在 linu...