-
使用
tcping
,从缓存所在的虚拟网络中的某台计算机对缓存终结点发出 ping 命令(使用端口 6380)。 例如:
tcping.exe contosocache.redis.cache.windows.net 6380
如果
tcping
工具报告端口已打开,则可从虚拟网络中的客户端连接缓存。
-
进行测试的另一种方法:创建测试缓存客户端,使其连接到缓存,以便添加和检索缓存的某些项。 测试缓存客户端可以是使用 StackExchange.Redis 的控制台应用程序。 将示例客户端应用程序安装到缓存所在虚拟网络中的一个 VM 上。 然后运行它来验证与缓存的连接。
尝试连接到虚拟网络中的 Azure Cache for Redis 实例时,为何会收到一个指出远程证书无效的错误?
尝试连接到虚拟网络中的 Azure Cache for Redis 实例时,你会看到类似于以下内容的证书验证错误:
{"No connection is available to service this operation: SET mykey; The remote certificate is invalid according to the validation procedure.; …"}
这可能是因为你在通过 IP 地址来连接主机。 建议使用主机名。 换而言之,请使用以下字符串:
[mycachename].redis.cache.windows.net:6380,password=xxxxxxxxxxxxxxxxxxxx,ssl=True,abortConnect=False
避免使用类似于以下连接字符串的 IP 地址:
10.128.2.84:6380,password=xxxxxxxxxxxxxxxxxxxx,ssl=True,abortConnect=False
如果无法解析 DNS 名称,则可使用某些客户端库包括的
sslHost
(由 StackExchange.Redis 客户端提供)之类的配置选项。 此选项允许你替代用于证书验证的主机名。 例如:
10.128.2.84:6380,password=xxxxxxxxxxxxxxxxxxxx,ssl=True,abortConnect=False;sslHost=[mycachename].redis.cache.windows.net
是否可以将虚拟网络与标准或基本缓存一起使用?
虚拟网络只能与高级层缓存一起使用。
为什么在某些子网中创建 Azure Cache for Redis 实例会失败,而在其他子网中不会失败?
如果要将 Azure Cache for Redis 实例部署到虚拟网络,则缓存必须位于不包含其他资源类型的专用子网中。 如果尝试将 Azure Cache for Redis 实例部署到包含其他资源(例如 Azure 应用程序网关实例和出站 NAT)的资源管理器虚拟网络子网,则部署通常会失败。 先删除其他类型的现有资源,然后再创建新的 Azure Cache for Redis 实例。
子网中还必须有足够的可用 IP 地址。
子网地址空间的要求是什么?
Azure 会保留每个子网中的某些 IP 地址,不可以使用这些地址。 子网的第一个和最后一个 IP 地址仅为协议一致性而保留,其他三个地址用于 Azure 服务。 有关详细信息,请参阅
使用这些子网中的 IP 地址是否有任何限制?
除了 Azure 虚拟网络基础结构使用的 IP 地址以外,子网中的每个 Azure Cache for Redis 实例还为每个群集分片使用两个 IP 地址,为其他副本(如果有)使用 IP 地址。 为负载均衡器使用另外一个 IP 地址。 非群集缓存被视为包含一个分片。
能否将虚拟网络对等互连到缓存?
如果虚拟网络位于同一区域,则可以使用虚拟网络对等互连或 VPN 网关 VNET 到 VNET 连接来连接虚拟网络。
如果对等互连的 Azure 虚拟网络位于不同的区域:由于基本负载均衡器的约束,区域 1 中的客户端 VM 无法通过其负载均衡的 IP 地址访问区域 2 中的缓存。 也就是说,除非它是具有标准负载均衡器的缓存(当前仅使用可用性区域创建的缓存)。
有关虚拟网络对等互连约束的详细信息,请参阅“虚拟网络 - 对等互连 - 要求和约束”。 一种解决方案是使用 VPN 网关 VNET 到 VNET 连接,而不是虚拟网络对等互连。
当缓存承载在虚拟网络中时,是否所有缓存功能都可以使用?
如果缓存是虚拟网络的一部分,则只有虚拟网络中的客户端可以访问缓存。 因此,以下缓存管理功能目前无法使用。
-
Redis 控制台:由于 Redis 控制台在本地浏览器中运行(通常在未连接到虚拟网络的开发人员计算机上),因此它无法连接到缓存。
已启用 Azure Lighthouse 的缓存是否支持 VNet 注入?
否,如果你的订阅已启用 Azure Lighthouse,则无法在 Azure Cache for Redis 实例上使用 VNet 注入。 请改用专用链接。
将 ExpressRoute 与 Azure Redis 缓存配合使用
客户可以将
Azure ExpressRoute
线路连接到其虚拟网络基础结构。 通过这种方式,可以将本地网络扩展到 Azure。
默认情况下,新创建的 ExpressRoute 线路不会在虚拟网络上使用强制隧道(播发一个默认的路由,即 0.0.0.0/0)。 因此,可以直接从虚拟网络建立出站 Internet 连接。 客户端应用程序可以连接到包括 Azure Cache for Redis 实例在内的其他 Azure 终结点。
常见的客户配置是使用强制隧道(播发默认路由),以强制出站 Internet 流量改为流向本地。 如果接下来出站流量在本地遭到阻止,此通信流会断开与 Azure Cache for Redis 的连接,这样 Azure Cache for Redis 实例就无法与其依赖项通信。
解决方法是在包含 Azure Cache for Redis 实例的子网上定义一个或多个用户定义的路由 (UDR)。 UDR 定义了要遵循的子网特定路由,而不是默认路由。
如果可以,请使用以下配置:
-
ExpressRoute 配置会播发 0.0.0.0/0 并默认使用强制隧道将所有出站流量发送到本地。
-
应用于包含 Azure Cache for Redis 实例的子网的 UDR 使用公共 Internet 的 TCP/IP 流量工作路由来定义 0.0.0.0/0。 例如,它可以将下一跃点类型设置为“internet”。
这些步骤的组合效应是子网级 UDR 优先于 ExpressRoute 强制隧道,并可确保从 Azure Cache for Redis 实例进行出站 Internet 访问。
由于性能方面的原因,使用 ExpressRoute 从本地应用程序连接到 Azure Cache for Redis 实例不是典型的使用方案。 为获得最佳性能,应将 Azure Cache for Redis 客户端与 Azure Cache for Redis 实例置于同一区域中。
UDR 中定义的路由
必须
足够明确,以便优先于 ExpressRoute 配置所播发的任何路由。 下面的示例使用的 0.0.0.0/0 地址范围很宽泛,因此可能会意外地被那些使用更明确地址范围的路由播发重写。
未正确交叉播发从公共对等路径到专用对等路径的路由的 ExpressRoute 配置不支持 Azure Cache for Redis。 已配置公共对等互连的 ExpressRoute 配置会收到来自 Microsoft 的大量 Microsoft Azure IP 地址范围的路由播发。 如果这些地址范围在专用对等路径上未正确交叉播发,则结果是来自 Azure Redis 缓存实例子网的所有出站网络数据包都不会正确地使用强制隧道发送到客户的本地网络基础结构。 此网络流会破坏 Azure Redis 缓存。 此问题的解决方法是停止从公共对等路径到专用对等路径的交叉播发路由。
虚拟网络流量路由
中提供了有关 UDR 的背景信息。
有关 ExpressRoute 的详细信息,请参阅
ExpressRoute 技术概述
。
了解有关 Azure Cache for Redis 功能的详细信息。
-
Azure Cache for Redis 高级服务层