尽管 Azure AI 搜索是单区域服务,但可以通过跨多个区域部署具有相同配置和内容的多个搜索服务来实现更高的可用性和复原能力。
本文介绍跨区域解决方案的组件,这些组件依赖于您的自定义脚本或代码来处理服务不可用时的容灾切换。
有关 Azure AI 搜索的可靠性功能的详细信息,包括通过可用性区域实现的区域内复原能力,请参阅 Azure AI 搜索中的可靠性。
为何使用多个区域?
如果需要两个或更多的搜索服务,您可以在不同的区域中创建它们,以满足以下运营要求:
对区域中断的复原能力。 如果发生中断,Azure AI 搜索不会提供到另一个区域的即时故障转移。
全局分布式应用程序的快速性能。 如果索引和查询请求来自世界各地,则最接近主机数据中心的用户的性能会更快。 在靠近这些用户的区域中创建更多服务可以均衡每个人的性能。
多区域体系结构
在多区域设置中,两个或多个搜索服务位于不同的区域中,并具有同步索引。 用户会自动路由到服务,延迟最低。
Azure AI 搜索不提供跨区域索引复制的自动化方法。 但是,可以使用 推送或拉取模型索引来同步数据,这两者均在以下部分中介绍。 还可以添加 Azure 流量管理器或其他负载均衡器以 用于请求重定向。
下图演示了一组地理分布的搜索服务:
小窍门
有关完整的实现,请参阅 GitHub 上的 Bicep 示例 。 该示例部署了一个完全配置的多区域搜索解决方案,可以根据您所在的区域和索引策略进行修改。
数据同步
若要同步两个或多个不同的搜索服务,可以:
- 使用 文档 - 索引(REST API) 或 Azure SDK 中的等效 API 将内容推送到索引中。
- 使用索引器将内容拉取到 索引中。
如果使用 REST API 将内容推送到索引中,则可以在发生更改时向每个服务发送更新来同步多个搜索服务。 确保代码处理一个服务更新失败但其他服务失败的情况。
数据驻留
在不同的区域中创建多个搜索服务时,内容将存储在你为每个服务选择的区域。
Azure AI 搜索不会在未经授权的情况下将数据存储在指定区域之外。 使用写入 Azure 存储的功能时,授权是隐式的,可在首选区域中提供存储帐户。 这些功能包括:
如果搜索服务和存储帐户位于同一区域,则网络流量会通过 Microsoft Azure 主干网络使用专用 IP 地址,因此无法为网络安全配置 IP 防火墙或专用终结点。 或者,使用 受信任的服务例外。
请求故障转移和重定向
对于请求级别的冗余,Azure 提供了多个 负载均衡选项:
使用 Azure 应用程序网关 在应用程序层区域中的服务器之间进行负载均衡。
默认情况下,服务终结点通过公共 Internet 连接进行访问。 如果为源自虚拟网络中的客户端连接设置专用终结点,请使用应用程序网关。
评估这些负载均衡选项时,请考虑以下几点:
Azure AI 搜索是一种后端服务,可接受来自客户端的索引和查询请求。
默认情况下,服务终结点通过公共 Internet 连接进行访问。 对于源自虚拟网络中的专用终结点,建议使用 Azure 应用程序网关 。
Azure AI 搜索接受发送至
<your-search-service-name>.search.azure.cn终结点的请求。 如果在主机头中使用不同的 DNS 名称(例如 CNAME)访问同一终结点,则请求将被拒绝。客户端向搜索服务发出的请求必须经过身份验证。 若要访问搜索作,调用方必须具有 基于角色的权限 或向 请求提供 API 密钥 。