使用 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 規則。 指定 -skipUpgradeNATPoolsToNATRules 以略過此升級。
  • 記錄升級作業,以便輕鬆進行稽核和失敗復原。

警告

移轉後端 VM 或 VMSS 實例沒有公用 IP 位址的內部基本負載平衡器,需要額外的步驟才能連線到因特網。 檢閱 如何設定Load Balancer的輸出流量?

注意

如果 Load Balancer 後端集區中的虛擬機器擴展集在其網路設定中有公用 IP 位址,則與每個虛擬機器擴展集執行個體相關聯的公用 IP 位址會在升級至標準 SKU 時變更。 這是因為擴展集執行個體層級公用 IP 位址無法升級,只能取代為新的標準 SKU 公用 IP。 所有其他公用 IP 位址都會透過移轉保留。

注意

如果負載平衡器後方的虛擬機擴展集是 Service Fabric 叢集,則使用此腳本進行移轉需要更多時間、對應用程式的風險較高,而且會導致停機時間。 檢閱 Service Fabric 叢集負載平衡器升級指引 ,以取得移轉選項。

不支援的案例

  • 具有 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。
  • Az PowerShell 模組:判斷您是否已安裝最新的 Az PowerShell 模組
  • Az.ResourceGraph PowerShell 模組:Az.ResourceGraph PowerShell 模組可用來在升級期間查詢資源設定,而且是與 Az PowerShell 模組分開安裝。 如果您使用 命令安裝模組Install-ModuleAzureBasicLoadBalancerUpgrade系統會自動新增它。

模組安裝

PowerShell 資源庫安裝模組

PS C:\> Install-Module -Name AzureBasicLoadBalancerUpgrade -Scope CurrentUser -Repository PSGallery -Force

移轉前和移轉後步驟

遷移前步驟

  • 驗證您的案例是否受支援
  • 規劃移轉期間的應用程式停機
  • 開發流量的輸入和輸出連線能力測試
  • 規劃虛擬機擴充集實例上的實體層級公用IP變更(請參閱附註)
  • [建議]為後端集區成員建立網路安全組或將安全性規則新增至現有的網路安全組。 允許透過Load Balancer的流量,以及公用標準SKU資源上必須明確允許的任何其他流量
  • [建議]準備輸出 連線能力,並採用下列其中一種方法, 說明如何設定Load Balancer 的輸出流量?

移轉後步驟

  • 驗證您的移轉是否成功
  • 透過 Load Balancer 測試輸入應用程式連線能力
  • 測試從後端集區成員到網際網路的輸出連線能力
  • 針對具有多個後端集區的公用 Load Balancer,為每個後端集區建立輸出規則

使用模組

  1. 使用 Connect-AzAccount 來連線到 Azure,如果您有多個訂用帳戶,請指定基本 Load Balancer 的訂用帳戶標識碼。

    PS C:\> Connect-AzAccount -Subscription <SubscriptionId>
    
  2. 尋找您想要升級的 Load Balancer。 記錄其名稱和資源群組名稱。

  3. 檢查基本模組參數:

    • 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 來檢視進階和復原案例的其他參數

  4. 執行升級命令。

範例:驗證案例

驗證是否支援升級 Basic Load Balancer

PS C:\> Start-AzBasicLoadBalancerUpgrade -ResourceGroupName <loadBalancerRGName> -BasicLoadBalancerName <basicLBName> -validateScenarioOnly

範例:依名稱升級

將 Basic Load Balancer 升級為具有相同名稱的 Standard Load Balancer,提供 Basic Load Balancer 名稱和資源群組名稱

PS C:\> Start-AzBasicLoadBalancerUpgrade -ResourceGroupName <loadBalancerRGName> -BasicLoadBalancerName <basicLBName>

範例:升級、變更名稱及顯示記錄

將 Basic Load Balancer 升級至具有指定名稱的 Standard Load Balancer,並在畫面上顯示記錄的輸出

PS C:\> Start-AzBasicLoadBalancerUpgrade -ResourceGroupName <loadBalancerRGName> -BasicLoadBalancerName <basicLBName> -StandardLoadBalancerName <newStandardLBName> -FollowLog

範例:使用替代備份路徑升級

將 Basic Load Balancer 升級至具有指定名稱的 Standard Load Balancer,並將 Basic Load Balancer 備份檔案儲存在指定的路徑

PS C:\> Start-AzBasicLoadBalancerUpgrade -ResourceGroupName <loadBalancerRGName> -BasicLoadBalancerName <basicLBName> -StandardLoadBalancerName <newStandardLBName> -RecoveryBackupPath C:\BasicLBRecovery

範例:驗證已完成的移轉

傳遞 Basic Load Balancer 狀態檔案備份和 Standard Load Balancer 名稱,以驗證完成的移轉

PS C:\> Start-AzBasicLoadBalancerUpgrade -validateCompletedMigration -basicLoadBalancerStatePath C:\RecoveryBackups\State_mybasiclb_rg-basiclbrg_20220912T1740032148.json

同時移轉具有共用後端成員的多個 Load Balancer,通常是當應用程式具有內部和外部 Load Balancer 時

# build array of multiple basic load balancers
PS C:\> $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
PS C:\> Start-AzBasicLoadBalancerUpgrade -MultiLBConfig $multiLBConfig

