什么是 Azure 专用链接的 Azure Cache for Redis?

在本文中,你将了解如何通过 Azure 门户创建虚拟网络和带有专用终结点的 Azure Cache for Redis 实例。 你还将学习如何向现有的 Azure Cache for Redis 实例添加专用终结点。

Azure 专用终结点是一个网络接口,可以通过私密且安全的方式将你连接到 Azure 专用链接支持的 Azure Cache for Redis。

可以通过禁用 PublicNetworkAccess 标志来限制对缓存专用终结点的公共访问。

重要

有一个 publicNetworkAccess 标志,默认情况下为 Disabled。 可将该值设置为 DisabledEnabled。 设置为“启用”时,此标志允许公共终结点和专用终结点访问缓存。 设置为 Disabled 时,它只允许专用终结点访问。 有关如何更改该值的详细信息,请查看常见问题解答

重要

缓存层(基本、标准和高级)支持专用终结点。 我们建议使用专用终结点而不是 VNet。 专用终结点易于设置或删除,在所有层上都受支持,并且可以一次将缓存连接到多个不同的 VNet。

使用基本层时,删除并重新创建专用终结点时可能会遇到数据丢失问题。

可用范围

基本、标准、高级
可用

先决条件

重要

目前,专用链接不支持基于门户的 Redis 控制台

重要

使用专用链接时,无法在已启用防火墙的存储帐户中导出或导入数据,除非使用具有托管标识的高级层缓存对存储帐户进行身份验证。 有关详细信息,请参阅如果在存储帐户上启用了防火墙怎么办?

创建专用终结点和新的 Azure Cache for Redis 实例

在本部分中,你将创建新的、带有专用终结点的 Azure Cache for Redis 实例。

为新缓存创建虚拟网络

  1. 登录到 Azure 门户,然后选择“创建资源”。

    选择“创建资源”。

  2. 在“新建”页面上,选择“网络”,然后选择“虚拟网络” 。

  3. 选择“添加”,创建虚拟网络。

  4. 在“创建虚拟网络” 的“基本信息”选项卡中输入或选择以下信息 :

    设置 建议值 描述
    订阅 单击下拉箭头并选择你的订阅。 要在其下创建此虚拟网络的订阅。
    资源组 单击下拉箭头并选择一个资源组,或者选择“新建”并输入新的资源组名称。 要在其中创建虚拟网络和其他资源的资源组的名称。 将所有应用资源放入一个资源组可以轻松地统一管理或删除这些资源。
    Name 输入虚拟网络名称。 该名称必须满足以下要求:以字母或数字开头;以字母、数字或下划线结尾;只包含字母、数字、下划线、句点或连字符。
    区域 下拉并选择一个区域。 选择使用你的虚拟网络的其他服务附近的区域
  5. 选择“IP 地址”选项卡 ,或选择页面底部的“下一步: IP 地址”按钮。

  6. 在“IP 地址”选项卡中,将“IPv4 地址空间”指定为采用 CIDR 表示法的一个或多个地址前缀(例如 192.168.1.0/24) 。

  7. 在“子网名称”下,选择“默认”以编辑子网的属性 。

  8. 在“编辑子网”窗格中,指定“子网名称”和“子网地址范围” 。 应以 CIDR 表示法表示子网的地址范围(例如 192.168.1.0/24)。 它必须包含在虚拟网络的地址空间中。

  9. 选择“保存”。

  10. 选择“查看 + 创建” 选项卡,或选择“查看 + 创建” 按钮。

  11. 确认所有信息是否正确,然后选择“创建”以创建虚拟网络。

创建 Azure Cache for Redis 实例和专用终结点

