【Azure 应用服务】App Service与APIM同时集成到同一个虚拟网络后,如何通过内网访问内部VNET的APIM呢?

简介: 【Azure 应用服务】App Service与APIM同时集成到同一个虚拟网络后,如何通过内网访问内部VNET的APIM呢?

问题描述

App Service访问的APIM已配置内部虚拟网络(Internal VNet)并拥有内网IP地址。App Service与APIM都在相同的虚拟网络(VNET)中。App Service如何通过内网访问APIM呢?是否需要在虚拟网络中添加自定义DNS服务进行域名解析呢?

问题答案

是的,由于APIM配置的是内部虚拟网络,它只能接收从虚拟网络内部发送的请求,而无法接受从公网(Internet)发送的请求。所以App Service需要访问APIM,需要走内部虚拟网络的链路。同时,由于APIM的访问是通过域名访问,所以也必须需要DNS服务器来解析内网IP地址。

在App Service端需要的配置为

  • WEBSITE_VNET_ROUTE_ALL 设置为 1,让App Service所有的出站流量都可以被发送到 VNET中

 

在VNET中为APIM配置DNS记录

假设APIM的内部虚拟 IP 地址为 10.1.0.5,且APIM的名称为contosointernalvnet,则需要在DNS中配置以下指向的DNS A记录:

  • 10.1.0.5 contosointernalvnet.azure-api.cn
  • 10.1.0.5 contosointernalvnet.portal.azure-api.cn
  • 10.1.0.5 contosointernalvnet.developer.azure-api.cn
  • 10.1.0.5 contosointernalvnet.management.azure-api.cn
  • 10.1.0.5 contosointernalvnet.scm.azure-api.cn

 

参考资料

将App Service应用与 Azure 虚拟网络集成:https://docs.azure.cn/zh-cn/app-service/web-sites-integrate-with-vnet#azure-dns-private-zones

在内部虚拟网络中使用 Azure API 管理服务:https://docs.azure.cn/zh-cn/api-management/api-management-using-with-internal-vnet

 

附录信息

区域 VNet 集成的工作原理

应用服务中的应用托管在辅助角色上。 基本和更高的定价计划是专用托管计划,其中不会有任何其他客户的工作负载在同一辅助角色上运行。 区域 VNet 集成通过使用委托子网中的地址装载虚拟接口实现。 发送地址位于 VNet 中,因此它可以像 VNet 中的 VM 那样,访问位于 VNet 中或通过 VNet 传输的大多数内容。 网络实现不同于在 VNet 中运行 VM。 这就是一些网络功能尚不可用于此功能的原因。

启用区域 VNet 集成后,应用通过往常所用的通道对 Internet 进行出站调用。 应用属性门户中列出的出站地址是应用仍然在使用的地址。 就应用而言,变化在于:对服务终结点保护服务的调用或者 RFC 1918 地址进入 VNet 中。 如果 WEBSITE_VNET_ROUTE_ALL 设置为 1,所有出站流量都可以被发送到 VNet 中。

 

DNS 配置

如果 API 管理采用外部虚拟网络模式,则 DNS 由 Azure 管理。 使用内部虚拟网络模式时,必须自行管理 DNS。

  • 备注:API 管理服务不会侦听来自 IP 地址的请求, 它只响应到发往其服务终结点上配置的主机名的请求。 这些终结点包括网关、Azure 门户和开发人员门户、直接管理终结点和 Git。

基于默认主机名的访问权限

创建 API 管理服务(例如“contosointernalvnet”)时,将默认配置以下服务终结点:

  • 网关或代理:contosointernalvnet.azure-api.net
  • 开发人员门户:contosointernalvnet.portal.azure-api.cn
  • 新开发人员门户:contosointernalvnet.developer.azure-api.cn
  • 直接管理终结点:contosointernalvnet.management.azure-api.cn
  • Git:contosointernalvnet.scm.azure-api.net

若要访问这些 API 管理服务终结点,可以在连接到虚拟网络(其中部署了 API 管理)的子网中创建虚拟机。 假设服务的内部虚拟 IP 地址为 10.1.0.5,则可映射 hosts 文件 (%SystemDrive%\drivers\etc\hosts),如下所示:

  • 10.1.0.5 contosointernalvnet.azure-api.cn
  • 10.1.0.5 contosointernalvnet.portal.azure-api.cn
  • 10.1.0.5 contosointernalvnet.developer.azure-api.cn
  • 10.1.0.5 contosointernalvnet.management.azure-api.cn
  • 10.1.0.5 contosointernalvnet.scm.azure-api.cn

