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

什么是 Azure 专用链接的 Azure Managed Redis?

本文介绍如何创建虚拟网络并将其与专用终结点的 Azure 托管 Redis 实例配合使用。 Azure 专用终结点是一个网络接口,通过 Azure 专用链路(Azure Private Link)以私密且安全的方式将您连接到托管的 Redis。

此过程通过两个步骤完成:

  1. 首先,创建用于缓存的虚拟网络。

  2. 然后,具体取决于您是否已经有了缓存:

    1. 创建新缓存时添加虚拟网络。
    2. 将虚拟网络添加到 现有缓存

重要

建议使用专用终结点连接到虚拟网络,以便在网络层保护 Azure 托管 Redis 资源。

先决条件

使用子网创建虚拟网络

该过程的第一步是使用门户创建虚拟网络。 然后,创建新的 缓存 或使用现有缓存时使用此虚拟网络。

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

  2. 在“ 新建 ”窗格中,选择“ 网络 ”,然后选择 “虚拟网络”。

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

  4. “创建虚拟网络”中,在 “基本信息 ”窗格中输入或选择此信息:

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

  6. “IP 地址 ”窗格中,指定 IPv4 地址空间IPv6 地址空间。 对于此过程,请使用 IPv4 地址空间

  7. 选择“添加子网”。 在 “子网名称”下,选择 默认值 或添加名称。 还可以根据需要编辑应用程序的子网属性。

  8. 选择 并添加

  9. 选择 “审阅 + 创建 ”窗格,或选择“ 审阅 + 创建 ”按钮。

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

使用连接到虚拟网络子网的专用终结点创建 Azure 托管 Redis 实例

若要创建 Azure 托管 Redis 缓存实例并添加专用终结点,请执行以下步骤。 首先必须 创建一个虚拟网络 才能用于缓存。

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

  2. 在搜索框中,键入 Azure 托管 Redis。 将搜索范围仅限于 Azure 服务,然后选择Azure 托管 Redis

  3. “新建 Azure 托管 Redis ”窗格中,配置新缓存的基本设置。

  4. 选择网络选项卡,或在工作窗格底部选择下一步:网络

  5. 在“ 网络 ”窗格中,选择连接方法的 专用终结点

  6. 选择 “添加专用终结点 ”以添加专用终结点。

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

  8. 继续执行其他选项卡,根据需要填写配置设置。

  9. 选择“查看 + 创建”。 你会看到“查看 + 创建”窗格,其中 Azure 会验证配置。

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

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

将专用终结点添加到现有的 Azure Managed Redis 实例

在本部分中,你将添加一个专用终结点到现有的 Azure 托管 Redis 实例。

  1. 第一步是 创建用于 现有缓存的虚拟网络。

  2. 然后,在门户中打开缓存,并将第一步中创建的子网添加到缓存中。

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

  3. 在 Azure 门户中,选择要向其中添加专用终结点的缓存实例。

  4. “管理”下的“资源”菜单中选择“专用终结点”,为缓存创建专用终结点。

  5. “专用终结点 ”窗格中,选择“ + 专用终结点 ”以添加专用终结点的设置。

    设置 建议值 DESCRIPTION
    订阅 单击下拉箭头并选择你的订阅。 在其中创建了虚拟网络的订阅。
    资源组 单击下拉箭头并选择一个资源组,或者选择新建并输入新的资源组名称。 要在其中创建专用终结点和其他资源的资源组的名称。 将所有应用资源放入一个资源组可以轻松地统一管理或删除这些资源。
    名称 输入专用终结点名称。 该名称必须满足以下要求:以字母或数字开头;以字母、数字或下划线结尾;只能包含字母、数字、下划线、句点或连字符。
    网络接口名称 根据 名称自动生成。 该名称必须满足以下要求:以字母或数字开头;以字母、数字或下划线结尾;只能包含字母、数字、下划线、句点或连字符。
    区域 下拉并选择一个区域。 选择距离使用您专用终结点的其他服务较近的区域
  6. 选择窗格底部的“ 下一步:资源 ”。

  7. “资源 ”窗格中,选择 订阅

    1. 然后,选择 资源类型 作为 Microsoft.Cache/redisEnterprise
    2. 然后,为“资源”属性选择要将专用终结点连接到的缓存
  8. 选择窗格底部的“ 下一步:虚拟网络 ”按钮。

  9. “虚拟网络”窗格中,选择在上一部分创建的虚拟网络子网

  10. 选择窗格底部的“ 下一步:标记 ”按钮。

  11. (可选)在 “标记 ”窗格中,如果要对资源进行分类,请输入名称和值。

  12. 选择“查看 + 创建”。 你会看到 “查看 + 创建 ”窗格,其中 Azure 会验证配置。

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

重要

Azure 托管 Redis 资源当前没有 publicNetworkAccess 属性。 如果 sPrivate 终结点连接到 Azure 托管 Redis 缓存,则它仅接受来自连接虚拟网络的专用流量。 如果删除专用终结点,资源将会自动允许公用网络访问。

使用 Azure PowerShell 创建连接到专用终结点的 Azure 托管 Redis 缓存

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


$SubscriptionId = "<your Azure subscription ID>"
# Resource group where the Azure Managed Redis instance and virtual network resources are located
$ResourceGroupName = "myResourceGroup"
# Name of the Azure Managed 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 = "westcentralus"

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

$privateEndpointConnection = New-AzPrivateLinkServiceConnection -Name "myConnectionPS" -PrivateLinkServiceId $redisCacheResourceId -GroupId "redisEnterprise"
 
$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 "westcentralus" -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 托管 Redis 缓存

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

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

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

# Name of the existing Azure Managed 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/redisEnterprise/$redisCacheName" \
    --group-ids "redisEnterprise" \
    --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

Azure Managed Redis 专用终结点专用 DNS 区域值

应用程序应连接到端口 <cachename>.<region>.redis.azure.net 上的 10000。 在订阅中自动创建名为 *.privatelink.redis.azure.net 的专用 DNS 区域。 专用 DNS 区域对于与专用终结点建立 TLS 连接至关重要。 建议避免在客户连接配置中使用 <cachename>.privatelink.redis.azure.net

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

常见问题

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

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

  • 对于 Azure 托管的 Redis,专用终结点的使用不受限制。

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

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

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

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

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

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

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

  4. 删除私有终结点。

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

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

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

如果删除 Azure 托管 Redis 缓存上的所有专用终结点,则网络默认具有公共网络访问权限。

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

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

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

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

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