Skip to main content

学习和使用VM应用体系架构

分类:  Azure指南 标签:  #Azure #基础 #Azure Cloud Architecting #Azure入门 发布于: 2023-05-28 10:19:22

我们前面学习过使用Web架构来将应用部署到Azure上,上一节使用的架构主要是依赖于Azure提供的PaaS服务,使得客户的应用具有更好的扩展性,更方便的工具进行监控,报警,但是在当前的环境我们还是有很多用户拥有运行非常良好的基于之前技术架构的应用系统,同时也拥有经验丰富的IT管理团队,这类用户数量非常庞大,他们如果需要将自己的应用迁移到云环境,那么就必须有一套方便的工具和架构帮助他们进行迁移和新的应用设计,这个就是我们今天需要学习的N层架构以及基于虚拟机部署。

采用云环境中的虚拟机和基础网络组件进行应用的架构是非常自然的选择,毕竟云计算出现之前所有的应用都是按照这个步骤进行架构的,对于大多数的管理员和应用设计者都是一个非常熟悉的环境,不过我们还是有必要重新检查一下基于虚拟机的N层架构在Azure上该如何设计。

先来看张架构图:


您也可以从这里直接下载visio文件<进行修改和演示:https://arch-center.azureedge.net/vm-reference-architectures.vsdx

架构说明

我们稍微对这个架构的一些基本情况和基本组件进行描述。

通用组件

  • 资源组: 资源组只是一个逻辑组件,方便用户将各种资源进行分组,分别对各个资源组进行管理。
  • 可用区域: 可用区域是指在Azure region中的物理位置,每个物理位置分别在不同的数据中心,包括多个相互依赖的物理硬件,包括供电,制冷,网络等等。

基本的网络组件

  • 虚拟网络以及子网:按照功能的不同将拥有相同业务功能或者逻辑的资源分配到相同的虚拟网络中,同时各个虚拟网络之间进行分隔。
  • 应用网关(Application gateway): 基于7层的负载均衡,这个架构中放置在入口,路由用户的HTTP请求,同时也提供一个WAF(Web应用防火墙)
  • 负载均衡(Azure load banlance): 使用标准的Azure负载均衡,对流量进行分发。
  • 网络安全组(NSG): 使用NSG在虚拟机网络中限制流量访问。
  • DDos防护: Azure提供的基础的DDos防护。
  • Azure DNS: Azure提供的域名解析服务。

虚拟机

在N层架构中,虚拟机是最主要的角色,用户需要自己创建虚拟机,自己管理虚拟机上应用的安装以及更新维护

最佳实践

我们这里描述的场景可能和用户的并不一致,用户可以根据自己的场景进行微调。

虚拟机最佳实践

虚拟机的选择请遵行如下几个基本准则,更详细的您可以参考:https://docs.microsoft.com/en-us/azure/architecture/reference-architectures/n-tier/windows-vm

  • 你可以从Azure提供的公共镜像中安装虚拟机,也可以直接从保存在Storage中的VHD来安装虚拟机,使用VHD可以制作多种类型的镜像,使用脚本方便的进行快速部署以及配置。
  • 为了更快速的安全的迁移,你可以选择和原应用基本一致的虚拟机大小,包括core数,内存,磁盘等等,关于虚拟机的Size, 您可以参考:https://docs.microsoft.com/en-us/azure/virtual-machines/sizes
  • 为了方便缩放,您可以创建虚拟机规模集。
  • 更推荐选择离用户更近的区域部署虚拟机。

虚拟机网络

  • 创建之前规划一下每个子网大约需要多少个IP地址,确保IP地址能适应业务扩展的需要。
  • 使用标准的私有IP地址,例如10.0.0.0/32, 192.168.1.0/24等等
  • 避免使用和本地网络重合的IP地址空间,以防将来需要将云环境和本地环境打通。
  • 按照功能将资源使用子网隔开,同时按照需求设计网络安全。

应用网关

关于Application Gateway的管理和配置,可以参考如下的网址:https://docs.microsoft.com/en-us/azure/application-gateway/configuration-overview

负载均衡(Azure Load Banlance)

  • 不要直接将虚拟机的暴露到公网中,虚拟机仅仅使用私有地址,通过应用网关将请求路由到虚拟机。
  • 定义负载均衡规则,路由流量到虚拟机

网络安全组

  • 限制所有从虚拟网络来的流入流量,使用Service Tag: VIRTUAL_NETWORK
  • 允许从业务层流入的流量
  • 允许从数据库层流入的流量
  • 允许从跳板机过来的3389和22流量

注意
创建2-4规则的优先级要高于第一个规则,这样可以覆盖第一条规则。避免将所有的流量都限制了。

跳板机

  • 所有访问虚拟机的请求都要从跳板机走。
  • 赋予跳板机一个公网IP, 同时赋予跳板机最小的性能要求。
  • 跳板机的安全防护要做到位,使用NSG严格限制跳板机的访问。

可扩展性的考量

在本架构中,对于web层,业务层,考虑使用虚拟机规模集,可以非常方便的添加或者移除节点,关于虚拟机规模集,您可以参考:https://docs.microsoft.com/en-us/azure/virtual-machine-scale-sets/virtual-machine-scale-sets-design-overview, 同时有两个基本的方法配置在虚拟机规模集中的虚拟机:

  • 使用扩展配置部署好的虚拟机。
  • 部署使用了自定义镜像的托管磁盘。

Azure订阅限制

每个Azure订阅都有一个默认的限制,例如可以创建多少个虚拟机等等,关于这个限制,您可以参考:https://docs.microsoft.com/en-us/azure/azure-subscription-service-limits

其他关于可用性考量,安全性考量,DevOps考量,您可以参考地址:https://docs.microsoft.com/en-us/azure/architecture/reference-architectures/n-tier/n-tier-sql-server