Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
可以为 Azure SignalR 服务使用专用终结点,以便虚拟网络 (VNet) 上的客户端能够通过专用链接安全地访问数据。 专用终结点使用 VNet 地址空间中的某个 IP 地址来连接 Azure SignalR 服务。 VNet 和 Azure SignalR 服务上的客户端之间的网络流量通过 Microsoft 主干网络上的专用链接进行传输,避免暴露给公共 Internet。
通过为 Azure SignalR 服务使用专用终结点,你可以:
- 使用网络访问控制来阻止 Azure SignalR 服务的公共终结点上的所有连接,从而保护 Azure SignalR 服务。
- 阻止数据从 VNet 渗出,从而提高虚拟网络 (VNet) 的安全性。
- 使用 VPN 或 ExpressRoutes 通过专用对等互连从连接到 VNet 的本地网络安全地连接到 Azure SignalR 服务。
本文介绍如何为 Azure SignalR 服务使用专用终结点。
概念概述
专用终结点是用于虚拟网络 (VNet) 中的 Azure 服务的特殊网络接口。 为 Azure SignalR 服务创建专用终结点时,它将在 VNet 上的客户端和服务之间提供安全连接。 从 VNet 的 IP 地址范围为专用终结点分配 IP 地址。 专用终结点与 Azure SignalR 服务之间的连接使用安全的专用链接。
VNet 中的应用程序可以使用通过其他方式连接时所用的相同连接字符串和授权机制,通过专用终结点无缝地连接到 Azure SignalR 服务。 专用终结点可以与 Azure SignalR 服务支持的所有协议(包括 REST API)一起使用。
在 VNet 中为 Azure SignalR 服务创建专用终结点时,会将一个申请批准的许可请求发送到 Azure SignalR 服务所有者。 如果请求创建专用终结点的用户也是 Azure SignalR 服务的所有者,则此许可请求会自动获得批准。
Azure SignalR 服务所有者可以通过 Azure 门户中 Azure SignalR 服务的“专用终结点”选项卡来管理许可请求和专用同意终结点。
提示
如果只想限制通过专用终结点对 Azure SignalR 服务的访问,请配置网络访问控制以拒绝或控制通过公共终结点的访问。
连接至专用终结点
使用专用终结点的 VNet 上的客户端应该为 Azure SignalR 服务使用与连接到公共终结点的客户端相同的连接字符串。 我们依赖于 DNS 解析,通过专用链接自动将连接从 VNet 路由到 Azure SignalR 服务。
重要
使用与其他情况相同的连接字符串,通过专用终结点连接到 Azure SignalR 服务。 请不要使用其 privatelink 子域 URL 连接到 Azure SignalR 服务。
默认情况下,我们会创建一个关联到 VNet 的专用 DNS 区域,其中包含专用终结点所需的必要更新。 但是,如果使用自己的 DNS 服务器,则可能需要对 DNS 配置进行其他更改。 专用终结点的 DNS 更改部分介绍了专用终结点所需的更新。
专用终结点的 DNS 变更
创建专用终结点时,Azure SignalR 服务的 DNS CNAME 资源记录将更新为具有前缀 privatelink 的子域中的别名。 默认情况下,我们还会创建一个专用 DNS 区域,对应于 privatelink 子域,其中包含用于专用终结点的 DNS A 资源记录。
使用专用终结点从 VNet 外部解析 Azure SignalR 服务域名时,它会解析为 Azure SignalR 服务的公共终结点。 从托管该专用终结点的 VNet 中进行解析时,域名会解析为该专用终结点的 IP 地址。
在图示示例中,从托管专用终结点的 VNet 外部解析 Azure SignalR 服务“foobar”时,其 DNS 资源记录将为:
| 名称 | 类型 | 值 |
|---|---|---|
foobar.signalr.azure.cn |
CNAME | foobar.privatelink.signalr.azure.cn |
foobar.privatelink.signalr.azure.cn |
A | <Azure SignalR 服务公共 IP 地址> |
如前文所述,可以使用网络访问控制通过公共终结点拒绝或控制 VNet 外部的客户端的访问。
当托管专用终结点的 VNet 中的客户端解析“foobar”的 DNS 资源记录时,结果将如下所示:
| 名称 | 类型 | 值 |
|---|---|---|
foobar.signalr.azure.cn |
CNAME | foobar.privatelink.signalr.azure.cn |
foobar.privatelink.signalr.azure.cn |
A | 10.1.1.5 |
对于托管专用终结点的 VNet 上的客户端和 VNet 外部的客户端,此方法允许使用相同的连接字符串访问 Azure SignalR 服务。
如果在网络上使用自定义 DNS 服务器,则客户端必须能够将 Azure SignalR 服务终结点的 FQDN 解析为专用终结点 IP 地址。 应配置 DNS 服务器以将专用链接子域委托到 VNet 的专用 DNS 区域,或者使用专用终结点 IP 地址为 foobar.privatelink.signalr.azure.cn 配置 A 记录。
提示
使用自定义或本地 DNS 服务器时,应将 DNS 服务器配置为将 privatelink 子域中的 Azure SignalR 服务名称解析为专用终结点 IP 地址。 为此,可以将 privatelink 子域委托给 VNet 的专用 DNS 区域,或在 DNS 服务器上配置 DNS 区域并添加 DNS A 记录。
Azure SignalR 服务的专用终结点的建议 DNS 区域名称为:privatelink.signalr.azure.cn。
有关配置自己的 DNS 服务器以支持专用终结点的详细信息,请参阅以下文章:
创建专用终结点
在 Azure 门户中创建专用终结点并新建 Azure SignalR 服务
创建新的 Azure SignalR 服务时,选择“网络”选项卡。选择“专用终结点”作为连接方法。
选择添加。 填写新专用终结点的订阅、资源组、位置、名称。 选择虚拟网络和子网。
选择“查看 + 创建”。
在 Azure 门户中为现有 Azure SignalR 服务创建专用终结点
转到“Azure SignalR 服务”。
选择名为 专用终结点连接 的设置菜单项。
选择顶部的 + 专用终结点 按钮。
输入新专用终结点的订阅、资源组、资源名称和区域。
选择目标 Azure SignalR 服务资源。
选择目标虚拟网络
选择“查看 + 创建”。
使用 Azure CLI 创建专用终结点
- 登录到 Azure CLI
az login - 设置 Azure 订阅
az account set --subscription {AZURE SUBSCRIPTION ID} - 创建新的资源组
az group create -n {RG} -l {AZURE REGION} - 将 Microsoft.SignalRService 注册为提供商
az provider register -n Microsoft.SignalRService - 创建新的 Azure SignalR 服务
az signalr create --name {NAME} --resource-group {RG} --location {AZURE REGION} --sku Standard_S1 - 创建虚拟网络
az network vnet create --resource-group {RG} --name {vNet NAME} --location {AZURE REGION} - 添加子网
az network vnet subnet create --resource-group {RG} --vnet-name {vNet NAME} --name {subnet NAME} --address-prefixes {addressPrefix} - 禁用虚拟网络策略
az network vnet subnet update --name {subnet NAME} --resource-group {RG} --vnet-name {vNet NAME} --disable-private-endpoint-network-policies true - 添加专用 DNS 区域
az network private-dns zone create --resource-group {RG} --name privatelink.signalr.azure.cn - 将专用 DNS 区域链接到虚拟网络
az network private-dns link vnet create --resource-group {RG} --virtual-network {vNet NAME} --zone-name privatelink.signalr.azure.cn --name {dnsZoneLinkName} --registration-enabled true - 创建专用终结点(自动批准)
az network private-endpoint create --resource-group {RG} --vnet-name {vNet NAME} --subnet {subnet NAME} --name {Private Endpoint Name} --private-connection-resource-id "/subscriptions/{AZURE SUBSCRIPTION ID}/resourceGroups/{RG}/providers/Microsoft.SignalRService/SignalR/{NAME}" --group-ids signalr --connection-name {Private Link Connection Name} --location {AZURE REGION} - 创建专用终结点(手动请求批准)
az network private-endpoint create --resource-group {RG} --vnet-name {vNet NAME} --subnet {subnet NAME} --name {Private Endpoint Name} --private-connection-resource-id "/subscriptions/{AZURE SUBSCRIPTION ID}/resourceGroups/{RG}/providers/Microsoft.SignalRService/SignalR/{NAME}" --group-ids signalr --connection-name {Private Link Connection Name} --location {AZURE REGION} --manual-request - 显示连接状态
az network private-endpoint show --resource-group {RG} --name {Private Endpoint Name}
具有异地复制的专用终结点
Azure SignalR 服务以整体形式通过专用终结点公开。 不会创建指向特定副本的专用终结点。 相反,父资源上的一个专用终结点就足够了, 它根据运行状况和性能指标自动将流量路由到正常的副本,就像在公共网络中一样。
下图演示了流量如何通过单个专用终结点从虚拟网络中的客户端流向副本:
┌──────────────────────────────────┐
│ Client in VNet │
└────────────────┬─────────────────┘
│
▼
┌──────────────────────────────────┐
│ Private endpoint │
│ (private IP in your subnet) │
└────────────────┬─────────────────┘
│
▼
┌──────────────────────────────────┐
│ Closest healthy replica │
└──────────────────────────────────┘
示例。 假设客户端 VM 位于 China East 2 中,主Azure SignalR 服务资源位于 China North 2,副本位于 China East 2。 当客户端通过专用终结点连接到Azure SignalR 服务时,会选择 China East 2 副本,以提高路由性能。
Failover
如果当前提供流量的副本不可用,Azure网络基础结构会自动将新流量路由到另一个正常运行的副本。 专用终结点始终解析为虚拟网络中的同一专用 IP,因此不需要客户端更改。 故障转移可能需要数分钟才能完成。
若要手动触发并验证故障转移,请停止已连接的副本,等待几分钟,然后使用测试客户端重新连接。 客户端应被路由到另一个副本。
定价
有关定价详细信息,请参阅 Azure 专用链接定价。
已知问题
请记住以下关于 Azure SignalR 服务专用终结点的已知问题
免费层
你无法为免费层 Azure SignalR 服务创建专用终结点。
具有专用终结点的 VNet 中客户端的访问限制
已具有专用终结点的 VNet 中的客户端在访问其他已配置专用终结点的 Azure SignalR 服务实例时会受到限制。 例如:
- 当 VNet N1 具有 Azure SignalR 服务实例 S1 的专用终结点时
- 如果 Azure SignalR 服务 S2 在 VNet N2 中具有专用终结点,则 VNet N1 中的客户端也必须使用专用终结点访问 Azure SignalR 服务 S2。
- 如果 Azure SignalR 服务 S2 没有任何专用终结点,则 VNet N1 中的客户端可以在没有专用终结点的情况下访问该帐户中的 Azure SignalR 服务。
此约束是 Azure SignalR 服务 S2 创建专用终结点时 DNS 发生更改的结果。