我个人有关 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工具,可从此处下载:http://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网络技术介绍及新增功能
http://channel9.msdn.com/Events/TechEd/Europe/2014/CDP-B227
此外,如果使用 ExpressRoute连接 VNET,流量也不会经过公共 Internet,而是使用私有租赁线路。
是否可以将 Azure公共 IP 地址加入白名单?
可以,所有 Azure公共 IP 范围都公布在以下链接中。如果因为安全原因,您想在内部部署网络中将这些 IP加入白名单,您可以按区域而不是按服务,选择性地执行该操作。
Microsoft Azure数据中心 IP 范围
http://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
http://azure.microsoft.com/blog/2014/07/21/announcing-reverse-dns-for-azure-cloud-services
请注意,与云服务关联的虚拟 IP (VIP)在某些情况下可能会发生改变,如果想要百分之百确保不发生这种情况,您需要启用“预留 IP”功能,具体说明请参阅以下博客文章:
云服务和虚拟机的预留 IP地址
HYPERLINK"http://blogs.msdn.com/b/azchina/archive/2014/07/04/reserved-ip-addresses.aspx"http://blogs.msdn.com/b/azchina/archive/2014/07/04/reserved-ip-addresses.aspx
是否可以将 VM放在同一个群集中,以缩短网络延迟?
可以,这是可以实现的,但是因为最近引入了“区域虚拟网络”,所以流程发生了改变,具体说明请参阅以下博客文章:
区域虚拟网络
http://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负载平衡服务
http://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负载平衡器新分发模式
http://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%:
基本级虚拟机
http://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地址
http://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 常见问题中的其他评论 http://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和网络虚拟设备
http://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加入黑名单。您需要从 http://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
http://www.microsoft.com/zh-cn/default.aspx
VHD I/O 是否会计入 VM网络带宽上限?
不会。与 IaaS VM VHD访问相关的 I/O 将计入存储 IOPS 限值,但不计入网络限值。这似乎是一个复杂的问题,但因为持久的 VM存储是联网到存储服务的,所以有些客户和合作伙伴会经常问这个问题。有关 Azure存储的伸缩目标的官方数字,请参阅以下链接:
Azure存储的可伸缩性和性能目标
HYPERLINK"http://msdn.microsoft.com/library/azure/dn249410.aspx"
http://msdn.microsoft.com/library/azure/dn249410.aspx
如果您使用一些特殊功能,例如 SQL Server 2014 Azure Blob存储集成或 Azure File(在 SMB上),这些特殊功能在计入目标服务可伸缩性和性能限值的同时,也会计入 VM网络带宽限值。
更新:有关 SQL Server 2014和 Azure Blob存储集成的新白皮书
MicrosoftAzure File服务简介
http://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网站虚拟网络集成
http://azure.microsoft.com/blog/2014/09/15/azure-websites-virtual-network-integration
在Azure虚拟网络中配置 HBase群集
http://azure.microsoft.com/zh-cn/documentation/articles/hdinsight-hbase-provision-vnet/
如果你有任何疑问, 欢迎访问MSDN社区,由专家来为您解答Windows Azure各种技术问题,或者拨打世纪互联客户服务热线400-089-0365/010-84563652咨询各类服务信息。