要创建缓存实例,请执行以下步骤:

  1. 返回到 Azure 门户主页或打开边栏菜单,然后选择“创建资源”。

  2. 在“新建”页上选择“数据库”,然后选择“Azure Cache for Redis”。

    选择 Azure Cache for Redis。

  3. 在“新建 Redis 缓存”页上配置新缓存的设置。

    设置 建议值 说明
    DNS 名称 输入任何全局唯一的名称。 缓存名称必须是介于 1 到 63 个字符之间的字符串。 该字符串只能包含数字、字母或连字符。 该名称必须以数字或字母开头和结尾,且不能包含连续的连字符。 缓存实例的主机名是 <DNS name>.redis.cache.chinacloudapi.cn
    订阅 单击下拉箭头并选择你的订阅。 要在其下创建此新的 Azure Cache for Redis 实例的订阅。
    资源组 单击下拉箭头并选择一个资源组,或者选择新建并输入新的资源组名称。 要在其中创建缓存和其他资源的资源组的名称。 将所有应用资源放入一个资源组可以轻松地统一管理或删除这些资源。
    位置 单击下拉箭头并选择一个位置。 选择使用缓存的其他服务附近的区域
    定价层 单击下拉箭头并选择一个定价层 定价层决定可用于缓存的大小、性能和功能。 有关详细信息,请参阅用于 Redis 的 Azure 缓存概述
  4. 选择“网络”选项卡,或选择“网络”按钮(位于页面底部) 。

  5. 在“网络”选项卡中,选择“专用终结点”作为连接方法 。

  6. 选择“添加”按钮以创建专用终结点。

    在网络中,添加一个专用终结点。

  7. 在“创建专用终结点”页面上,使用上一部分中创建的虚拟网络和子网配置专用终结点的设置,然后选择“确定” 。

  8. 选择“下一步:高级”选项卡,或者选择页面底部的“下一步:高级”按钮 。

  9. 在基本或标准缓存实例的“高级”选项卡中,如果想要启用非 TLS 端口,请选择启用开关。

  10. 在高级缓存实例的“高级”选项卡中,配置非 TLS 端口、群集和数据持久性的设置。

  11. 选择“下一步: 标记”选项卡,或选择页面底部的“下一步: 标记”按钮 。

  12. 或者,在标记选项卡中,如果希望对资源分类,请输入名称或值。

  13. 选择“查看 + 创建”。 随后你会转到“查看 + 创建”选项卡,Azure 将在此处验证配置。

  14. 显示绿色的“已通过验证”消息后,选择“创建”。

创建缓存需要花费片刻时间。 可以在 Azure Cache for Redis 的“概述”页上监视进度。 如果“状态”显示为“正在运行”,则表示该缓存可供使用。

重要

有一个 publicNetworkAccess 标志,默认情况下为 Disabled。 可将该值设置为 DisabledEnabled。 设置为 Enabled 时,此标志允许公共终结点和专用终结点访问缓存。 设置为 Disabled 时,它只允许专用终结点访问。 有关如何更改该值的详细信息,请查看常见问题解答

在现有 Azure Cache for Redis 实例中创建专用终结点

本部分将介绍如何向现有的 Azure Cache for Redis 实例添加专用终结点。

为现有缓存创建虚拟网络

若要创建虚拟网络,请执行以下步骤:

  1. 登录到 Azure 门户,然后选择“创建资源”。

  2. 在“新建”页面上,选择“网络”,然后选择“虚拟网络” 。

  3. 选择“添加”,创建虚拟网络。

  4. 在“创建虚拟网络” 的“基本信息”选项卡中输入或选择以下信息 :

    设置 建议值 描述
    订阅 单击下拉箭头并选择你的订阅。 要在其下创建此虚拟网络的订阅。
    资源组 单击下拉箭头并选择一个资源组,或者选择“新建”并输入新的资源组名称。 要在其中创建虚拟网络和其他资源的资源组的名称。 将所有应用资源放入一个资源组可以轻松地统一管理或删除这些资源。
    Name 输入虚拟网络名称。 该名称必须满足以下要求:以字母或数字开头;以字母、数字或下划线结尾;只包含字母、数字、下划线、句点或连字符。
    区域 下拉并选择一个区域。 选择使用你的虚拟网络的其他服务附近的区域
  5. 选择“IP 地址”选项卡 ,或选择页面底部的“下一步: IP 地址”按钮。

  6. 在“IP 地址”选项卡中,将“IPv4 地址空间”指定为采用 CIDR 表示法的一个或多个地址前缀(例如 192.168.1.0/24) 。

  7. 在“子网名称”下,选择“默认”以编辑子网的属性 。

  8. 在“编辑子网”窗格中,指定“子网名称”和“子网地址范围” 。 应以 CIDR 表示法表示子网的地址范围(例如 192.168.1.0/24)。 它必须包含在虚拟网络的地址空间中。

  9. 选择“保存”。

  10. 选择“查看 + 创建” 选项卡,或选择“查看 + 创建” 按钮。

  11. 确认所有信息是否正确,然后选择“创建”以创建虚拟网络。

