啟用異地複寫
本文涵蓋 Azure 應用程式組態存放區的複寫。 您將了解如何在設定存放區中建立、使用及刪除複本。
若要深入瞭解異地複寫的概念,請參閱 Azure 應用程式組態中的異地複寫。
必要條件
- Azure 訂用帳戶 - 建立免費帳戶
- 我們假設您已經有應用程式組態存放區。 如果您想要建立一個存放區,請建立應用程式組態存放區。
建立和列出複本
若要在入口網站中建立組態存放區的複本,請遵循下列步驟。
注意
不支援私人端點設定靜態 IP 的應用程式組態存放區複本。 如果您想要私人端點使用靜態 IP 設定,必須先建立複本,才能將私人端點新增至存放區。
在您的應用程式組態存放區中,選取 [設定] 底下的 [異地複寫]。
在 [複本] 下,選取 [建立]。 在下拉式清單中選擇新複本的位置,然後指派複本名稱。 這個複本名稱必須是唯一的。
選取 建立。
您現在應該會看到新的複本列在 [複本] 底下。 檢查複本的狀態是否為「成功」,這表示已成功建立複本。
刪除複本
若要刪除入口網站中的複本,請遵循下列步驟。
在您的應用程式組態存放區中,選取 [設定] 底下的 [異地複寫]。
在 [複本] 底下,選取您要刪除的複本右邊的 ...。 從下拉式功能表中選取 [刪除]。
確認要刪除的複本名稱,然後選取 [確定] 以確認動作。
流程完成後,請檢查已刪除正確複本的複本清單。
自動探索複本
應用程式組態提供者可以從指定的應用程式組態端點自動探索任何複本,並嘗試連線到它們。 這項功能可讓您因異地複寫而獲得好處,不需要變更程式碼或重新部署應用程式。 這表示即使在部署應用程式之後,您也可以啟用異地複寫或新增額外的複本。
預設會啟用自動複本探索,但您可以參考下列範例程式碼來停用它 (不建議)。
編輯對 AddAzureAppConfiguration
方法的呼叫,這通常位於應用程式的 program.cs
檔案中。
configurationBuilder.AddAzureAppConfiguration(options =>
{
// Disable automatic replica discovery
options.ReplicaDiscoveryEnabled = false;
// Other changes to options
});
注意
如果使用下列任何套件的 7.1.0 版或更新版本,即可使用自動探索複本支援。
Microsoft.Extensions.Configuration.AzureAppConfiguration
Microsoft.Azure.AppConfiguration.AspNetCore
Microsoft.Azure.AppConfiguration.Functions.Worker
使用複本調整規模和容錯移轉
您建立的每個複本都有自己的專用端點。 如果您的應用程式位於多個地理位置,您可以更新某個位置的應用程式各部署,連線到較接近此位置的複本,這有助於將應用程式與應用程式設定之間的網路延遲降到最低。 因為每個複本各有各的要求配額,所以此設定也有助於在應用程式成長為多區域分散式服務時,提升其可擴縮性。
啟用異地複寫時,如果一個複本無法存取,您可以讓應用程式容錯移轉到另一個複本,改善復原能力。 應用程式組態提供者透過使用者提供的複本和/或其他自動探索的複本,提供內建容錯移轉支援。 您可以按由高到低的慣用端點順序,提供複本端點的清單。 無法存取目前端點時,提供者會容錯移轉到較不常使用的慣用端點,但會不時嘗試連線到較常使用的慣用端點。 如果無法存取所有使用者提供的複本,將會隨機選取並使用自動探索到的複本。 當有較常使用的慣用端點可用時,提供者就會切換到此端點以提出未來的要求。
假設您有使用 Azure 應用程式設定的應用程式,您可以將它更新為下列範例程式碼,以利用容錯移轉功能。 您可以提供進行 Microsoft Entra 驗證的端點清單,或存取金鑰型驗證的連接字串清單。
編輯對 AddAzureAppConfiguration
方法的呼叫,這通常位於應用程式的 program.cs
檔案中。
使用 Microsoft Entra ID 進行連線
configurationBuilder.AddAzureAppConfiguration(options =>
{
// Provide an ordered list of replica endpoints
var endpoints = new Uri[] {
new Uri("<first-replica-endpoint>"),
new Uri("<second-replica-endpoint>") };
// Connect to replica endpoints using Microsoft Entra authentication
options.Connect(endpoints, new DefaultAzureCredential());
// Other changes to options
});
使用連接字串來連線
configurationBuilder.AddAzureAppConfiguration(options =>
{
// Provide an ordered list of replica connection strings
var connectionStrings = new string[] {
Environment.GetEnvironmentVariable("FIRST_REPLICA_CONNECTION_STRING"),
Environment.GetEnvironmentVariable("SECOND_REPLICA_CONNECTION_STRING") };
// Connect to replica endpoints using connection strings
options.Connect(connectionStrings);
// Other changes to options
});
注意
如果使用下列任何套件的 6.0.0 版或更新版本,即可使用容錯移轉支援。
Microsoft.Extensions.Configuration.AzureAppConfiguration
Microsoft.Azure.AppConfiguration.AspNetCore
Microsoft.Azure.AppConfiguration.Functions.Worker
如果應用程式設定提供者觀察到下列情況,就可能發生容錯移轉。
- 接收服務無法使用狀態的回應 (HTTP 狀態碼 500 或更後面的代碼)。
- 網路連線問題的經驗。
- 節流要求 (HTTP 狀態碼 429)。
驗證失敗等用戶端錯誤不會發生容錯移轉。
使用複本進行負載平衡
依預設,您的應用程式一律會傳送要求至您提供的最偏好端點,但發生容錯移轉時除外。 不過,除了容錯移轉之外,複本也可以用來平衡要求的負載。 透過在一段時間內主動將要求分散到任何可用的複本,您可以避免耗盡單一複本的要求配額,並改善應用程式的整體可擴縮性。
應用程式組態提供者提供跨複本負載平衡的內建支援,無論是在程式碼中提供還是自動探索。 您可以使用下列程式碼範例,在應用程式中啟用此功能 (建議)。
編輯對 AddAzureAppConfiguration
方法的呼叫,這通常位於應用程式的 program.cs
檔案中。
configurationBuilder.AddAzureAppConfiguration(options =>
{
// Enable load balancing
options.LoadBalancingEnabled = true;
// Other changes to options
});
注意
如果使用下列任何套件的 8.0.0-preview.3 版或更新版本,即可使用負載平衡支援。
Microsoft.Extensions.Configuration.AzureAppConfiguration
Microsoft.Azure.AppConfiguration.AspNetCore
Microsoft.Azure.AppConfiguration.Functions.Worker