OpenAI Private Link 让 Azure 工作负载能够通过 Azure Private Link 访问区域 OpenAI API 端点,而无需直接连接到公共 API 端点。为 OpenAI 提供的每个区域 Private Link 服务创建一个专用端点,在专用 DNS 中配置其区域主机名的映射,然后向该主机名发送按常规方式进行身份验证的 API 请求。
如果您的组织严格要求流量始终通过 Azure 专用网络传输,请使用 Private Link。如果您没有专用网络方面的要求,OpenAI 的公共端点更易于设置和运维。Private Link 不兼容 IP 允许列表控制或双向 TLS(mTLS);如果您需要帮助来选择合适的企业网络控制措施,请联系 OpenAI。
Private Link 目前不支持自助开通。请联系您的 OpenAI 对接人或 联系销售,申请访问权限,并 获取所需区域的 Private Link 服务别名或 资源标识符。
了解 Private Link 的工作原理
部分客户一直在使用旧版 Private Link 解决方案(v1),该方案将每个专用端点连接到特定的 OpenAI API 集群。当前的区域方案有以下不同之处:
| 旧版 Private Link(v1) | 区域 Private Link | |
|---|---|---|
| 主机名 | 针对特定集群,例如 privatelink.enterprise.unified-1.api.openai.com | 针对特定区域,例如 southcentralus.privatelink.api.openai.com |
| OpenAI 路由 | 固定连接到一个 OpenAI API 集群 | 区域专用边缘网关,可将请求路由到多个后端 OpenAI API 集群 |
| 客户侧运行状况检查 | 旧版 v1 运行状况检查路径 | GET /v2/privatelink_healthcheck |
请求会经过以下路径:
- 您的应用通过专用 DNS 解析区域 Private Link 主机名。
- 该主机名解析到您虚拟网络中的 Azure 专用端点。
- 该专用端点连接到区域 OpenAI Private Link 服务。
- Private Link 服务将请求发送到 OpenAI 的区域专用边缘网关。
- 网关将请求路由到该区域通道中已启用企业功能的后端 OpenAI API 集群。
在同一区域通道内,Private Link 可以在路由时绕过不可用的后端集群,OpenAI 也可以添加后端集群,而无需您重新配置专用端点。它不会自动将流量从您所选的区域主机名转移到另一个区域的专用端点。请勿假定 Private Link 会沿用 OpenAI 公共端点的路由行为;您需要配置应用在区域之间进行故障转移的方式。
选择区域端点
OpenAI 会在接入过程中提供确切的 Private Link 服务别名或资源标识符。当前生产环境的区域主机名如下:
| 区域标签 | 客户使用的主机名 |
|---|---|
| 美国中南部 | southcentralus.privatelink.api.openai.com |
| 美国西部 | westus.privatelink.api.openai.com |
| 美国东部 2 | eastus2.privatelink.api.openai.com |
| 西班牙中部 / 欧盟 | spaincentral.privatelink.api.openai.com |
西班牙中部 / 欧盟主机名可以将请求路由到其他欧盟区域(如北欧)的后端集群。
设置 Private Link
1. 提供接入信息
请向 OpenAI 提供以下信息:
- 需要访问 OpenAI Private Link 服务的 Azure 订阅 ID。
- 您的 OpenAI 组织 ID。
- 您需要的区域。
- 用于接收维护和区域流量切换通知的运维联系人。
OpenAI 会允许这些订阅查看相应区域的 Private Link 服务并批准其访问,然后提供 Private Link 服务别名或资源标识符。
2. 创建专用端点
为每个所选区域创建一个专用端点。Azure 要求专用端点与客户虚拟网络位于同一区域。请将 --location 设置为该区域,该区域可能与 OpenAI Private Link 服务所在的区域不同。
以下命令使用 OpenAI 提供的 Private Link 服务资源标识符:
az network private-endpoint create \
--name openai-privatelink-southcentralus \
--resource-group <customer-resource-group> \
--location <customer-vnet-region> \
--vnet-name <customer-vnet> \
--subnet <customer-private-endpoint-subnet> \
--private-connection-resource-id <openai-provided-pls-resource-id> \
--connection-name openai-privatelink-southcentralus
如果 OpenAI 提供的是别名,请使用该别名并添加 --manual-request true:
az network private-endpoint create \
--name openai-privatelink-southcentralus \
--resource-group <customer-resource-group> \
--location <customer-vnet-region> \
--vnet-name <customer-vnet> \
--subnet <customer-private-endpoint-subnet> \
--private-connection-resource-id <openai-provided-pls-alias> \
--connection-name openai-privatelink-southcentralus \
--manual-request true
Azure 要求在使用别名连接时指定 --manual-request true;访问列表中的订阅仍可获得自动审批。
如果您的组织通过基础设施即代码管理专用端点,请采用类似的 Azure 门户或 Terraform 工作流程。
3. 在更改 DNS 之前测试连接
OpenAI 批准专用端点且 Azure 完成其预配后,请记录其专用 IP 地址。使用 curl --resolve 测试区域主机名,无需更改全局 DNS 配置:
curl -v \
--resolve southcentralus.privatelink.api.openai.com:443:<PRIVATE_ENDPOINT_IP> \
https://southcentralus.privatelink.api.openai.com/v2/privatelink_healthcheck
运行状况正常时,响应会返回 HTTP 200,并附带类似以下内容的消息:
{ "message": "Service is up" }
请使用确切的运行状况检查路径:/v2/privatelink_healthcheck。请将自动运行状况检查的流量保持在较低水平:除非 OpenAI 批准使用其他速率,否则每个区域端点的请求速率不得超过 1 QPS。
4. 配置专用 DNS
创建专用 DNS 记录,使每个区域 OpenAI Private Link 主机名在您的网络内解析到对应专用端点的 IP 地址:
| 主机名 | 专用端点 IP 地址 |
|---|---|
southcentralus.privatelink.api.openai.com | <southcentralus-private-endpoint-ip> |
westus.privatelink.api.openai.com | <westus-private-endpoint-ip> |
eastus2.privatelink.api.openai.com | <eastus2-private-endpoint-ip> |
spaincentral.privatelink.api.openai.com | <spaincentral-private-endpoint-ip> |
通过与您的应用相同的网络路径检查 DNS 和连接:
nslookup southcentralus.privatelink.api.openai.com
curl -v https://southcentralus.privatelink.api.openai.com/v2/privatelink_healthcheck
5. 在区域之间进行故障转移
Private Link 提供区域访问入口,但您的流量仍会发送到您选择的区域主机名。请配置客户端、服务网格、DNS 层或负载均衡层,以便在区域之间进行故障转移。
建议采用以下处理方式:
- 使用
GET /v2/privatelink_healthcheck探测每个已配置的区域。 - 收到 HTTP
200时,判定该区域可用。 - 收到
5xx响应,或出现连接错误、TLS 错误或反复超时时,判定该区域不可用。 - 仅在连续出现几次错误后才进行故障转移,以避免频繁切换。
- 在后台继续探测不可用的区域,并根据您的运维策略切回该区域。
区域健康检查反映私有边缘链路后端 OpenAI API 集群的健康状况。如果某个区域没有已知的后端集群、缺少健康检查配置,或健康的后端集群数量不足,就会返回错误。
如果您的路由决策取决于特定 API 或模型,请在执行此健康检查的同时,通过同一网络路径向该 API 和模型发送低频合成请求。
6. 更新应用程序的基础 URL
使用区域 Private Link 主机名作为 OpenAI API 的基础 URL:
from openai import OpenAI
client = OpenAI(
base_url="https://southcentralus.privatelink.api.openai.com/v1",
)SDK 会从您的环境中读取 OPENAI_API_KEY。
您也可以直接调用区域端点:
curl https://southcentralus.privatelink.api.openai.com/v1/responses \
-H "Authorization: Bearer $OPENAI_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "gpt-6-astra",
"input": "Say hello from Private Link."
}'先在开发或预发布环境中开始使用,然后逐步切换流量。
检查您的配置
接入或迁移到 Private Link 时,请使用以下检查清单:
- OpenAI 已确认您的 Azure 订阅 ID 可以访问所选区域的 Private Link 服务。
- 您已为每个所选区域创建专用终结点,并获得 OpenAI 的审批。
- 您已记录专用终结点的 IP 地址。
- 使用
curl --resolve访问/v2/privatelink_healthcheck成功。 - 从应用程序所在网络查询时,专用 DNS 会将区域主机名解析为专用终结点的 IP 地址。
- 应用程序可以通过区域主机名调用一个具有代表性的
/v1API 端点。 - 自动化健康检查已设置速率限制,并会在出错时记录区域、状态码和错误类型。
- 您已在受控环境中强制将某个区域设为不健康状态,以测试应用程序的故障转移行为。
- 您的运维文档已明确哪些人员可以更改 DNS、专用终结点配置和应用程序的区域路由。
检查端点兼容性
下表反映了所列公共 API 路由背后各项服务的当前部署配置。它不能替代客户在实际环境中的验证:请在每个目标区域测试模型可用性、产品访问限制、下游依赖项、请求大小限制、流式传输行为和 WebSocket 行为。Yes 表示区域链路中的每个后端集群都有该路由;No 表示该链路中没有对应的后端服务。
| 端点类别 | 美国中南部 | 美国西部 | 美国东部 2 | 西班牙中部 / 欧盟 |
|---|---|---|---|---|
/v1/responses | 是 | 是 | 是 | 是 |
/v1/chat/completions | 是 | 是 | 是 | 是 |
/v1/completions | 是 | 是 | 是 | 是 |
/v1/embeddings | 是 | 是 | 是 | 是 |
/v1/audio/*(推理) | 是 | 是 | 是 | 是 |
/v1/audio/*(管理) | 是 | 否 | 否 | 是 |
/v1/models | 是 | 是 | 是 | 是 |
/v1/files、/v1/uploads | 是 | 是 | 是 | 是 |
/v1/batches | 是 | 是 | 是 | 是 |
/v1/images/* | 是 | 是 | 是 | 是 |
/v1/moderations | 是 | 是 | 是 | 是 |
/v1/vector_stores | 是 | 是 | 是 | 是 |
/v1/organization/audit_logs | 是 | 是 | 是 | 是 |
其他 /v1/organization/*、/v1/usage | 是 | 否 | 否 | 是 |
/v1/realtime | 是 | 是 | 是 | 是 |
常见问题
Private Link 会自动执行跨区域故障转移吗?
不会。区域专用边缘通道可以在其配置的后端集群之间路由流量,但不会自动将您的流量转移到另一个区域的专用端点。请配置您的应用程序,使其能够在您使用的区域端点之间执行故障转移。
应该使用哪种健康检查?
请对区域主机名使用 GET /v2/privatelink_healthcheck。旧版 v1 健康检查路径探测的是后端集群的健康检查通道,因此请勿将其用作面向客户的探测接口。
应用程序应该使用哪个 API 主机名?
请使用区域主机名,并搭配常规的 /v1 API 路径,例如 https://southcentralus.privatelink.api.openai.com/v1。
AWS 或 Google Cloud 工作负载可以通过 Private Link 连接吗?
不能直接连接。Private Link 连接仅适用于 Azure。AWS 或 Google Cloud 中的工作负载只能通过客户自行管理的网络接入 Azure,例如使用 Azure 代理或跨云专用连接方案,然后从 Azure 通过 Azure Private Link 连接到 OpenAI。
Private Link 会改变身份验证方式吗?
不会。Private Link 只改变网络路径。请求仍需进行常规的 OpenAI API 身份验证和授权。
Private Link 支持所有 OpenAI API 吗?
不支持。是否支持某个 API,取决于该 API 在所选区域通道的每个后端集群上是否都可用。请先参考兼容性矩阵,然后在每个目标区域中测试您需要的每个 API 接口和模型。