创建专用终结点

要创建专用终结点,请执行以下步骤:

  1. 在 Azure 门户中,搜索“Azure Cache for Redis”。 然后,按 Enter 或者在搜索建议中选择该服务。

    搜索 Azure Cache for Redis。

  2. 选择要向其中添加专用终结点的缓存实例。

  3. 在屏幕左侧选择“专用终结点”。

  4. 选择“专用终结点”按钮以创建专用终结点。

    添加专用终结点

  5. 在“创建专用终结点”页面上,配置专用终结点的设置。

    设置 建议值 描述
    订阅 单击下拉箭头并选择你的订阅。 要在其下创建此专用终结点的订阅。
    资源组 单击下拉箭头并选择一个资源组,或者选择“新建”并输入新的资源组名称。 要在其中创建专用终结点和其他资源的资源组的名称。 将所有应用资源放入一个资源组可以轻松地统一管理或删除这些资源。
    Name 输入专用终结点名称。 该名称必须满足以下要求:以字母或数字开头;以字母、数字或下划线结尾;只能包含字母、数字、下划线、句点或连字符。
    区域 下拉并选择一个区域。 选择使用该专用终结点的其他服务附近的区域
  6. 选择页面底部的“下一步: 资源”按钮。

  7. 在“资源”选项卡中,选择你的订阅,选择资源类型为 Microsoft.Cache/Redis,然后选择要将专用终结点连接到的缓存。

  8. 选择页面底部的“下一步: 配置”按钮。

  9. 选择页面底部的“下一步: 虚拟网络”按钮。

  10. 在“配置”选项卡中,选择你在上一部分中创建的虚拟网络和子网。

  11. 在“虚拟网络”选项卡中,选择你在上一部分中创建的虚拟网络和子网。

  12. 选择页面底部的“下一步: 标记”按钮。

  13. 或者,在“标记”选项卡中,如果希望对资源分类,请输入名称或值。

  14. 选择“查看 + 创建”。 随后你会转到“查看 + 创建”选项卡,Azure 将在此处验证配置。

  15. 显示绿色的“已通过验证”消息后,选择“创建” 。

重要

有一个 publicNetworkAccess 标志,默认情况下为 Disabled。 可将该值设置为 DisabledEnabled。 设置为“启用”时,此标志允许公共终结点和专用终结点访问缓存。 设置为 Disabled 时,它只允许专用终结点访问。 有关如何更改该值的详细信息,请查看常见问题解答

使用 Azure PowerShell 创建专用终结点

若要为现有 Azure Cache for Redis 实例创建名为 MyPrivateEndpoint 的专用终结点,请运行以下 PowerShell 脚本。 用环境的详细信息替换变量值:


$SubscriptionId = "<your Azure subscription ID>"
# Resource group where the Azure Cache for Redis instance and virtual network resources are located
$ResourceGroupName = "myResourceGroup"
# Name of the Azure Cache for Redis instance
$redisCacheName = "mycacheInstance"

# Name of the existing virtual network
$VNetName = "myVnet"
# Name of the target subnet in the virtual network
$SubnetName = "mySubnet"
# Name of the private endpoint to create
$PrivateEndpointName = "MyPrivateEndpoint"
# Location where the private endpoint can be created. The private endpoint should be created in the same location where your subnet or the virtual network exists
$Location = "chinanorth2"

$redisCacheResourceId = "/subscriptions/$($SubscriptionId)/resourceGroups/$($ResourceGroupName)/providers/Microsoft.Cache/Redis/$($redisCacheName)"

