业务云化过程中,Web类应用通常是上云第一步。在此过程中,IT从业者们往往会遇到一个问题,如何将Web应用通过云服务解决方案进行部署与托管?此时,您需要一个合适的架构,实现Web应用在云上的正确部署和长期演进。

本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。

本实验从企业级应用的稳定性架构出发,模拟了在线业务可能遇到机器宕机、单节点故障等场景,通过高可用架构成功避免了单点故障风险,保障了业务稳定性和服务永续。

实验架构

本次实验,基于阿里云“高可用、稳定性”的企业级方案架构进行实践。同时,本实验使用了开源项目代码(若依框架-前后端不分离版),成功在此架构上构建了一个用户权限管理系统的网站应用。部署成功后,模拟企业业务中单机故障场景(如一台服务器宕机),此时高可用服务架构保障业务系统仍可正常访问,保障了企业服务的高可用性与稳定性。

方案部署:

  • 图中橙色部分是本次实验会重点涉及的产品,在部署高可用架构时,注意点如下:
    • 2台云服务器ECS:同地域、同VPC、不同可用区(实现跨可用区级高可用)。
    • 应用型负载均衡ALB:(1)与2台ECS在同地域、同VPC,(2)ALB实例网络类型选择公网,此时默认包含按流量付费的弹性公网IP,(3)ALB配置时将2台ECS添加到ALB监听服务器组内。
    • 公网NAT网关:(1)与2台ECS在同地域、同VPC,(2)配置访问模式为VPC全通模式(SNAT),则VPC内ECS访问公网时都会统一通过NAT对外访问,实现了统一公网出口的架构收敛。
    • 云数据传输CDT:CDT提供了每个月免费20GB的公网流量,开通后可以抵扣按流量付费的弹性公网IP流量(如上述ALB/NAT所绑定的EIP流量费均可被抵扣),实现了公网的有效成本管理。
    • 云数据库RDS:(1)与2台ECS在同地域、同VPC,(2)RDS配置时,注意白名单管控,仅允许VPC内两台ECS私网地址进行访问,保障了数据安全性。
    • 其他产品:如存储OSS、DNS解析、SSL证书、CDN等,本次实验中未全部涉及,但实际企业业务部署时,均可能会涉及到使用,可以参考以上架构图进行搭建。

方案说明:

  • 架构中重点强调了VPC内架构的搭建,强调内容有:
    • 强调高可用:突出2个可用区,要求资源部署在2个可用区,实现可用区级别的容灾。
    • 强调VPC内的地址规划,首先是Public subnet,作为与公网交互的统一界面(类似于DMZ区的概念)。
      • 负载均衡,作为外部用户访问业务系统的统一公网入口。所有用户访问Web业务时,访问流都是通过DNS解析至ALB,ALB会通过监听规则,将流量分发至后端服务器组内的多台ECS。同时,负载均衡是本架构的核心,当一台服务器宕机时,负载均衡会通过健康检查,自动检测到宕机服务器,同时将流量转发至正常状态服务器,保障业务可以正常访问,实现高可用和服务永续。
      • NAT网关,作为VPC内ECS访问外网的统一公网出口。ECS访问公网(如download数据包、调用外网API服务)时,避免通过每台ECS绑定一个IP进行分别访问,这样会导致互联网暴露面安全性和地址管理复杂性。此时,通过NAT向VPC内ECS提供SNAT服务,所有ECS访问公网都通过NAT统一进行公网访问,可以有效收敛互联网暴露面、统一进行地址和流量管理等。
    • VPC还有三层subnet,分别是Web subnet、Application subnet、Database subnet。
      • 软件开发里最经典的三层架构,就是把整个软件系统分为三个层次,分别是表示层(UI)、业务逻辑层(Business Logic Layer)、数据持久层(Data access layer),三层架构的好处有很多,比如实现高内聚、低耦合、方便团队分工。其实三层架构有一个最直白的解释,比如前端、后端、数据库,也就对应了咱们架构中的Web subnet(前端)、Application subnet(后端)、Database subnet(数据层) 。
      • 本文中采用了前后端融合的框架,所以Web subnet(前端)+Application subnet(后端)都部署到同一层ECS中。当网站系统规模比较庞大时,往往会进行前后端分离,我们会在其他实验中讲解前后端分离版业务架构的部署教程,本实验关注中小企业业务初期前后端不分离版的架构部署。
      • 2台云服务器ECS会预先安装前后端代码运行所需的环境(Node、JDK、Maven),然后再部署运行开源若依代码(前后端不分离版),实现项目运行启动。
      • 2台ECS内部署若依网站代码项目时,所需访问的数据内容,统一通过数据库连接文件配置,关联至阿里云数据库RDS,数据的存储和调用统一通过RDS提供服务,使得2台服务器项目运行时,始终可以保障数据一致性。

