我个人有关 Azure 网络 SLA、带宽、延迟、性能、SLB、DNS、DMZ、VNET、IPv6 等的 Azure 常见问题解答
Igor Pagliai(微软)2014 年 9 月 28 日上午 5:57
最后更新:2014 年 11 月 3 日(增加了 2014 年欧洲 TechEd 大会新宣布的内容)。
重要提示:这篇文章中我提供的信息具有时间敏感性,因为这些信息未来可能会发生更改。我会尽量让这些内容保持最新状态,但是您还是应该阅读 Azure 官方文档源,对相关信息进行进一步确认。
过去三年内,我在 Azure IaaS 方面做了比较深入的工作。在与合作伙伴共事的过程中,我被问到很多有关 Azure 网络的问题,更具体地说,是有关虚拟网络 (VNET) 和 VM 的问题。要提供恰当的答案并不总是那么容易,有时候文档内容不清楚或者会漏掉细节,而有的时候您可以自己去发现,但需要足够多的知识。因为我在这些问题中发现了一些重复出现的内容,所以我决定在这篇博客文章中写下我的个人常见问题解答列表。事先声明:虽然我来自微软,对 Azure 有深入了解,但是我不会向您披露任何保留或机密信息。您在此处读到的内容可以由您自己再直接使用Azure时发现,或者可以直接使用官方和公开文档检索到。如果您有其他比较好的问题且答案会非常重要或者不容易检索到,请尽管在这篇文章下方添加评论。此外,关于 Azure 网络应该具备的新功能,如果您有相关建议或反馈,请使用以下链接提交您的想法或者为已有想法投票:
反馈论坛:网络(DNS、Traffic Manager、VPN、VNET)
像往常一样,您也可以在 Twitter 上关注我: @igorpag。谢谢。
Azure 是否为 VM 网络带宽提供 SLA?
我对几乎所有 VM 型号都进行了 VM 带宽测试,发现整个过程中结果都非常一致。因为官方数字尚未披露,所以我不会共享我的测试结果。您可能在 Internet 上找到了一些有关各种 VM SKU 最高网络带宽的旧表格和信息,但不要相信这些表格和信息,因为它们已经过期,而且 Azure 基础结构在此过程中已经有了发展。您仍可以使用这些信息做一个大概了解,但是您将需要等待官方发布相关的 SLA。
Azure 是否为 VM 到 VM 的网络延迟提供 SLA?
在我的测试和项目中,Azure 网络的延迟性能都表现优异。至少据我所知,没有任何云供应商可以通过正式的 SLA 为两台不同 VM 之间的最高网络延迟做保证。您自己可以很轻松地做个测试,深入了解平均延迟,但是在测试标准方面您需要非常小心。首先,您需要在一天中的多个时段进行测试,包括峰值时段和非峰值时段;在一周中的多个日子进行测试,包括周末和工作日;最后,您应该计算平均值,按延迟从小到大排序后关心前 95%的数据,以消除峰值和偶发奇怪值。此外,不要假设所有 Azure 数据中心的延迟都一样。如果您要自己进行测试,我推荐您使用 SYSINTERNAL 套件中的 PSPING 工具,可从此处下载:https://technet.microsoft.com/zh-cn/sysinternals/bb896649.aspx。这款工具的优点在于,它不使用 ICMP,这样就没有跨越防火墙和负载平衡器的问题,您可以决定使用哪个 TCP 端口。非常重要的是,您不但可以测试延迟,还可以测试带宽。有关使用该工具进行 Azure 延迟测试的详细信息,您可以阅读我之前的一篇博客文章:
Azure 网络延迟和 SQL Server 优化
另一个需要考虑的复杂性因素是两台 VM 在 Azure 数据中心中的位置:两台 VM 是在同一个 Azure 群集中还是在不同的群集中?如果在不同的群集中,延迟应该会因为有额外的跃点而稍微增加。再说一次,这没有官方文档。更有趣的是,您没办法知道 VM 在哪个 Azure 群集中,除非您向 Microsoft 支持提出申请进行询问。但是将 VM 并置于同一个 Azure 群集中却有快捷方法,具体内容请参阅下一部分。
Azure 数据中心到数据中心的流量是否会经过公共 Internet?
不会。通过 VPN 连接的、不同数据中心中 VNET 之间的流量会一直留在 Microsoft 自己的网络主干中,请参阅以下演示文稿中的第 34 张幻灯片:
MicrosoftAzure 网络技术介绍及新增功能
https://channel9.msdn.com/Events/TechEd/Europe/2014/CDP-B227
此外,如果使用 ExpressRoute 连接 VNET,流量也不会经过公共 Internet,而是使用私有租赁线路。
是否可以将 Azure 公共 IP 地址加入白名单?
可以,所有 Azure 公共 IP 范围都公布在以下链接中。如果因为安全原因,您想在内部部署网络中将这些 IP 加入白名单,您可以按区域而不是按服务,选择性地执行该操作。
Microsoft Azure 数据中心 IP 范围
https://www.microsoft.com/zh-cn/default.aspx
如果您依赖特定的 Azure 资源,例如 Azure SQLDB 实例或 Blob 存储帐户,请注意您看到的、用于解析具体 DNS 名称的分配 IP 可能会在没有通知的情况下发生更改。 重要提示:对于 Azure 使用的 Internet IP,请勿依赖任何地理定位服务,因为这些服务可能会报告错误信息,有关详细信息,请参阅以下博客文章:
Microsoft Azure 在美国区域使用非美国 IPv4 地址空间
如果您创建了自己的云服务,想要使用逆向 DNS 对该服务进行验证,您可以通过为云服务 VIP 启用 PTR 记录注册(由 Azure 提供)以实现该目的,具体说明请参阅以下链接:
宣布:适用于 Azure 云服务的反向 DNS
https://azure.microsoft.com/blog/2014/07/21/announcing-reverse-dns-for-azure-cloud-services
请注意,与云服务关联的虚拟 IP (VIP) 在某些情况下可能会发生改变,如果想要百分之百确保不发生这种情况,您需要启用“预留 IP”功能,具体说明请参阅以下博客文章:
云服务和虚拟机的预留 IP 地址
HYPERLINK"https://blogs.msdn.com/b/azchina/archive/2014/07/04/reserved-ip-addresses.aspx"https://blogs.msdn.com/b/azchina/archive/2014/07/04/reserved-ip-addresses.aspx
是否可以将 VM放在同一个群集中 ,以缩短网络延迟?
可以,这是可以实现的,但是因为最近引入了“区域虚拟网络”,所以流程发生了改变,具体说明请参阅以下博客文章:
区域虚拟网络
https://blogs.msdn.com/b/azchina/archive/2014/07/04/regional-virtual-networks.aspx
您基本上不需要创建与虚拟网络 (VNET) 绑定的关联组 (AG),只要在创建 VM 时指定 AG 即可。您即使使用了“区域虚拟网络”,也可以实现在同一个 Azure 群集中进行并置。请注意,所有新的 VNET 在默认情况下都是“区域虚拟网络”,您将无法继续在 Azure 门户中创建“本地虚拟网络”。此外,已经存在的 VNET 将自动迁移到“区域虚拟网络”中,无需用户干预。现在我还不清楚未来 AG 机制是否会被抛弃,但现在 AG 机制仍然可以按照我刚才为您说明的方式使用。
我无法确认的是“关联组”的发展方向:在我看来,但这只是个人观点,随着“区域网络”的出现,如果 Microsoft 通过某种方式在“区域网络”内保证了一种统一的延迟边界,关联组的存在将没有意义。
Azure VM 中的“*.internal.cloudapp.net”DNS 后缀是什么?
如果您构建 Azure VM 并将其加入到 Azure 虚拟网络中,在您尝试使用 VM 主机名称(清楚地说就是旧版 Netbios 名称)对这台 VM 执行 ping 操作时,您会看到以下画面:
从这张图片中您可以看到,FQDN 中有两个奇怪的部分:“cloudapp.net”没有什么奇怪的,但是“internal”和“a3”是什么?您可以很容易地猜到“internal”是 Azure 内部 DNS (iDNS) 用于托管 VM 记录并解析至内部 VM IP (DIP) 的默认 DNS 子区域。而“a3”有点复杂:简单地说,它描述了 VM 在特定 Azure 数据中心中所处的网络区域。这些区域没有相关的官方文档或者列表,所以不要细究,但是请注意,它不但在 Azure 数据中心之间会发生变化,在同一个数据中心内也会发生变化。
连接不同云服务中的 VM 会不会产生延迟开销?
答案是不会,或者至少是可以忽略。不久前,我和多个合作伙伴合作,将应用程序 VM 放置到了一个云服务中,然后将后端 VM (SQL Server) 放置到了另一个云服务中。如果您想要使用 SQL Server AlwaysOn 可用性组 (AG) 机制,这是一种典型情况。虽然应用程序 VM 将通过 Azure 负载平衡器 (SLB) 与后端 VM 连接,但是网络延迟开销非常小,因为 Azure 中有一种有趣的网络优化功能。在两台 VM 初次进行 TCP 连接握手时,Azure 会识别出该通信是两个内部资源之间的通信,并允许直接进行通信,这与同一个云服务内使用 DIP 进行网络连接的情况相同。您可以在我下面这篇博客文章中查阅我获得的详细测量数据:
Azure 网络延迟和 SQL Server 优化
Ping 和 Tracert 工具在 Azure 虚拟网络内部是否有用?
有用,这两种工具可以在 VNET 内完美工作,甚至可以通过 VPN 连接,在内部部署网络对 VNET 使用。如果您尝试跨越 Azure 负载平衡器 (SLB),这两个工具将不起作用。
Azure 负载平衡器 (SLB) 是否会使用轮询策略分发传入连接?
这是对 SLB 工作方式的常见误解。实际上,Azure SLB 是第 4 层软件负载平衡器,使用 5 元组(源 IP、源端口、目标 IP、目标端口、协议类型)计算用于将流量映射到 VIP 后的可用服务器的哈希函数。选择哈希函数是为了让分发到服务器的连接随机化,而不是完美地轮询。此外,至少到目前为止,还不支持会话关联。
Microsoft Azure 负载平衡服务
https://blogs.msdn.com/b/azchina/archive/2014/05/26/microsoft-azure-load-balancing-services.aspx
2014 年 10 月,Azure 引入了一种称为源 IP 关联(也称为会话关联或客户端 IP 关联)的新分发模式。Azure 负载平衡器可以配置为使用 2 元组(源 IP、目标 IP)或 3 元组(源 IP、目标 IP、协议)将流量映射到可用服务器上。使用源 IP 关联,同一客户端计算机上发起的连接都会转到同一个 DIP 端点。
Azure 负载平衡器新分发模式
https://azure.microsoft.com/blog/2014/10/30/azure-load-balancer-new-distribution-mode
Azure 负载平衡器 (SLB) 是否支持 SSL 终止?
AzureSLB 现在还不支持 SSL 终止,您必须在每台 VM 或每个 Web/Worker Role 实例中处理 HTTPS 加密和解密的终止过程。这是 Azure 网络团队正在考虑改进的一个方面。
允许在负载平衡器上进行 SSL 终止
我是否可以不使用 Azure SLB,而使用自己的负载平衡器?
可以,使用 Azure SLB 不是强制性的,Azure 有一种称为“基本级”的特定虚拟机,与标准 SKU 相比,基本级虚拟机的价格低 27%:
基本级虚拟机
https://blogs.msdn.com/b/azchina/archive/2014/07/02/basic-tier-virtual-machines.aspx
虽然“基本级”不提供自动伸缩功能,但是通过“可用性集”,您可以获得 99,95% 的可用性。此外,请注意,不是所有型号的CPU和 RAM 都有基本级:
为 VM 选择“基本”级后,您就可以安装自己的负载平衡器软件了。
我是否可以暴露 VM 的整个端口范围?
可以,Azure 有一个称为“实例级公共 IP 地址”的特殊功能,可以为 VM 提供“公共实例 IP”(PIP),并在默认情况下打开整个端口范围,无需创建任何端点。使用正常的 VIP,您最多只能创建/打开 150 个端点/端口,如果您要打开大量端口,这个功能可以满足您的要求。
实例级公共 IP 地址
https://msdn.microsoft.com/zh-cn/library/azure/dn690118.aspx
加入了 VNET 的 VM 可以支持多少连接?
对于 Windows Server,VM 可以支持大约 50 万条 TCP 连接,但是您需要小心,在达到这个阈值前可能会出现其他潜在限制:如果您通过 Azure 负载平衡器端点将 VM 暴露给 Internet 流量,您可能会受到 SLB 容量或 DDOS 安全机制的限制。实际上,在 SLB 或端点限制方面并没有相关的公共文档,连接数量和网络带宽方面也没有,所以您需要自己进行性能测试,确保一切正常运行。
我是否可以有多个 VNET 网关?
现在一个 VNET 只能有一个网络网关:如果您配置多个隧道,这些隧道会共享相同的最大网络带宽。
从上表中您可以看到,根据网关 SKU 的类型(默认或高性能)和连接类型(S2S VPN 或 Express Route),您可以创建的最大隧道数量是有限制的。
Azure 是否提供 DDOS 网络保护?
提供,Azure 基础结构设计为在网络受到源于 Internet 或内部其他租户 VM 的 DDOS 攻击时提供保护。有关详细信息,请参阅以下白皮书:
请注意以下要点:
- Windows Azure DDoS 防护系统的设计目的不仅包括抵御外部攻击,还包括抵御内部攻击。
- Windows Azure 会监控并检测内部发起的 DDoS 攻击,并将发起攻击的 VM 从网络中移除。
- Windows Azure 的 DDoS 保护也可以为应用程序提供帮助。但是,单个应用程序仍然可能会成为攻击目标。所以,客户应主动监控 Windows Azure 应用程序。
我是否可以在 Azure 虚拟网络内部使用 IPv6?
经确认,对 IPv6 的支持仍在开发过程中,您可以参阅以下链接:
在整个 Azure 平台支持 IPv6
Azure 常见问题中的其他评论 https://azure.microsoft.com/zh-cn/pricing/faq:
过去几年,Microsoft 在帮助客户从 IPv4 平稳过渡到 IPv6 方面起到了重要作用。迄今为止,Microsoft 已在其许多产品和解决方案(如 Windows 8 和 Windows Server2012 R2)中建立了 IPv6 支持。Microsoft 致力于通过 IPv6 扩展 Internet 的全球性功能并实现各种有用且激动人心的方案,包括点对点应用程序和移动应用程序。在 Azure 环境中启用 IPv6 的基础工作正在进行中。但是,我们目前无法公开 IPv6 支持正式发布的日期。
Azure 虚拟网络内是否支持 UDP 广播和多播?
在 VNET 内,甚至是跨 Azure SLB 都不允许这种通信类型。
在虚拟网络内支持多播
VM 上是否可以有多个 NIC?
可以,2014 年 10 月的欧洲 TechEd 大会上已经宣布了这项功能。请注意,添加更多的 NIC 不会为您增加更多带宽,所有 NIC 都会共享 VM 级别获得的限值。现在最多可以有 4 个额外的 NIC 且不需花费任何额外的成本,具体数量会因为 VM 型号的不同而发生变化:
- 大型 (A3) 和 A6:2 个
- 超大型 (A4) 和 A7:4 个
- A9:2 个
- D3:2 个
- D4:4 个
- D13:4 个
请注意,这其中存在一些限制,请确保阅读以下博客文章中“关于多个 NIC 的功能的常见问题解答和限制”部分:
Azure 中的多个 VM NIC 和网络虚拟设备
https://azure.microsoft.com/blog/2014/10/30/multiple-vm-nics-and-network-virtual-appliances-in-azure
值得一提的是,现在还可以在整个 VM 生命周期中保持 NIC 的以太网 (MAC) 地址不变。
我是否可以在虚拟网络内避免使用 DHCP?
可以,当您将一台 VM 加入 Azure 虚拟网络时,默认情况下这台 VM 将使用由 Azure 内部 DHCP 自动分配的内部 IP (DIP),先在您定义的地址范围内生效,最终在您指定的子网中生效。这个 IP 将拥有无限长的租赁时间,但在
特定情况下可能会发生改变,例如您通过取消配置停止 VM 时(默认行为)。如果要混合使用 DHCP 动态分配的 IP 和静态分配的 IP,建议使用不同的子网,避免可能发生的地址冲突。有关详细信息,请参阅以下博客文章:
虚拟机的静态内部 IP 地址
是否可以针对我的 Azure VM 运行网络渗透测试?
可以,您可以这样做,但是强烈建议在运行测试前遵循以下所述的具体流程,否则 Azure 监控和防御系统会被触发并将您的连接、IP 和/或 VM 加入黑名单。您需要从 https://download.microsoft.com/download/C/A/1/CA1E438E-CE2F-4659-B1C9-CB14917136B3/Penetration%20Test%20Questionnaire.docx 下载一份表单,填写必要的信息,然后向 Azure 客户支持开立支持表单并指定“Support Type: Billing”(支持类型: 计费)、“Problem type: Legal andCompliance”(问题类型: 法律和合规)以及“Category: Request for penetration testing”(类别: 渗透测试请求):
Azure VPN 保证的带宽是多少?
Azure VPN 没有最小保证带宽,唯一提供的 SLA 与高可用性有关 (99,90%),您可以从以下链接下载相关文档。如果您在 Internet 上搜索公共内容,您可能会找到多个消息来源,宣称有 60 到 100MB/秒的多个最大带宽值:这通常也是我个人测试中得到的值,我想再强调一遍,没有最小保证带宽。上限可能由支持 VPN 软件 Azure 侧的 VM 型号(小型)决定,我听到有传言说未来会改进,但还没有官方消息。
Microsoft Azure 云服务、虚拟机和虚拟网络 SLA
https://www.microsoft.com/zh-cn/default.aspx
VHD I/O 是否会计入 VM 网络带宽上限?
不会。与 IaaS VM VHD 访问相关的 I/O 将计入存储 IOPS 限值,但不计入网络限值。这似乎是一个复杂的问题,但因为持久的 VM 存储是联网到存储服务的,所以有些客户和合作伙伴会经常问这个问题。有关 Azure 存储的伸缩目标的官方数字,请参阅以下链接:
Azure 存储的可伸缩性和性能目标
HYPERLINK"https://msdn.microsoft.com/library/azure/dn249410.aspx" https://msdn.microsoft.com/library/azure/dn249410.aspx
如果您使用一些特殊功能,例如 SQL Server 2014 Azure Blob 存储集成或 Azure File(在 SMB 上),这些特殊功能在计入目标服务可伸缩性和性能限值的同时,也会计入 VM 网络带宽限值。
更新:有关 SQL Server 2014 和 Azure Blob 存储集成的新白皮书
MicrosoftAzure File 服务简介
https://blogs.msdn.com/b/azchina/archive/2015/01/13/introducing-microsoft-azure-file-service.aspx
我是否可以为我的应用程序流量使用 A8/A9VM Infiniband NIC?
这要看情况。我已经被多次问到这样的问题,例如,是否可以为 SQLServer AlwaysOn 可用性组复制流量使用Infiniband NIC,因为Infiniband NIC 可以提供高带宽、低延迟连接以及 RDMA 支持。在这种情况下,答案是不可以。这种 NIC 不提供一般的 TCP/IP 连接,所以所有应用程序将无法在“Network Direct”接口和 MS-MPI 协议上通信。
Windows Azure 的新高性能功能
我是否可以在 Azure 中创建 DMZ?
可以。2014 年 10 月的欧洲 TechEd 大会上引入了“网络安全组”(NSG) 之后,现在已经可以实施全功能的 DMZ,严格隔离同一个 VNET 中的子网之间的流量。
网络安全组可以应用于子网(虚拟网络内),也可以应用于单个虚拟机,从而启用两层保护。网络安全组内的规则可以独立于虚拟机进行修改和更新,从而允许在虚拟机生命周期以外管理访问控制列表。
Azure ILB 是否可以用于增强网络安全?
可以,但需要澄清安全帮助是什么,因为关于这个功能的工作方式有一些困惑。这个功能本质上可以帮助增强安全,因为它可以让您在使用 Azure SLB 时定义一个(或多个)不暴露给 Internet的负载平衡端点,进而增强安全。但是,这个功能不是一种分隔机制,因为即使使用 ACL,如果不使用 ILB,VNET 中的资源还是不会被隔离,所有 VM 都可以通过开放、全面的连接功能与其他所有 VM 连接。基于相同的原因,ILB 不能用于实现 DMZ。
如果您想要构建真正的 DMZ 配置,建议阅读这篇博客文章前面的“我是否可以在 Azure 中创建 DMZ?” 部分。
是否可以在虚拟网络中添加 Azure PaaS 服务?
可以。Microsoft 最近开始为 VNET 增加添加平台 PaaS 服务的功能:添加平台 PaaS 服务后,您可以在 IaaS VM 和 PaaS 服务之间获得双向访问权限。现在您可以为 Azure VNET 添加网站和 HDInsight HBASE 群集,未来有望增加更多服务:
Azure 网站虚拟网络集成
https://azure.microsoft.com/blog/2014/09/15/azure-websites-virtual-network-integration
在Azure 虚拟网络中配置 HBase 群集
https://azure.microsoft.com/zh-cn/documentation/articles/hdinsight-hbase-provision-vnet/
如果你有任何疑问, 欢迎访问MSDN社区,由专家来为您解答Windows Azure各种技术问题,或者拨打世纪互联客户服务热线400-089-0365/010-84563652咨询各类服务信息。