问题描述

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 记录并从虚拟网络中的任何位置访问这些终结点。

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

  1. 【应用服务 App Service】快速获取DUMP文件(App Service for Windows(.NET/.NET Core))

    问题情形 当应用在Azure 应用服务App Service中运行时,有时候出现CPU,Memory很高,但是没有明显的5XX错误和异常日志,有时就是有异常但是也不能明确的指出具体的代码错误.当面临这 ...

  2. 【应用服务 App Service】Azure 应用服务测试网络访问其他域名及请求超时限制(4分钟 ≈ 230秒)

    测试App Service是否可以访问其他DNS 当应用服务(Azure App Service)创建完成后,想通过ping命令来查看是否可以访问其他站点或解析DNS,但是发现ping命令无法使用.这 ...

  3. 【应用服务 App Service】App Service中抓取网络日志

    问题描述 众所周知,Azure App Service是一种PaaS服务,也就是说,IaaS层面的所有内容都由平台维护,所以使用App Service的我们根本无法触碰到远行程序的虚拟机(VM), 所 ...

  4. 【Azure API 管理】APIM集成内网虚拟网络后,启用自定义路由管理外出流量经过防火墙(Firewall),遇见APIs加载不出来问题

    问题描述 使用 Azure 虚拟网络,Azure APIM 可以管理无法通过 Internet 访问的 API,达到以保护企业内部的后端API的目的.在虚拟网络中,启用网络安全组(NSG:Networ ...

  5. 【应用服务 App Service】Azure App Service 中如何安装mcrypt - PHP

    问题描述 Azure App Service (应用服务)如何安装PHP的扩展 mcrypt(mcrypt 是php里面重要的加密支持扩展库) 准备条件 创建App Service, Runtime ...

  6. 【应用服务 App Service】解决无法从Azure门户SSH登录问题

    问题描述 中国区的Azure App Service(应用服务)已经支持创建Docker并选择Linux环境.在使用中,我们可以继续通过kudu站点的方式登录查看站点的一些日志及部署文件.它的登录方式 ...

  7. 【应用服务 App Service】在Azure App Service中使用WebSocket - PHP的问题 - 如何使用和调用

    问题描述 在Azure App Service中,有对.Net,Java的WebSocket支持的示例代码,但是没有成功的PHP代码. 以下的步骤则是如何基于Azure App Service实现PH ...

  8. 【应用服务 App Service】发布到Azure上的应用显示时间不是本地时间的问题,修改应用服务的默认时区

    问题情形 应用程序发布到App Service后,时间显示不是北京时间,默认情况为UTC时间,比中国时间晚 8 个小时. 详细日志 无 问题原因 Azure 上所有的服务时间都采用了 UTC 时间. ...

  9. 【应用服务 App Service】当遇见某些域名在Azure App Service中无法解析的错误,可以通过设置指定DNS解析服务器来解决

    问题情形 当访问部署在Azure App Service中的应用返回 "The remote name could not be resolved: ''xxxxxx.com'" ...

随机推荐

  1. Flink-v1.12官方网站翻译-P027-State Schema Evolution

    状态方案的演变 Apache Flink流媒体应用通常被设计为无限期或长时间运行.与所有长期运行的服务一样,应用程序需要更新以适应不断变化的需求.这对于应用程序所针对的数据模式也是一样的,它们会随着应 ...

  2. Pytest(7)自定义用例顺序pytest-ordering

    前言 测试用例在设计的时候,我们一般要求不要有先后顺序,用例是可以打乱了执行的,这样才能达到测试的效果. 有些同学在写用例的时候,用例写了先后顺序, 有先后顺序后,后面还会有新的问题(如:上个用例返回 ...

  3. C# 如何复制(拷贝)Label控件上的文本【新方法】

    Label控件在目前是无法直接调用成员函数来复制其文本内容.其实网络上有很多热心程序员网民解答过这个问题,百度上也可以搜索到,不过大多数人建议使用 TextBox 并把边框调整为不可见(运行时文本框看 ...

  4. hdu5790 Prefix(Trie树+主席树)

    Problem Description Alice gets N strings. Now she has Q questions to ask you. For each question, she ...

  5. 2020牛客暑期多校训练营(第八场) Kabaleo Lite

    传送门:Kabaleo Lite 题意 有n道菜,1≤n≤105,a[i]是每道菜可以赚的钱,−109≤ ai ≤109,b[i]是这道菜的个数,1≤bi≤105,你每次只能选从1开始连续的菜,然后问 ...

  6. HDOJ 1242

    纠结1242很久了,查了题解才发现要优先队列才能成功 http://blog.chinaunix.net/uid-21712186-id-1818266.html 使人开窍之文章 优先队列,已经不算是 ...

  7. AtCoder Beginner Contest 181 E - Transformable Teacher (贪心,二分)

    题意:有一长度为奇数\(n\)的数组\(a\),和长度为\(m\)的数组\(b\),现要求从\(b\)中选择一个数放到\(a\)中,并将\(a\)分成\((n+1)/2\)个数对,求最小的所有数对差的 ...

  8. Codeforces Educational Rounds 85 A~C

    A:Level Statistics 题意:统计n个游戏数据,p代表游玩次数,c代表通关次数,每次游玩都不一定通关,求这些数据是否合法 题解:1.游玩次数不能小于通关次数   2.游玩次数和通关次数必 ...

  9. kafka消息队列、环境搭建与使用(.net framework)

    一:kafka介绍 kafka(官网地址:http://kafka.apache.org)是一种高吞吐量的分布式发布订阅的消息队列系统,具有高性能和高吞吐率. 1.1 术语介绍 BrokerKafka ...

  10. 递归实现jsonTree

    using System;using System.Collections.Generic;using System.Text;using WeChatApi.Model;using System.L ...