背景知识

本次实验教程,主要涉及以下云产品和服务:

云服务器(Elastic Compute Service,简称ECS)是阿里云提供的性能卓越、稳定可靠、弹性扩展的IaaS(Infrastructure as a Service)级别云计算服务。云服务器ECS免去了您采购IT硬件的前期准备,让您像使用水、电、天然气等公共资源一样便捷、高效地使用服务器,实现计算资源的即开即用和弹性伸缩。阿里云ECS持续提供创新型服务器,解决多种业务需求,助力您的业务发展。

弹性公网IP是独立的公网IP资源,可与阿里云专有网络VPC类型的云服务器ECS、NAT网关、ENI网卡、私网负载均衡SLB绑定,并可以动态解绑满足灵活管理的要求。弹性公网IP可为您在云上部署的网站提供Internet访问服务。

云数据传输 Cloud Data Transfer(简称“CDT”),是一种为云上流量提供统一计费和出账服务的开通型产品。CDT可以为阿里云多款互联网公网流量产品统一计费,覆盖云服务器 ECS、弹性公网IP、Anycast EIP公网、共享带宽、IPv6网关、传统型负载均衡CLB公网、全球加速GA公网等产品。

CDT通过免费额度和阶梯计费持续释放红利。每月提供一定额度公网流量,供初期业务低门槛使用;当业务流量增大是,CDT支持公网流量累计阶梯计费,用量越大单价越低。更灵活优惠的计费方式,助您降低 IT 成本。

应用型负载均衡ALB(Application Load Balancer)是阿里云推出的专门面向7层的应用型负载均衡产品。主要面向HTTP、HTTPS和QUIC等7层应用层负载场景服务,具备超强弹性及大规模应用层流量处理能力。ALB具备处理复杂业务路由的能力,与云原生相关服务深度集成,是阿里云官方提供的云原生Ingress网关。

如果您的应用主要是基于4层协议发布,也可以选择面向4层的网络型负载均衡NLB。可以支持超高性能和自动弹性能力,单实例可以达到1亿并发连接,同时支持TCPSSL卸载、新建连接限速、全端口监听等高级特性,帮您轻松应对海量终端连接、高并发消息服务、音视频传输、物联网MQTTS加密卸载等场景。

阿里云NAT网关(NAT Gateway,简称NAT)提供公网NAT和私网NAT两种功能。本实验试用的是公网NAT网关,通过自定义SNAT规则可为云上服务器提供主动访问公网能力。当有多台机器需要访问公网时,可以通过公网NAT网关统一公网出口,收敛互联网暴露面,并通过公网NAT网关准确和精细化的运维监控能力管理企业访问公网的流量。

阿里云提供稳定可靠、可弹性伸缩的关系型云数据库RDS,支持MySQL、SQL Server、PostgreSQL和MariaDB引擎,具备容灾、备份、恢复、迁移等方面的全套解决方案。

本次实验教程未涉及使用,但实际业务架构中往往会使用到的其他云产品和服务:

对象存储OSS是一款具有行业领先的安全、稳定、高性价比、高性能的云存储服务,可以帮助各行业的客户在互联网应用、大数据分析、机器学习、数据归档等各种使用场景存储任意数量的数据,以及进行任意位置的访问,同时通过丰富的数据处理能力更便捷地使用数据。

云数据库 Redis 版是一种全托管、兼容Redis协议的内存数据库服务,包含社区版Redis和云原生内存数据库Tair,支持单副本、主从、集群和读写分离架构,具备高性能、弹性伸缩的特点。 Tair完整兼容Redis,提供多种存储介质满足不同场景的性价比要求,更有全球多活、丰富的数据结构、数据闪回、热Key探测与优化等企业级能力,支撑大规模高性能要求的在线数据业务。

云解析DNS(Domain Name System,简称 DNS)是一种快速、安全、稳定、智能的互联网域名解析服务。产品能力涵盖公网权威域名解析、全局流量管理、公网递归域名解析,帮助企业在互联网域名解析管理、域名自动容灾调度和移动 APP/IoT 终端域名防劫持方面提升用户体验和降低运维难度。

数字证书管理服务集云上SSL证书生命周期管理和数字证书应用为一体的SAAS服务。该服务具备签发、管理服务器证书和各类终端证书的能力,同时提供云上证书自动化应用部署的解决方案,便于客户轻松实现数据传输加密和信源加密,保障数据安全。

AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等