uncategorized

管理Azure Resources內的Resources Group

之前在Azure開一些服務時候,它會自動配置一個Resources Group給你,又或是一開始在規劃架構時候,我們都會自行會設定一些Resources Group,但是久了之後,可能因為業務需求變動下,導致在Azure的服務被分得很零散,要管理起來就不是很方便或是很直覺。

在Azure的Resources Group設計中,是讓我們很容易去管理Azure服務。因此,對於初期架構設計的一些『錯誤』或是業務的變更,後面還是必須想辦法去彌補或是去更新,才不會等到最後架構變大,服務變多了,要管理起來也就更不方便

例如:業務A的Web App和SQL Database分散在不同Resources Group,我們定義一個名叫A Resources Group,把分散在各地屬於A服務的資源放在一起,要怎樣做呢?

Move SQL Database


  1. 首先,把SQL Database搬到新的Resources Group,這部分可以在新的Azure Portal 去做搬遷,記住搬遷SQL Database,一定要連同SQL Database Server一起搬遷,不能只有把Database進行轉移,所以,在SQL Server選擇『Move』就可以開始進行轉移

  2. 選擇要遷入的Resource Group名稱,按下確定之後,就可以進行搬遷囉,在搬遷時候,服務會停止一下,不過,時間不確定要多長,以目前這個SQL Database Size比較小,在30秒內就可以完成搬遷

Storage Move


  1. 搬遷Storage,搬遷Storage步驟就多一點點,選擇storage的屬性

  2. 往下滑動,就可以找到Resource Group,在這邊就可以變換Resource Group

  3. 選擇要搬遷的Storage,就可以開始進行搬遷了

Web App Move


移動App Servie方式也跟移動Storage一樣,到屬性的地方去修改要移動到的Resource Group,就可以把資源給轉移了,不過,這邊有一個陷阱,就是你在轉移Web App,記得所屬的App Service Plan也要一併轉移,不然到時候會無法把原本的Web App去轉移到其他的App Service Plan。這樣會出現Service Plan橫跨不同Resource Group的錯誤。

此外,在Web App轉移上,目前有一個限制,就是如果在一個Resource Group裡面有多個App Service Plan,就無法做移轉的動作,換句話說想要做移轉,必須確保Resource Group內只有一個App Service Plan才行,如下圖,這樣是無法進行移轉的

如果還是強行移轉,在Portal是看不到錯誤資訊,只是不會有動作,如果用PowerShell去跑,就會出現下面錯誤,這一點要注意的

如果不想透過Portal去做轉移,也可以使用PowerShell去控制

1
2
3
$webapp = Get-AzureRmResource -ResourceGroupName OldResourceGroupName -ResourceName ResourceName
$plan = Get-AzureRmResource -ResourceGroupName OldResourceGroupName -ResourceName ResourceName
Move-AzureRmResource -DestinationResourceGroupName NewResourceGroupName -ResourceId $webapp.ResourceId, $plan.ResourceId