然后即可从创建的虚拟机访问所有服务终结点。 如果在虚拟网络中使用自定义 DNS 服务器,则还可创建 DNS 记录并从虚拟网络中的任何位置访问这些终结点。

相关文章
|
6月前
|
Java 应用服务中间件 API
【App Service】部署War包到Azure云上遇404错误
Java应用部署至Azure App Service for Windows后报404,本地运行正常。经排查,日志提示类文件版本不兼容:应用由Java 17(class file version 61.0)编译,但环境仅支持到Java 11(55.0)。错误根源为Java版本不匹配。调整App Service的Java版本至17后问题解决,成功访问接口。
615 3
|
6月前
|
网络协议 Linux 虚拟化
配置VM网络:如何设定静态IP以访问主机IP和互联网
以上就是设定虚拟机网络和静态IP地址的基本步骤。需要注意的是,这些步骤可能会因为虚拟机软件、操作系统以及网络环境的不同而有所差异。在进行设定时,应根据具体情况进行调整。
515 10
|
6月前
|
存储 Linux 网络安全
【Azure App Service】Root CA on App Service
Azure App Service for Windows应用连接外部SSL服务时,需确保其证书由受信任的根CA颁发。多租户环境下无法修改根证书,但ASE(单租户)可加载自定义CA证书。若遇证书信任问题,可更换为公共CA证书或将应用部署于ASE并导入私有CA证书。通过Kudu的PowerShell(Windows)或SSH(Linux)可查看当前受信任的根证书列表。
156 13
|
7月前
|
API 网络架构 容器
【Azure Container App】查看当前 Container App Environment 中的 CPU 使用情况的API
在扩展 Azure Container Apps 副本时,因 Container App Environment 的 CPU 核心数已达上限(500 cores),导致扩展失败。本文介绍如何使用 `az rest` 命令调用 Azure China Cloud 管理 API,查询当前环境的 CPU 使用情况,并提供具体操作步骤及示例。
285 17
|
7月前
|
Shell 开发工具 git
使用代理访问网络各项命令总结
工作中常需设置代理,容易导致环境混乱。本文总结了 SourceTree 无法拉取代码的问题,排查了环境变量、Git 全局配置及系统代理设置,最终通过清除 Git 代理配置解决。内容涵盖排查步骤、命令整理及脚本处理,帮助快速定位并解决代理相关网络问题。
430 3
|
7月前
|
数据安全/隐私保护
【Azure Function App】PowerShell Function 执行 Get-AzAccessToken 的返回值类型问题:System.String 与 System.Security.SecureString
将PowerShell Function部署到Azure Function App后,Get-AzAccessToken返回值类型在不同环境中有差异。正常为SecureString类型,但部分情况下为System.String类型,导致后续处理出错。解决方法是在profile.ps1中设置环境变量$env:AZUREPS_OUTPUT_PLAINTEXT_AZACCESSTOKEN=false,以禁用明文输出。
211 1
|
7月前
|
网络协议 Java Linux
【App Service】在Azure环境中如何查看App Service实例当前的网络连接情况呢?
在 Azure App Service(Windows 和 Linux)中部署应用时,分析网络连接状态是排查异常、验证端口监听及确认后端连接的关键。本文介绍如何在 Linux 环境中使用 `netstat` 命令查看特定端口(如 443、3306、6380)的连接情况,并解析输出结果。同时说明在 Windows App Service 中 `netstat` 被禁用的情况下,如何通过门户抓包等替代方法进行网络诊断。内容涵盖命令示例、操作步骤及附录说明,帮助开发者快速掌握云环境中的网络分析技巧。
203 11
|
6月前
|
缓存 移动开发 JavaScript
如何优化UniApp开发的App的启动速度?
如何优化UniApp开发的App的启动速度?
1200 139
|
6月前
|
移动开发 JavaScript weex
UniApp开发的App在启动速度方面有哪些优势和劣势?
UniApp开发的App在启动速度方面有哪些优势和劣势?
555 137