写点什么

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

  • 2014-04-08
  • 本文字数:3810 字

    阅读完需:约 13 分钟

本文从产品设计和架构角度分享了 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 虚拟网络就是其中的关键所在。


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

给InfoQ 中文站投稿或者参与内容翻译工作,请邮件至 editors@cn.infoq.com 。也欢迎大家通过新浪微博( @InfoQ )或者腾讯微博( @InfoQ )关注我们,并与我们的编辑和其他读者朋友交流。

2014-04-08 04:535311

评论

发布
暂无评论
发现更多内容

MYSQL离线迁移至分布式TDSQL

腾讯云数据库

数据库 tdsql

字节内部进阶用的Java中高级岗技术图谱到底泄露了,和开源没区别

公众号_愿天堂没有BUG

Java 编程 程序员 架构 面试

简化IT运维工作,就要学会使用自动化运维工具!

行云管家

运维 云服务 IT运维

TDSQL金融级特性之:数据强一致性保障

腾讯云数据库

数据库 tdsql

分布式TDSQL的实践

腾讯云数据库

数据库 tdsql

淘宝网 Java 千亿级并发系统架构设计笔记(全彩版小册开源)

Java 架构 面试 后端 高并发

吊打面试官必备-阿里内部性能优化实战手册

Java架构师迁哥

阿里IM技术分享(三):闲鱼亿级IM消息系统的架构演进之路

JackJiang

架构 即时通讯 IM

什么?分布式事务现在不是都在用么?你还不会?

Java 架构 分布式 后端 计算机

「TEG+系列」破局者 - 腾讯金融级数据库TDSQL

腾讯云数据库

数据库 tdsql

华为云与北大BIOPIC联合发布蛋白质多序列比对开源数据集

华为云开发者联盟

AI 华为云 蛋白质 多序列 开源数据集

GraphQL 快速入门【2】环境设置

码语者

Rest graphql

TDSQL核心架构

腾讯云数据库

数据库 tdsql

马某兵VIP资料惨遭泄露,Java大厂面试手册,21年高频题版

Java架构师迁哥

云资源生命周期管理怎么做?用什么软件好?

行云管家

云计算 云服务 云资源 生命周期管理

代理服务器转发消息时的相关头部(qbit)

qbit

正向代理与反向代理 Proxy

张宏江出席HICOOL 2021全球创业者峰会,阐述AI研究与创业新机遇

硬科技星球

人工智能 大模型时代 悟道2.0

TDSQL是什么:腾讯如何打造一款金融级分布式数据库

腾讯云数据库

数据库 tdsql

TDSQL核心特性:极具挑战的“四高”服务与安全可运维

腾讯云数据库

数据库 tdsql

爬虫初探: 一次爬虫的编写尝试

程序员架构进阶

实战问题 个人思考 9月日更 spider 搜索结果

Alibaba内部713页Java程序性能优化实战手册首次开放!大受好评

公众号_愿天堂没有BUG

Java 编程 程序员 架构 面试

史诗级放水…字节3-2大牛分享350道Java岗真题,刷完获阿里offer

公众号_愿天堂没有BUG

Java 编程 程序员 架构 面试

Alibaba最新发布:2021最符合Java程序员的“学习路线”

Java架构师迁哥

TDSQL 全时态数据库系统 -- 典型案例

腾讯云数据库

数据库 tdsql

TDSQL数据同步和备份

腾讯云数据库

数据库 tdsql

IT大厂八股文更新上线的操作系统,刚上线点击量破百万!赶紧收藏

公众号_愿天堂没有BUG

Java 编程 程序员 架构 面试

非科班杀进字节跳动,全靠GitHub公认最强的数据结构与算法笔记

公众号_愿天堂没有BUG

Java 编程 程序员 架构 面试

TDSQL inside之路

腾讯云数据库

数据库 tdsql

为抢人才,字节架构师竟将42W字「2021大厂真题集」,上传GitHub

公众号_愿天堂没有BUG

Java 编程 程序员 架构 面试

智慧物流可视化,能否解决购物节后的爆仓危机?

ThingJS数字孪生引擎

大前端 物联网 可视化 智慧物流 数字孪生

SpringBoot 如何进行对象复制,老鸟们都这么玩的

Java 架构 后端 计算机 框架

通过Microsoft Azure服务设计网络架构的经验分享_服务革新_王枫_InfoQ精选文章