通过Microsoft Azure服务设计网络架构的经验分享(转)

原文:http://www.infoq.com/cn/articles/azure-networking-tips

本文从产品设计和架构角度分享了 Microsoft Azure 网络服务方面的使用经验,希望你在阅读本文之后能够了解这些服务之间,从而更好地设计你的架构。

  Microsoft Azure 的网络架构特别针对企业私有云和混合云进行了设计,其中包含三个常用的服务:

  1. 虚拟网络(Virtual Network):连接本地网络与云端基础设施
  2. 流量管理器(Traffic Manager):将用户流量分配到不同的数据中心
  3. 名称解析服务(DNS):使用内部主机名作为云服务的解析

  下面,我将着重介绍使用这三个服务时需要注意的地方,以及使用 Microsoft Azure 网络服务时需要注意的一些其他方面,比如站点对站点 VPN 的安全设置,私有 IP 地址和共有 IP 地址的使用,BGP 网络的使用,网络延迟问题如何处理等。

  阅前须知

  Microsoft Azure 使用了一些特有的术语,其中有两个需要特别注意:

  VIP(虚拟 IP 地址):Azure 网络上的一个公有 IP 地址,用来从外网连接 Azure 虚拟网络中的虚拟机。此 VIP 并非网络负载平衡 NLB 解决方案中的虚拟 IP 地址。

  DIP(直接 IP):DHCP 分配的实际 IP 地址,用来给虚拟网络中的虚拟机使用。此 DIP 并非 NLB DIP。

  虚拟网络(Virtual Network

  虚拟网络可用于创建和管理 IPv4 地址空间。你可以在本地内网和虚拟网络之间建立 VPN 安全连接,也可以通过网络对接的方式将云端应用连接到本地。

  虚拟网络可用于在虚拟机(Virtual Machine)之间建立连接。需要注意的是,你需要先创建好虚拟网络,然后在创建虚拟机的时候将其关联至已经创建好的虚拟网络。同理,虚拟网络也可以在云服务(Cloud Service)之间建立连接,这样做的好处是可以让不同云服务下的虚拟机之间通过私有 IPv4 地址互相通信。

  还有一点需要注意的是,你在首次创建虚拟网络之前必须先创建地缘组(Affinity Group),因为没有关联地缘组的虚拟网络是未经过优化的。地缘组是 Microsoft Azure 用于定位服务的逻辑分组,比如“中国东部区域”。如果我们未来在同一地缘组内创建存储服务,那么分组内其他云服务使用该存储服务的性能更优化。

  当你创建一个 Azure 虚拟网络时,你需要使用私有 IP 寻址方案,而不能使用共有 IP 地址。另外,你需要确认你的私有网络中没有占用这些 IP,也不能有重叠的 IP 地址。

  Azure 在数据中心的出口是使用 BGP 网路,虚拟网络目前不支持内部使用网关 NLB。如果你想实现高可用,只能依赖于其它方法或硬件,例如硬件备份的方式,当主 VPN 网关失效之后启用备份服务器(如 Windows Server 2012 路由与远程访问服务 RRAS 于集群之上)。

  当你创建一个 Azure 虚拟网络时,请求 IP 地址的集合代表所有汇总的子网络。虽然你可以汇总网络,但这些子网之间没有路由,也没有办法在这些子网中间执行访问控制。

  在 Azure 虚拟网络中,虚拟机默认使用 DHCP 获取 IP 地址。你可以给虚拟机配置静态 IP,但必须使用 PowerShell 创建 VM。如果不使用 DHCP 的话,Azure 虚拟网络系统会认为设备处于未知的状态,从而导致你无法连接虚拟机。不过,尽管虚拟机的 IP 地址是使用 DHCP 获取的,但他们在运行过程中的 IP 地址是不变的——除非你停止(已取消分配)或重新创建。如果你是用 Management Portal 来"关闭"虚拟机,那计费会停止并会显示"已取消分配"(见下图),使用中的 IP 会释放。但如果你通过连接虚拟机的操作系统上来关机,则不会停止计费也不会释放 IP。

  在 Azure 虚拟网络中有多种方式连接虚拟机。默认,每个虚拟机都有一个 RDP 端口,并且开启了进入端口。注意,Azure 不使用默认的 RDP 端口 3389。如果你不想让你的虚拟机暴露在外面,你也可以选择禁用端口或更改到其它的端口。另外一种连接虚拟机的方式是通过站点到站点 VPN 从企业内部网络连接到 Azure 虚拟网络,这种方式和在分支机构和总公司使用站点到站点 VPN 下来进行 RDP 连接是一样的,后面会介绍这种方式的用法。

  如果你不在办公网络,或者你不想通过 VPN 连接到办公网络,你可以使用“点到站点”的方式连接虚拟机,这种连接相当于是 SSTP 远程访问 VPN,比直接用 RDP 连接 Azure 虚拟网络更安全。

  流量管理器(Traffic Manager

  流量管理器为 Microsoft Azure 的另一个重要网络服务。通过使用流量管理器,你可以将用户分配到 Azure 数据中心的“最优”位置,确保云应用程序的性能、可用性及弹性。

  流量管理器使用智能策略引擎处理 DNS 域名请求。你需要在 Management Portal 创建配置以使用流量管理器,需要配置的项包括:

  • 属性:包括你所创建的域名前缀,该前缀在 Management Portal 中可见。
  • 定义:包括策略设置和属性的检测设置。
  • 策略:用来指定负载均衡方法和终端。
  • 监视器:用来规定超时、协议、端口和相关路径。

  流量管理器提供了三个负载均衡方法:性能、容错、或循环:

  1. 性能:根据网络延时,该方法将流量引向最近的数据中心。
  2. 循环:该方法将流量均等地分配到各个数据中心。
  3. 容错:如果主服务出错,该方法将流量引向备份服务或数据中心。

  目前流量管理器可支持 IPv6,但不支持 sticky sessions,在变更策略配置时不会有服务中断。在服务和应用上的使用也必须多注意后端存储配置的一致性。流量管理器适合在网站和不会常变动静态内容的服务等场景下使用。

  DNS域名解析

  Microsoft Azure 提供域名解析服务,但该服务仅可解析同一云服务下的实例名。如,Service C 下的 Virtual Machine A 和 Virtual Machine B 之间可以直接通过各自的完全域名(FQDN)互相访问而无需在外部配置 DNS 服务器。如果你的虚拟机实例运行在不同的云服务下,那么你需要使用外部的 DNS 解决方案,如公用 DNS 服务器、ISP 的 DNS 服务器、或者公司网络的 DNS 服务器。

  如果你想解析其它虚拟机器的名字,如互连网或者办公网络里的机器,你可以向 Azure 虚拟网络中添加 DNS 服务器。就像在 DHCP 选项中添加 DNS 服务器地址一样。给虚拟机分配的 DNS 服务器地址可以是 Azure 虚拟网络中 DNS 服务器 IP 地址,也可以是互连网上的 DNS 服务器地址。如果在 Azure 虚拟网络中放置了一个域控制器,也必须确保让控制器也配置了 Azure 上的 DNS 服务器。

  对站VPN

  该方案可以让企业快速安全地在 Microsoft Azure 上部署虚拟机,其应用前景广阔,可用于开发和测试:你可以设置从本地工作站访问虚拟机来验证和测试程序,资源快速实例化可帮迅速验证待上线的程序以及其它需要在企业内部和公有云上作安全信息传递的服务。

  内部网络和 Azure 虚拟网络之间的站点到站点 VPN 使用 IPSec 隧道模式。注意,Azure 只支持特定的本地 VPN 网关设备。如果没有支持的硬件设备,你也可以使用 Windows Server 2012 路由与远程访问服务(RRAS)去创建一个站点到站点 VPN 连接。另外, Azure 支持用配置脚本去配置你的内部 VPN 网关。

  如果你希望使用 Microsoft Azure 网关建立站点对站点 VPN,则本地 VPN 设备必须支持 IKE v1 或者 IKE v2。需要注意的是,Microsoft Azure 在使用 IKE v1 时只支持静态路由功能,要使用动态路由功能必须使用 IKE v2。

  网络延迟对混合型应用的影响

  建立混合型应用程序时,无论是现有应用的移植还是创建全新应用服务,了解网络延迟对其潜在的影响十分必要。当 Azure 开始探索将应用移植到混合型模式时,我们很快便会意识到应用程序或许不能在混合模式下做出完美响应。

  以经典的双层应用程序为例,其原始结构,包括用户、网页服务器和数据库服务器之间的响应时间均为几毫秒。如果我们将网页服务器转移到 Microsoft Azure,但数据库服务还在本地,则会给拓扑结构带来超过 30 毫秒的延迟,而此前的延迟为 3 毫秒!这个延迟在进行众多操作的同时传输大量数据的情况下尤其严重。我们实施过的一些应用在单独页面点击会发出数百个冗余调用,像这种情况就必须要重新设计。

  延迟有时还可能是“最后一公里”的影响。比如我们的程序在数据中心里测试的结果是延迟 1 毫秒,但当将网络前台移植到 Microsoft Azure 时,该延迟就变为 30 毫秒。所以,广泛的测试是必要的。

  如果需要新的混合云应用服务,我们在设计时就要考虑到延迟。我们也可以使用 Microsoft Azure Cache 以及 CDN 服务,尽量使数据更加接近用户或本地服务器。如果需要移植软件,我们可以通过使用软件网络模拟器来提前了解延迟。虽然很难准确判断延迟影响应用程序的方式,但我们应该对此类问题在设计架构之初就要多加留意。

  总结

  很多企业已经意识到云计算所能带来的潜力。然而,有些企业倾向于投资内部私有云基础架构。许多企业这样做主要出于安全考虑,认为将公司所有数据转移到公有云服务提供商的行为存在隐患。私有云确实能够充分利用云计算主要功能,但对于要求敏捷性、灵活性的企业来说,所要求的功能远不止这些。在这种环境下,混合型云计算将迎来巨大的投资价值。如今,企业可以决定哪些数据可以发布到公有云服务提供商,哪些数据留在本地。混合型云计算让企业从两个方面均得到最大收益:“云计算”和“本地资源”。

  在过去传统的数据中心,企业如要处理日益增加的需求,就必须在数据中心添加更多的服务器,购买硬件后还要在上面部署新的操作系统和应用程序,当中需要经过预算、硬件采购、等待供应商交货的漫长周期。而在 Microsoft Azure 平台,企业现在可以轻松地扩展内部部署的数据中心到云端,而 Microsoft Azure 虚拟网络就是其中的关键所在。

  感谢马国耀对本文的审校。

时间: 12-12

通过Microsoft Azure服务设计网络架构的经验分享(转)的相关文章

Microsoft Azure开发体验 – 网络报名系统

去年底RP好抢到了中国版Azure的使用机会,最近社团里讨论到9月份招新的问题,就用Azure Website和Azure Table Storage打造了这个报名系统. 网站放在 http://joinzjazure.chinacloudsites.cn/ ,一个很简单的页面,用的是bootstrap的CSS,针对不同分辨率的屏幕做了优化,在手机上也可以有不错的体验. 基础知识 阅读本文,我假定你具有以下知识: C# 基础知识 ASP.NET MVC 基础知识 知道 Azure 的概念 ASP

Microsoft Azure系列之二 Microsoft Azure概述

一.什么是Microsoft Azure Azure 是微软提供的一个灵活而开放的云平台,通过该平台,您可以在数据中心快速生成.部署和管理应用程序. Azure 支持所有主流操作系统.语言或开发工具,并且能够将公有云应用程序与现有 IT 基础设施相集成. Azure 服务托管在全球数据中心网络中,由微软的技术人员进行7 天/24 小时的管理,使计算服务的服务水平协议(SLA)的可用性高达99.95%. 注释:Microsoft Azure 原来被命名为 Windows Azure?. 二.Mic

Microsoft Azure P2S VPN 配置

1. 前言 使用管理门户创建连接到公司网络的Microsoft Azure 虚拟网络,可在其中部署 Microsoft Azure 服务并与公司网络进行通信. 先决条件 要用于虚拟网络和子网的地址空间(使用 CIDR 表示法). DNS 服务器的名称和 IP 地址(若要使用本地 DNS 服务器进行名称解析). VPN 设备的公共 IP 地址.此 VPN 设备不能位于 NAT 的后面.您可以从网络工程师处获得它. 本地网络的地址空间. 2. 配置Point to Site VPN 目前中国区的Az

01   Cisco网络架构

智能信息网(Intelligent Information Network, IIN) 面向服务的网络架构(Service-Oriented Network Architecture,SONA) 融合网络数据流: 语音和视频数据流.语音应用数据流.关键任务数据流.交易数据流.路由协议数据流.网络管理数据流 Cisco IIN 3个阶段 阶段1--集成传输:将数据.语音和视频合并到一个IP网络中,从而实现安全的网络融合. 阶段2--集成服务:通过融合网络集成设施,可以集中和共享IT资源(这被称为虚

基于Microsoft Azure、ASP.NET Core和Docker的博客系统

欢迎阅读daxnet的新博客:一个基于Microsoft Azure.ASP.NET Core和Docker的博客系统 2008年11月,我在博客园开通了个人帐号,并在博客园发表了自己的第一篇博客.当然,我写博客也不是从2008年才开始的,在更早时候,也在CSDN和系统分析员协会(之后名为"希赛网")个人空间发布过一些与编程和开发相关的文章.从入行到现在,我至始至终乐于与网友分享自己的所学所得,希望会有更多的同我一样的业内朋友能够在事业上取得成功,也算是为我们的软件事业贡献自己的一份力

面向服务的体系架构(SOA)—架构篇

面向服务的体系架构(SOA)-架构篇 1.面向服务的体系架构(SOA) 面向服务的架构(service-oriented architecture)是Gartner于2O世纪9O年代中期提出的面向服务架构的概念.2002年的l2月,Gartner提出"面向服务的架构(SOA)"是"现代应用开发领域最重要的课题"之后.国内外计算机专家.学者掀起了对SOA的积极研究与探索. 在分布式的环境中,将各种功能都以服务的形式提供给最终用户或者其他服务.如今,企业级应用的开发都采

【netty】Netty系列之Netty百万级推送服务设计要点

1. 背景 1.1. 话题来源 最近很多从事移动互联网和物联网开发的同学给我发邮件或者微博私信我,咨询推送服务相关的问题.问题五花八门,在帮助大家答疑解惑的过程中,我也对问题进行了总结,大概可以归纳为如下几类: Netty是否可以做推送服务器? 如果使用Netty开发推送服务,一个服务器最多可以支撑多少个客户端? 使用Netty开发推送服务遇到的各种技术问题. 由于咨询者众多,关注点也比较集中,我希望通过本文的案例分析和对推送服务设计要点的总结,帮助大家在实际工作中少走弯路. 1.2. 推送服务

如何用ping来测试Azure虚机网络延迟的监测工作

ping操作是大家非常熟悉的测试网络连通性和延迟的操作,之前曾经听到有客户用不能"ping"通azure虚机来说事.因为客户需要能够实现对网络延迟的监测.而在windows Azure上我们是无法使用ping从外部监测Azure上的虚拟机,也无法从Azure虚拟机监测外部延迟的.因为ping基于ICMP协议,在WindowsAzure上,所有服务的对外接口都仅支持TCP和UDP协议.其实,我们可以做到实现对网络延迟的监测.微软technet提供了一个工具叫psping.可以从这里下载h

Openstack Liberty网络架构实现分析(一)

春节前在研究Openstack最新版本Liberty网络时,发现了一篇较好的介绍Liberty网络实现和一些新技术的文章.经过仔细研究后决定写写研究后的体会. 此系列文章分为7个部分,分别介绍: 1.Liberty网络总览 2.网络架构 3.Neutron配置 4.网络创建 5.添加路由.网络和子网 6.在租户网络启动虚机 7.在FLAT网络启动虚机 文章连接:OpenStack Liberty Neutron Deployment (Part 1-7 Overview) http://www.