$privateEndpointConnection = New-AzPrivateLinkServiceConnection -Name "myConnectionPS" -PrivateLinkServiceId $redisCacheResourceId -GroupId "redisCache"
 
$virtualNetwork = Get-AzVirtualNetwork -ResourceGroupName  $ResourceGroupName -Name $VNetName  
 
$subnet = $virtualNetwork | Select -ExpandProperty subnets | Where-Object  {$_.Name -eq $SubnetName}  
 
$privateEndpoint = New-AzPrivateEndpoint -ResourceGroupName $ResourceGroupName -Name $PrivateEndpointName -Location "chinanorth2" -Subnet  $subnet -PrivateLinkServiceConnection $privateEndpointConnection

使用 Azure Powershell 检索专用终结点

若要获取专用终结点的详细信息,请使用以下 PowerShell 命令:

Get-AzPrivateEndpoint -Name $PrivateEndpointName -ResourceGroupName $ResourceGroupName

使用 Azure Powershell 删除专用终结点

若要删除专用终结点,请使用以下 PowerShell 命令:

Remove-AzPrivateEndpoint -Name $PrivateEndpointName -ResourceGroupName $ResourceGroupName

使用 Azure CLI 创建专用终结点

若要为现有 Azure Cache for Redis 实例创建名为 myPrivateEndpoint 的专用终结点,请运行以下 Azure CLI 脚本。 用环境的详细信息替换变量值:

# Resource group where the Azure Cache for Redis and virtual network resources are located
ResourceGroupName="myResourceGroup"

# Subscription ID where the Azure Cache for Redis and virtual network resources are located
SubscriptionId="<your Azure subscription ID>"

# Name of the existing Azure Cache for Redis instance
redisCacheName="mycacheInstance"

# Name of the virtual network to create
VNetName="myVnet"

# Name of the subnet to create
SubnetName="mySubnet"

# Name of the private endpoint to create
PrivateEndpointName="myPrivateEndpoint"

# Name of the private endpoint connection to create
PrivateConnectionName="myConnection"

az network vnet create \
    --name $VNetName \
    --resource-group $ResourceGroupName \
    --subnet-name $SubnetName

az network vnet subnet update \
    --name $SubnetName \
    --resource-group $ResourceGroupName \
    --vnet-name $VNetName \
    --disable-private-endpoint-network-policies true

az network private-endpoint create \
    --name $PrivateEndpointName \
    --resource-group $ResourceGroupName \
    --vnet-name $VNetName  \
    --subnet $SubnetName \
    --private-connection-resource-id "/subscriptions/$SubscriptionId/resourceGroups/$ResourceGroupName/providers/Microsoft.Cache/Redis/$redisCacheName" \
    --group-ids "redisCache" \
    --connection-name $PrivateConnectionName

使用 Azure CLI 检索专用终结点

若要获取专用终结点的详细信息,请使用以下 CLI 命令:

az network private-endpoint show --name MyPrivateEndpoint --resource-group MyResourceGroup

使用 Azure CLI 删除专用终结点

若要删除专用终结点,请使用以下 CLI 命令:

az network private-endpoint delete --name MyPrivateEndpoint --resource-group MyResourceGroup

常见问题解答

如何使用专用终结点连接到缓存?

对于基本、标准和高级层缓存,应用程序应连接到端口 6380 上的 <cachename>.redis.cache.chinacloudapi.cn。 在订阅中自动创建名为 *.privatelink.redis.cache.chinacloudapi.cn 的专用 DNS 区域。 专用 DNS 区域对于使用专用终结点建立 TLS 连接至关重要。 建议避免在配置或连接字符串中使用 <cachename>.privatelink.redis.cache.chinacloudapi.cn

有关详细信息,请参阅 Azure 服务 DNS 区域配置

