你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

启用异地复制

本文介绍 Azure 应用程序配置存储的复制。 你将了解如何在配置存储中创建、使用和删除副本。

若要详细了解异地复制的概念,请参阅 Azure 应用程序配置中的异地复制

先决条件

创建并列出副本

若要在门户中创建配置存储的副本,请按照以下步骤操作。

注意

不支持使用配置了静态 IP 的专用终结点为应用程序配置存储创建副本。 如果更喜欢具有静态 IP 配置的专用终结点,则必须在将任何专用终结点添加到存储之前创建副本。

  1. 在应用程序配置存储中的“设置”下,选择“异地复制”。

  2. 在“副本”下,选择“创建”。 在下拉列表中选择新副本的位置,然后为副本分配名称。 此副本名必须是唯一的。

    突出显示“异地复制”按钮以及副本的“创建”按钮的屏幕截图。

  3. 选择“创建”。

  4. 现在应该会看到“副本”下列出的新副本。 检查副本的状态是否为“成功”,指示其创建成功。

    已为配置存储创建的副本列表的屏幕截图。

删除副本

若要在门户中删除副本,请按照以下步骤操作。

  1. 在应用程序配置存储中的“设置”下,选择“异地复制”。

  2. 在“副本”下,选择要删除的副本右侧的“...”。 从下拉菜单选择“删除”。

    显示所选副本右侧三个点的屏幕截图,其中显示“删除”选项。

  3. 验证要删除的副本的名称,然后选择“确定”进行确认。

  4. 完成该过程后,检查已删除正确副本的副本列表。

使用副本进行缩放和故障转移

创建的每个副本都有其专用终结点。 如果应用程序位于多个地理位置,则可以将应用程序在某个位置的每项部署更新为连接到更靠近该位置的副本,这有助于最大限度地减少应用程序和应用程序配置之间的网络延迟。 由于每个副本都有其单独的请求配额,因此此设置还有助于应用程序在发展为多区域分布式服务时实现可伸缩性。

启用异地复制后,如果一个副本不可访问,可以让应用程序故障转移到另一个副本以提高弹性。 应用程序配置提供程序库通过接受多个副本终结点实现内置故障转移支持。 可以按照最优先到最不优先的终结点这种顺序提供副本终结点列表。 若当前终结点不可访问,提供程序库会将故障转移到不太优先的终结点,但它会不时尝试连接到更优先的终结点。 当更优先的终结点可用时,便会切换到该终结点以供将来请求。

假设有一个使用 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 =>
{
    // 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

后续步骤