範例:重試失敗的虛擬機器擴展集移轉

提供 Basic Load Balancer 和虛擬機器擴展集備份狀態檔案,以重試虛擬機器擴展集負載平衡器失敗的升級 (因為錯誤或指令碼終止)

PS C:\> Start-AzBasicLoadBalancerUpgrade -FailedMigrationRetryFilePathLB C:\RecoveryBackups\State_mybasiclb_rg-basiclbrg_20220912T1740032148.json -FailedMigrationRetryFilePathVMSS C:\RecoveryBackups\VMSS_myVMSS_rg-basiclbrg_20220912T1740032148.json

範例:重試失敗的虛擬機器移轉

提供 Basic Load Balancer 備份狀態檔案,以重試 VM 負載平衡器失敗的升級 (因為錯誤或指令碼終止)

PS C:\> Start-AzBasicLoadBalancerUpgrade -FailedMigrationRetryFilePathLB C:\RecoveryBackups\State_mybasiclb_rg-basiclbrg_20220912T1740032148.json

常見問題

如何列出要移轉在環境中的基本Load Balancer?

若要取得環境中需要移轉的基本 Load Balancer 清單的其中一種方式,就是使用 Azure Resource Graph 查詢。 像這樣的簡單查詢會列出您有權存取的所有基本Load Balancer。

Resources
| where type == 'microsoft.network/loadbalancers' and sku.name == 'Basic'

'' 我們也撰寫了更複雜的查詢,以評估每個基本Load Balancer的整備程度,以在驗證期間檢查此課程模組的大部分準則進行移轉。 您可以在 GitHub 專案中找到 Resource Graph 查詢,或在 Azure Resource Graph 總管中開啟。

此移轉是否會造成我的應用程式停機?

是,因為必須先移除 Basic Load Balancer,才能建立新的 Standard Load Balancer,因此將對您的應用程式造成停機。 請參閱升級需要多久?

模組是否會將我的前端 IP 位址移轉至新的 Standard Load Balancer?

是,對於公用和內部負載平衡器,模組可確保維護前端 IP 位址。 針對公用IP,IP會在移轉前轉換成靜態IP。 針對內部前端,模組會嘗試在刪除基本 Load Balancer 時重新指派釋放的相同 IP 位址。 如果私人IP無法使用,腳本會失敗(請參閱 如果我的升級在移轉時失敗,會發生什麼事?)。

升級需要多久?

升級通常需要幾分鐘,指令碼才能完成。 下列因素可能會導致較長的升級時間:

  • 負載平衡器設定的複雜度
  • 後端集區成員數目
  • 相關聯 虛擬機器擴展集 或 虛擬機器 f 的實例計數
  • 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 未設定任何負載平衡規則、NAT 規則或輸入 NAT 集區,您的後端資源會保持隔離至您的內部網路以進行輸入流量--請參閱 僅限輸出負載平衡器組態。 使用此選項,可以在從基本 SKU 移轉至標準 SKU 之前設定外部 Load Balancer,並使用 參數同時移轉為內部負載平衡器-MultiLBConfig
  • 公用IP位址:最後,公用IP位址可以直接新增至您的虛擬機器虛擬機擴展集實例。 不過,不建議使用此選項,因為新增公用IP位址的額外安全性介面區和費用。

如果我的升級在移轉時失敗,會發生什麼事?

模組的設計目的是由於未處理的錯誤或未預期的指令碼終止,而導致失敗。 失敗設計是「容錯轉送」方法,其不會嘗試返回 Basic Load Balancer,您應該更正造成失敗的問題 (查看錯誤輸出或記錄檔),然後再次重試移轉,並指定 -FailedMigrationRetryFilePathLB <BasicLoadBalancerBackupFilePath> -FailedMigrationRetryFilePathVMSS <VMSSBackupFile> 參數。 對於公用負載平衡器,因為公用 IP 位址 SKU 已更新為 Standard,因此無法將相同的 IP 移回 Basic Load Balancer。

觀看復原程式的影片:

如果您失敗的移轉同時以多個負載平衡器為目標,請使用 -MultiLBConfig 參數利用以下相同的程序來個別復原每個 Load Balancer。

基本失敗復原程序如下:

  1. 解決移轉失敗的原因。 檢查記錄檔 Start-AzBasicLoadBalancerUpgrade.log 以取得詳細資料
  2. 移除新的 Standard Load Balancer (如果已建立)。 根據移轉失敗的階段,您可能必須從虛擬機器擴展集或虛擬機器網路介面 (IP 設定) 和健全狀態探查移除 Standard Load Balancer 的參考,才能移除 Standard Load Balancer。
  3. 找出 Basic Load Balancer 狀態備份檔案。 此檔案會位於執行指令碼的目錄中,或在失敗執行期間以 -RecoveryBackupPath 參數指定的路徑。 檔案命名為:State_<basicLBName>_<basicLBRGName>_<timestamp>.json
  4. 重新執行移轉指令碼,指定 -FailedMigrationRetryFilePathLB <BasicLoadBalancerbackupFilePath>-FailedMigrationRetryFilePathVMSS <VMSSBackupFile> (針對虛擬機器擴展集後端) 參數,而不是 -BasicLoadBalancerName,或透過管線傳遞 Basic Load Balancer

下一步