为什么无法连接到专用终结点?

  • 如果缓存已经是 VNet 注入缓存,则专用终结点不能与缓存实例一同使用。

  • 对于基本、标准和高级层缓存,最多能使用 100 个专用链接。

  • 在使用聚类分析的高级层缓存上,只能使用一个专用链接。

  • 尝试将数据持久保存到应用了防火墙规则的存储帐户可能会阻止创建专用链接。

  • 如果缓存实例使用不支持的功能,则可能无法连接到专用终结点。

专用终结点不支持哪些功能?

  • 不支持的一种情况是尝试从 Azure 门户控制台进行连接,在这种情况下会看到连接失败。

  • 无法将专用链接添加到高级层中已在使用 被动异地复制的缓存。 若要将专用链接添加到异地复制的缓存,请执行以下操作:1. 取消链接异地复制。 2. 添加专用链接。 3. 最后,重新链接异地复制。

如何验证我的专用终结点配置是否正确?

在门户的“资源”菜单中转到“概述”。 可以在工作窗格中查看缓存的“主机名”。 从链接到专用终结点的 VNet 中运行类似 nslookup <hostname> 的命令,以验证该命令是否解析为缓存的专用 IP 地址。

在 Azure 门户中,对专用终结点进行 DNS 设置。

如何将专用终结点更改为禁用或启用公用网络访问?

有一个默认处于 Disabled 状态的 publicNetworkAccess 标志。 设置为 Enabled 时,此标志允许公共终结点和专用终结点访问缓存。 设置为 Disabled 时,它只允许专用终结点访问。 可在 Azure 门户中或使用 RESTful API PATCH 请求将值设置为 DisabledEnabled

要在 Azure 门户中更改值,请执行以下步骤:

  1. 在 Azure 门户中,搜索“Azure Cache for Redis”。 然后,按 Enter 或者在搜索建议中选择该服务。

  2. 选择要更改其公用网络访问值的缓存实例。

  3. 在屏幕左侧选择“专用终结点”。

  4. 选择“启用公用网络访问”按钮。

还可以通过 RESTful API PATCH 请求更改值。 例如,对基本、标准或高级层缓存使用以下代码,并编辑该值以反映你要对缓存使用的标志。

PATCH  https://management.chinacloudapi.cn/subscriptions/{subscription}/resourceGroups/{resourcegroup}/providers/Microsoft.Cache/Redis/{cache}?api-version=2020-06-01
{    "properties": {
       "publicNetworkAccess":"Disabled"
   }
}

有关详细信息,请参阅 Redis–更新

请参阅我们的迁移指南,了解将 VNet 注入缓存迁移到专用链接缓存的不同方法。

如何在不同的虚拟网络中拥有多个终结点?

若要在不同的虚拟网络中拥有多个专用终结点,必须在创建专用终结点之前,将专用 DNS 区域手动配置到多个虚拟网络。 有关详细信息,请参阅 Azure 专用终结点 DNS 配置

如果删除缓存上的所有专用终结点,会发生什么情况?

删除缓存上的专用终结点后,在显式启用公用网络访问或添加另一个专用终结点之前,可能无法访问缓存实例。 可在 Azure 门户中更改 publicNetworkAccess 标志,也可以通过 RESTful API PATCH 请求来更改。 有关如何更改该值的详细信息,请查看常见问题解答

是否对专用终结点启用了网络安全组 (NSG)?

否,已对专用终结点禁用了 NSG。 尽管包含专用终结点的子网可以有关联的 NSG,但这些规则不会针对专用终结点处理的流量生效。 必须禁用网络策略的强制实施,才能在子网中部署专用终结点。 NSG 仍会在同一子网中托管的其他工作负荷上强制实施。 任何客户端子网上的路由会使用前缀“/32”,若要更改默认路由行为,需要类似的 UDR。

对源客户端上的出站流量使用 NSG 规则来控制流量。 部署具有 /32 前缀的单个路由,以替代专用终结点路由。 仍支持为出站连接提供 NSG 流日志和监视信息,并且可以使用这些日志和信息。

我的专用终结点实例不在我的 VNet 中,它如何与我的 VNet 关联?

它只会链接到你的 VNet。 由于它不在你的 VNet 中,因此不需要修改依赖终结点的 NSG 规则。