使用 PowerShell 升級基本負載平衡器
重要
Basic Load Balancer 將於 2025 年 9 月 30 日淘汰。 如需詳細資訊,請參閱官方公告。 如果您目前使用的是 Basic Load Balancer,請務必在淘汰日期之前升級至 Standard Load Balancer。
Azure Standard Load Balancer 可透過區域備援提供一組豐富的功能和高可用性。 若要深入了解 Load Balancer SKU,請參閱比較表。
本文介紹的 PowerShell 模組會建立與 Basic Load Balancer 相同的設定的 Standard Load Balancer,然後將虛擬機器擴展集或虛擬機器後端集區成員與新的 Load Balancer 產生關聯。
如需升級模組和程序的深入逐步解說,請參閱下列影片:
升級概觀
PowerShell 模組會執行下列函式:
- 驗證提供的 Basic Load Balancer 案例是否支援升級。
- 備份 Basic Load Balancer 和虛擬機器擴展集設定,並在失敗時或發生錯誤時重試。
- 針對公用負載平衡器,將前端公用 IP 位址更新為標準 SKU 和靜態指派
- 將 Basic Load Balancer 設定升級至新的 Standard Load Balancer,以確保設定和功能同位。
- 將虛擬機器擴展集和將虛擬機器後端集區成員從 Basic Load Balancer 移轉至 Standard Load Balancer。
- 在 Standard Load Balancer 移至預設拒絕網路原則之後,請建立網路安全性群組與虛擬機器擴展集或虛擬機器的關聯,以確保負載平衡流量傳到後端集區成員。
- 升級與虛擬機器擴展集或虛擬機器執行個體相關聯的執行個體層級公用 IP 位址
- 將輸入 NAT 集區升級至虛擬機器擴展集後端的輸入 NAT 規則,為每個已移轉的 NAT 集區建立新的後端集區。 指定
-skipUpgradeNATPoolsToNATRules
以略過此升級,並在稍後使用獨立 NAT 集區移轉模組,以取得更多後端集區選項。 - 記錄升級作業,以便輕鬆進行稽核和失敗復原。
警告
針對後端 VM 或 VMSS 執行個體沒有公用 IP 位址的「內部」Basic Load Balancer 進行移轉時,需要執行額外的步驟才能讓後端連線到網際網路。 請檢閱要如何設定 Load Balancer 的輸出流量?
注意
如果 Load Balancer 後端集區中的虛擬機器擴展集在其網路設定中有公用 IP 位址,則與每個虛擬機器擴展集執行個體相關聯的公用 IP 位址會在升級至標準 SKU 時變更。 這是因為擴展集執行個體層級公用 IP 位址無法升級,只能取代為新的標準 SKU 公用 IP。 所有其他公用 IP 位址都會透過移轉保留。
注意
如果 Load Balancer 後方的虛擬機器擴展集是 Service Fabric 叢集,則使用此指令碼進行移轉時會需要更多時間、讓應用程式面臨更高風險,而且會造成停機。 請檢閱 Service Fabric 叢集 Load Balancer 升級指導,以了解移轉選項。
不支援的案例
- 具有 IPv6 前端 IP 設定的 Basic Load Balancer
- 針對 Azure Kubernetes Services (AKS) 叢集的 Basic Load Balancer
- 具有虛擬機器擴展集後端集區成員的 Basic Load Balancer,其中一或多個虛擬機器擴展集執行個體已啟用 ProtectFromScaleSetActions 執行個體保護原則
- 將 Basic Load Balancer 移轉至現有的 Standard Load Balancer
安裝 'AzureBasicLoadBalancerUpgrade' 模組
必要條件
- PowerShell:建議在 Windows、Linux 和 macOS 等所有平台上使用支援的 PowerShell 第 7 版或更高版本來搭配 AzureBasicLoadBalancerUpgrade 模組。 不過,支援 Windows 上的 PowerShell 5.1。
模組安裝
從 PowerShell 資源庫安裝模組
Install-Module -Name AzureBasicLoadBalancerUpgrade -Scope CurrentUser -Repository PSGallery -Force
移轉前和移轉後步驟
遷移前步驟
- 驗證您的案例是否受支援
- 規劃移轉期間的應用程式停機
- 開發流量的輸入和輸出連線能力測試
- 規劃虛擬機器擴展集執行個體上的執行個體層級公用 IP 變更 (請參閱備註)
- [建議] 為後端集區成員建立網路安全性群組或將安全性規則新增至現有的網路安全性群組。 允許通過 Load Balancer 的流量,以及任何其他必須在公用標準 SKU 資源上明確允許的流量
- [建議] 準備您的輸出連線能力,並採用要如何設定 Load Balancer 的輸出流量?中所述的下列其中一種方法
移轉後步驟
- 驗證您的移轉是否成功
- 透過 Load Balancer 測試輸入應用程式連線能力
- 測試從後端集區成員到網際網路的輸出連線能力
- 針對具有多個後端集區的公用 Load Balancer,為每個後端集區建立輸出規則
使用模組
透過執行
Select-AzSubscription
,確保您已選取基本負載平衡器的訂用帳戶識別碼。Select-AzSubscription -Subscription <SubscriptionId>
尋找您想要升級的 Load Balancer。 記錄其名稱和資源群組名稱。
檢查基本模組參數:
- BasicLoadBalancerName [字串] 必要 - 此參數是您想要升級的現有 Basic Load Balancer 名稱
- ResourceGroupName [字串] 必要 - 此參數是包含 Basic Load Balancer 的資源群組名稱
- StandardLoadBalancerName [string] 選用 - 使用此參數選擇性地設定 Standard Load Balancer 的新名稱。 如果未指定,則會重複使用 Basic Load Balancer 名稱。
- RecoveryBackupPath [字串] 選用 - 此參數可讓您指定儲存 Basic Load Balancer ARM 範本備份檔案 (預設為目前工作目錄) 的替代路徑
提示
您可以執行
Get-Help Start-AzBasicLoadBalancerUpgrade -Detailed
來檢視進階和復原案例的其他參數使用下列範例作為指導執行
Start-AzBasicLoadBalancerUpgrade
命令。
範例:驗證案例
驗證是否支援升級 Basic Load Balancer
Start-AzBasicLoadBalancerUpgrade -ResourceGroupName <loadBalancerRGName> -BasicLoadBalancerName <basicLBName> -validateScenarioOnly
範例:依名稱升級
將 Basic Load Balancer 升級為具有相同名稱的 Standard Load Balancer,提供 Basic Load Balancer 名稱和資源群組名稱
Start-AzBasicLoadBalancerUpgrade -ResourceGroupName <loadBalancerRGName> -BasicLoadBalancerName <basicLBName>
範例:升級、變更名稱及顯示記錄
將 Basic Load Balancer 升級至具有指定名稱的 Standard Load Balancer,並在畫面上顯示記錄的輸出
Start-AzBasicLoadBalancerUpgrade -ResourceGroupName <loadBalancerRGName> -BasicLoadBalancerName <basicLBName> -StandardLoadBalancerName <newStandardLBName> -FollowLog
範例:使用替代備份路徑升級
將 Basic Load Balancer 升級至具有指定名稱的 Standard Load Balancer,並將 Basic Load Balancer 備份檔案儲存在指定的路徑
Start-AzBasicLoadBalancerUpgrade -ResourceGroupName <loadBalancerRGName> -BasicLoadBalancerName <basicLBName> -StandardLoadBalancerName <newStandardLBName> -RecoveryBackupPath C:\BasicLBRecovery
範例:驗證已完成的移轉
傳遞 Basic Load Balancer 狀態檔案備份和 Standard Load Balancer 名稱,以驗證完成的移轉
Start-AzBasicLoadBalancerUpgrade -validateCompletedMigration -StandardLoadBalancerName <newStandardLBName> -basicLoadBalancerStatePath C:\RecoveryBackups\State_mybasiclb_rg-basiclbrg_20220912T1740032148.json
範例:移轉多個相關的 Load Balancer
同時移轉具有共用後端成員的多個 Load Balancer,通常是當應用程式具有內部和外部 Load Balancer 時
# build array of multiple basic load balancers
$multiLBConfig = @(
@{
'standardLoadBalancerName' = 'myStandardInternalLB01' # specifying the standard load balancer name is optional
'basicLoadBalancer' = (Get-AzLoadBalancer -ResourceGroupName myRG -Name myBasicInternalLB01)
},
@{
'standardLoadBalancerName' = 'myStandardExternalLB02'
'basicLoadBalancer' = (Get-AzLoadBalancer -ResourceGroupName myRG -Name myBasicExternalLB02)
}
)
# pass the array of load balancer configurations to the -MultiLBConfig parameter
Start-AzBasicLoadBalancerUpgrade -MultiLBConfig $multiLBConfig
範例:重試失敗的虛擬機器擴展集移轉
提供 Basic Load Balancer 和虛擬機器擴展集備份狀態檔案,以重試虛擬機器擴展集負載平衡器失敗的升級 (因為錯誤或指令碼終止)
Start-AzBasicLoadBalancerUpgrade -FailedMigrationRetryFilePathLB C:\RecoveryBackups\State_mybasiclb_rg-basiclbrg_20220912T1740032148.json -FailedMigrationRetryFilePathVMSS C:\RecoveryBackups\VMSS_myVMSS_rg-basiclbrg_20220912T1740032148.json
範例:重試失敗的虛擬機器移轉
提供 Basic Load Balancer 備份狀態檔案,以重試 VM 負載平衡器失敗的升級 (因為錯誤或指令碼終止)
Start-AzBasicLoadBalancerUpgrade -FailedMigrationRetryFilePathLB C:\RecoveryBackups\State_mybasiclb_rg-basiclbrg_20220912T1740032148.json
常見問題
如何列出要在環境中移轉的 Basic Load Balancer?
若要取得環境中需要移轉的 Basic Load Balancer 清單,其中一種方式是使用 Azure Resource Graph 查詢。 如下所示的簡單查詢會列出您有權查看的所有 Basic Load Balancer。
Resources
| where type == 'microsoft.network/loadbalancers' and sku.name == 'Basic'
我們也撰寫了更複雜的查詢,以針對本課程模組會在驗證期間檢查的大部分準則,評估每個 Basic Load Balancer 的移轉整備程度。 您可以在 GitHub 專案中找到 Resource Graph 查詢,也可以在 Azure Resource Graph 總管中開啟此查詢。
此移轉是否會造成我的應用程式停機?
是,因為必須先移除 Basic Load Balancer,才能建立新的 Standard Load Balancer,因此將對您的應用程式造成停機。 請參閱升級需要多久?
模組是否會將我的前端 IP 位址移轉至新的 Standard Load Balancer?
是,對於公用和內部負載平衡器,模組可確保維護前端 IP 位址。 若為公用 IP,該 IP 會在移轉前轉換為靜態 IP。 若為內部前端,模組會嘗試重新指派 Basic Load Balancer 遭到刪除時所釋放的相同 IP 位址。 如果私人 IP 無法使用,則指令碼會失敗 (請參閱如果我的升級在移轉時失敗,會發生什麼事?)。
升級需要多久?
升級通常需要幾分鐘,指令碼才能完成。 下列因素可能會導致較長的升級時間:
- 負載平衡器設定的複雜度
- 後端集區成員數目
- 相關聯虛擬機器擴展集或虛擬機器的執行個體計數
- Service Fabric 叢集:Service Fabric 叢集的升級在測試中需要約一小時
因此請留意停機時間,並視需要規劃容錯移轉。
指令碼是否也會將後端集區成員從 Basic Load Balancer 移轉至新建立的 Standard Load Balancer?
是。 Azure PowerShell 指令碼會將虛擬機器擴展集和虛擬機器移轉至新建立的 Standard Load Balancer 後端集區。
移轉哪些負載平衡器元件?
指令碼會將下列項目從 Basic Load Balancer 移轉至 Standard Load Balancer:
公用和私人 Load Balancer:
- 健全狀態探查:
- 所有探查都會移轉至新的 Standard Load Balancer
- 負載平衡規則:
- 所有負載平衡規則都會移轉至新的 Standard Load Balancer
- 輸入 NAT 規則:
- 所有使用者建立的 NAT 規則都會移轉至新的 Standard Load Balancer
- 輸入 NAT 集區:
- 依預設,NAT 集區會升級為 NAT 規則
- 若要改為移轉 NAT 集區,請在升級時指定
-skipUpgradeNATPoolsToNATRules
參數
- 後端集區:
- 所有後端集區都會移轉至新的 Standard Load Balancer
- 所有虛擬機器擴展集和虛擬機器網路介面和 IP 設定都會移轉至新的 Standard Load Balancer
- 如果虛擬機器擴展集使用「輪流升級」原則,指令碼會在移轉程序期間,將虛擬機器擴展集升級原則更新為「手動」,並在移轉完成後,還原回「輪流」。
- 執行個體層級公用 IP 位址
- 針對虛擬機器和虛擬機器擴展集,將連結的公用 IP 從基本轉換為標準 SKU。 請注意,擴展集執行個體公用 IP 會在升級期間變更;虛擬機器 IP 則不會。
- 從 Basic Load Balancer 到 Standard Load Balancer 的標籤
公用負載平衡器:
- 公用前端 IP 設定
- 如果是動態,會將公用 IP 轉換為靜態 IP
- 如果是 Basic,會將公用 IP SKU 更新至 Standard
- 將所有相關聯的公用 IP 升級至新的 Standard Load Balancer
- 輸出規則:
- Basic Load Balancer 不支援設定的輸出規則。 指令碼會在 Standard Load Balancer 中建立輸出規則,以保留 Basic Load Balancer 的輸出行為。 如需輸出規則的詳細資訊,請參閱輸出規則。
- 網路安全性群組
- Basic Load Balancer 不需要網路安全性群組來允許輸出連線。 如果沒有與虛擬機器擴展集相關聯的網路安全性群組,將會建立新的網路安全性群組來保留相同的功能。 這個新的網路安全性群組將會與虛擬機器擴展集後端集區成員網路介面相關聯。 其允許相同的負載平衡規則連接埠和通訊協定,並保留輸出連線。
內部負載平衡器:
- 私人前端 IP 設定
注意
網路安全性群組未設定為內部 Load Balancer 升級的一部分。 若要深入了解 NSG,請參閱網路安全性群組。
當我的後端集區成員屬於多個 Load Balancer 時如何進行移轉?
如果您的後端集區成員也是另一個 Load Balancer 上的後端集區成員,例如當您有相同應用程式的內部和外部 Load Balancer 時,必須同時移轉 Basic Load Balancer。 嘗試一次移轉負載平衡器會嘗試混合基本和標準 SKU 資源,這是不允許的。 移轉指令碼支援此作業,方法是傳遞多個 Basic Load Balancer 至相同的使用 -MultiLBConfig
參數的指令碼執行。
如何驗證移轉是否成功?
在其執行結束時,升級模組會執行下列驗證,將 Basic Load Balancer 與新的 Standard Load Balancer 進行比較。 在失敗的移轉中,您可以使用 -validateCompletedMigration
和 -basicLoadBalancerStatePath
參數來呼叫此相同的作業,以判斷 Standard Load Balancer 的設定狀態 (如果已建立)。 在移轉期間建立的記錄檔也會提供有關移轉作業和任何錯誤的詳細資料。
- Standard Load Balancer 存在且其 SKU 為「標準」
- 前端 IP 設定的計數相符,且 IP 位址相同
- 後端集區計數及其成員資格相符
- 負載平衡規則相符的計數
- 健康情況探查相符的計數
- 輸入 NAT 規則相符的計數
- 輸入 NAT 集區相符的計數
- 外部 Standard Load Balancer 具有已設定的輸出規則
- 外部 Standard Load Balancer 後端集區成員具有相關聯的網路安全性群組
要如何設定 Load Balancer 的輸出流量?
標準 SKU Load Balancer 不會允許其後端集區成員的預設輸出存取。 要允許對網際網路的輸出存取需要執行更多步驟。
針對外部 Load Balancer,您可以使用輸出規則來明確啟用集區成員的輸出流量。 如果您有單一後端集區,我們會在移轉期間自動為您設定輸出規則;如果您有多個後端集區,則必須手動建立輸出規則來指定連接埠配置。
內部 Load Balancer 無法使用「輸出規則」這個選項,因為沒有可供進行 SNAT 的公用 IP 位址。 這會讓要考慮的選項剩下幾個:
- NAT 閘道:在大部分情況下,NAT 閘道是 Azure 針對輸出流量所建議的方法。 不過,NAT 閘道會要求連結的子網路沒有基本的 SKU 網路資源,這表示您必須先移轉所有 Load Balancer 和公用 IP 位址才能加以使用。 為此,建議您使用有兩個步驟的方法,先使用下列其中一種方法進行輸出連線,然後在基本 SKU 移轉完成後切換至 NAT 閘道。
- 網路虛擬設備:透過網路虛擬設備 (例如 Azure 防火牆) 來路由傳送流量,進而將流量路由傳送至網際網路。 如果您已設定好網路虛擬設備,這會是理想選項。
- 次要外部 Load Balancer:藉由將次要外部 Load Balancer 新增至後端資源,您可以藉由設定輸出規則,使用外部 Load Balancer 來處理輸出流量。 如果此外部 Load Balancer 未設定任何負載平衡規則、NAT 規則或輸入 NAT 集區,您的後端資源會與您用於輸入流量的內部網路保持隔離,請參閱僅限輸出的負載平衡器設定。 使用此選項,便可以先設定外部 Load Balancer,再從基本 SKU 移轉至標準 SKU,並可以使用
-MultiLBConfig
參數與內部負載平衡器同時進行移轉 - 公用 IP 位址:最後,公用 IP 位址可以直接新增至您的虛擬機器或虛擬機器擴展集執行個體。 不過,不建議使用此選項,因為新增公用 IP 位址會產生額外的安全性介面區和費用。
如果我的升級在移轉時失敗,會發生什麼事?
模組的設計目的是由於未處理的錯誤或未預期的指令碼終止,而導致失敗。 失敗設計是「容錯轉送」方法,其不會嘗試返回 Basic Load Balancer,您應該更正造成失敗的問題 (查看錯誤輸出或記錄檔),然後再次重試移轉,並指定 -FailedMigrationRetryFilePathLB <BasicLoadBalancerBackupFilePath> -FailedMigrationRetryFilePathVMSS <VMSSBackupFile>
參數。 對於公用負載平衡器,因為公用 IP 位址 SKU 已更新為 Standard,因此無法將相同的 IP 移回 Basic Load Balancer。
請觀看復原程序的影片:
如果您失敗的移轉同時以多個負載平衡器為目標,請使用 -MultiLBConfig
參數利用以下相同的程序來個別復原每個 Load Balancer。
基本失敗復原程序如下:
- 解決移轉失敗的原因。 檢查記錄檔
Start-AzBasicLoadBalancerUpgrade.log
以取得詳細資料 - 移除新的 Standard Load Balancer (如果已建立)。 根據移轉失敗的階段,您可能必須從虛擬機器擴展集或虛擬機器網路介面 (IP 設定) 和健全狀態探查移除 Standard Load Balancer 的參考,才能移除 Standard Load Balancer。
- 找出 Basic Load Balancer 狀態備份檔案。 此檔案會位於執行指令碼的目錄中,或在失敗執行期間以
-RecoveryBackupPath
參數指定的路徑。 檔案命名為:State_<basicLBName>_<basicLBRGName>_<timestamp>.json
- 重新執行移轉指令碼,指定
-FailedMigrationRetryFilePathLB <BasicLoadBalancerbackupFilePath>
和-FailedMigrationRetryFilePathVMSS <VMSSBackupFile>
(針對虛擬機器擴展集後端) 參數,而不是 -BasicLoadBalancerName,或透過管線傳遞 Basic Load Balancer