AWS 平台
【AWS云】部署MERN堆栈应用在AWS上构建弹性三层体系结构
视频号
微信公众号
知识星球
👋 介绍
大家好,我叫安基特·乔达尼。我是DevOps和Cloud的爱好者。我最近刚从大学毕业,在DevOps和云计算领域建立了自己的职业生涯。我写了很多关于can和Devops的博客和项目,你可以在我的Hashnode个人资料Ankit Jodhani上看到这一点。事实上,我是Showwcase的新手。我正在考虑在Showwcase上发布下几个博客并分享知识。我要感谢皮尤什·萨奇德娃提供的宝贵指导。我参加了Blog-A-Thon-Unlocking the Power of Technical Writing,这是Showwcase与GrowIn社区合作组织的一项在线活动,我要感谢双方的这一惊人举措。所以这个博客是“blog-A-Thon”的一部分#博客马拉松#showwcase#growinconsunity
📚 提要
在这个博客中,我将向您展示我们如何构建弹性三层架构在AWS上部署MERN堆栈应用程序:实现高可扩展性、高可用性和容错。在这个项目中,我们将使用多区域部署,一个将是主要区域,另一个将用于灾难恢复。在这里,我们将遵循“温暖待机”灾难恢复策略。以便我们的用户在发生灾难时面临更低的停机时间。让我向你简要介绍一下这个项目。
🔹 故事
当用户请求网站时,DNS服务Route 53会处理该请求,并将其引导到为客户端提供服务的CDN(内容交付网络)CloudFront。如果CloudFront需要访问web服务器(前端),那么它会将请求路由到web服务器的应用程序负载均衡器,然后重定向到web服务器。成功接收静态页面后,客户端的浏览器可以对数据进行API调用。这些API调用通过路由53路由,路由53将它们发送到应用程序服务器(后端服务器)的ALB。ALB然后将请求引导到应用程序服务器,在那里处理数据。此外,应用服务器可以在RDS数据库中存储一些数据。并且我们的数据库仅由应用服务器访问。但我们部署基础设施的地方有可能因为某种灾难而瘫痪。在这种情况下,CloudFront将为web轮胎进行故障转移,Route 53将为应用轮胎进行故障切换。并且两者都开始利用DR区域的资源。这就是我们实现弹性的方式。如果你没有一个想法,那么不要担心,一旦你看到了架构,它就会很容易。
我将使用AWS云,但你可以使用任何你喜欢的云。或多或少的步骤将是相似的。
📋 先决条件
- 📌 AWS帐户
- 📌 Linux基础知识
AWS服务列表
- 🌍 亚马逊CloudFront
- 🌐 亚马逊路线53
- 💻 亚马逊EC2
- ⚖️ 亚马逊自动缩放
- 🪪 亚马逊证书管理员
- 🪣 亚马逊备份服务
- 🗄️ 关系数据库服务
- ☁️ 亚马逊专有网络
- 🔐 亚马逊WAF
- 👁️ 亚马逊CloudWatch
💡 执行计划
- 🤔 什么是三胎结构
- 🏠 项目的架构
- 🚀 带屏幕截图的分步指南
- 🧪 测试
- 🧼 资源清理
- 🥳 结论
🤔 什么是三胎架构
三层体系结构是一种将应用程序分为三层的软件体系结构模式。
🔸表示层➡️ 处理用户交互
🔸应用层(后端逻辑)➡️ 处理业务逻辑和数据处理
🔸数据层(数据库)➡️ 管理数据存储和检索
每一层都有不同的职责,允许模块化、可扩展性和可维护性。该体系结构促进了关注点的分离,并便于在不影响其他层的情况下轻松更新或修改特定层。
🏠 项目架构
让我们看看今天项目的架构。我们将遵循一种目标驱动的方法,这有助于我们付出最小的努力,并取得很多成果。了解我们将要构建的内容并了解您可以遵循以下体系结构是非常重要的。我请求你看一遍。它在构建这个项目时帮了你很多忙。
我花了几个小时创建了这个下面的动画架构,如果你喜欢,请喜欢我的博客,并在LinkedIn上关注我。
这里没有动画的建筑设计
🚀分步指南
我们正在遵循“热备用”灾难恢复策略,因此我们将在部署期间使用两个区域。美国东部-1 AKA北弗吉尼亚州为初级,美国西部-2 AKA俄勒冈州为次级或DR。
🔹 虚拟专用计算机
首先,我们将在这两个地区建立专有网络,将我们的资源与互联网隔离开来。下图包含所有子网、它们的IP范围及其用途。如果你有更好的想法,你可以使用自己的专有网络设置。如果你是初学者,请创建VPC,如下所示。
- 29 次浏览
【云治理】亚马逊计算服务水平协议
此亚马逊计算服务水平协议(此“SLA”)是一项政策,规定您或您所代表的实体(“您”)根据AWS客户协议的条款使用包含的产品和服务(下面列出)( Amazon Web Services,Inc。与其关联公司(“AWS”,“我们”或“我们”)与您之间的“AWS协议”)。此SLA使用包含的产品和服务单独应用于每个帐户。除非本协议另有规定,否则本SLA受AWS协议条款的约束,资本化条款具有AWS协议中规定的含义。我们保留根据AWS协议更改本SLA条款的权利。
包含的产品和服务
- 亚马逊弹性计算云(Amazon EC2)
- 亚马逊弹性块商店(Amazon EBS)
- 亚马逊弹性容器服务(Amazon ECS)
- 适用于Amazon ECS的Amazon Fargate(亚马逊Fargate)
服务承诺
AWS将使用商业上合理的努力使每个可用的包含产品和服务具有至少99.99%的每月正常运行时间百分比(在下面定义),在每种情况下,在任何月度计费周期(“服务承诺”)期间。如果任何包含的产品和服务不符合服务承诺,您将有资格获得如下所述的服务积分。
定义
“每月正常运行时间百分比”是通过从100%中减去任何包含的产品和服务(如果适用)处于“区域不可用”状态的月份的百分比来计算的。每月正常运行时间百分比测量不包括直接导致的停机时间或间接来自任何Amazon Compute Services SLA排除(定义如下)。
“可用区(Availability Zone)”和“AZ”表示由区域代码后面的字母标识符标识的区域内的隔离位置(例如,us-west-1a)。
“区域不可用(Region Unavailable”)”和“区域不可用(Region Unavailability)”是指:
对于只有一个AZ的区域(Regions),当您运行实例或任务(一个或多个容器)的任何其他区域中的AZ和一个AZ(如果适用)同时对您“不可用”。
对于所有其他区域,当您运行实例或任务(一个或多个容器)的同一区域中的多个AZ(如果适用)同时对您“不可用”。
“不可用”和“不可用”是指:
对于Amazon EC2,Amazon ECS或Amazon Fargate,当所有正在运行的实例或正在运行的任务(如果适用)没有外部连接时。
对于Amazon EBS,当所有连接的卷执行零读写IO时,队列中有待处理的IO。
“服务信用”是按照下面的规定计算的美元信用额度,我们可以将其退回到符合条件的帐户。
服务承诺和服务积分
服务积分计算为您支付的总费用的百分比(不包括一次性付款,例如为预留实例支付的预付款),适用于Amazon EC2或Amazon EBS(以两者中不可用,或两者均为不可用)受月度结算周期影响的区域,其中区域不可用性按照以下时间表发生。
每月正常运行时间百分比 服务信用百分比
小于99.99%但等于或大于99.0%10%
低于99.0%30%
我们将仅针对未来的Amazon EC2或Amazon EBS付款应用任何服务积分。我们可以自行决定向您用于支付不可用性的结算周期的信用卡发放服务积分。服务积分不会使您获得AWS的任何退款或其他付款。仅当适用的每月结算周期的信用额度大于1美元(1美元)时,服务信用将适用并发布。服务积分不得转让或应用于任何其他帐户。除非AWS协议另有规定,否则我们对提供Amazon EC2或Amazon EBS的任何不可用,不履行或其他失败的唯一和排他性补救措施是,根据以下条款获得服务积分(如果符合条件)这个SLA。
信用申请和付款程序
要获得服务积分,您必须通过在AWS Support Center中打开案例来提交索赔。要符合资格,我们必须在事件发生后的第二个结算周期结束时收到信用申请,并且必须包括:
主题行中的“SLA信用请求”字样;
您声明的每个不可用事件的日期和时间;
受影响的EC2实例ID或受影响的EBS卷ID;和
您的请求记录记录错误并确认您声称的中断(这些日志中的任何机密或敏感信息应删除或替换为星号)。
如果此类请求的每月正常运行时间百分比由我们确认且小于服务承诺,那么我们将在您的请求得到确认的月份之后的一个结算周期内向您发放服务积分
区域和可用区概念
每一个区域都是完全独立的。每个可用区都是独立的,但区域内的可用区通过低延迟链接相连。下图阐明了区域和可用区之间的关系。
Amazon EC2 资源要么具有全球性,要么与区域或可用区相关联。有关更多信息,请参阅 资源位置。
区域
每个 Amazon EC2 区域都被设计为与其他 Amazon EC2 区域完全隔离。这可实现最大程度的容错能力和稳定性。
当您查看您的资源时,您只会看到与您指定的区域关联的资源。这是因为区域间彼此隔离,而且我们不会自动跨区域复制资源。
当您启动实例时,必须选择位于同一地区的 AMI。如果 AMI 在其他区域,您可将该 AMI 复制到您使用的区域。有关更多信息,请参阅 复制 AMI。
请注意,在区域之间传输数据需要收费。有关更多信息,请参阅 Amazon EC2 定价 - 数据传输。
可用区
当您启动实例时,您可以自己选择一个可用区或让我们为您选择。如果您的实例分布在多个可用区且其中的某个实例发生故障,则您可对您的应用程序进行相应设计,以使另一可用区中的实例可代为处理相关请求。
您也可使用弹性 IP 地址来掩蔽某个可用区中的实例所发生的故障,方法是快速将该地址重新映射到另一可用区中的实例。有关更多信息,请参阅 弹性 IP 地址。
可用区由区域代码后跟一个字母标识符表示;例如,us-east-1a。为确保资源分配到区域的各可用区,我们将可用区独立映射到每个账户的标识符。例如,您的可用区 us-east-1a 与其他账户的可用区 us-east-1a 所表示的可能不是同一个位置。您无法在不同账户之间协调可用区。
随着可用区中内容的增加,我们对其进行扩展的能力会逐渐受限。如果发生此情况,我们可能会阻止您在扩展能力受限的可用区内启动实例,除非您在此可用区中已拥有实例。最终,我们还可能将扩展能力受限的可用区从新客户的可用区列表中删除。因此,您的不同账户在一个区域中可用的可用区数量可能不同。
您可以列出您的账户可用的可用区。有关更多信息,请参阅 描述您的区域和可用区。
可用区
您的账户会确定适用于您的地区。例如:
- AWS 账户提供多个区域,因此您可在满足您要求的位置启动 Amazon EC2 实例。例如,您可能希望在欧洲区域启动实例以更多符合欧洲客户的要求或满足法律要求。
- 您只能通过AWS GovCloud(美国)账户访问AWS GovCloud(美国)区域。有关更多信息,请参阅AWS GovCloud(美国)区域。
- 您只能通过 Amazon AWS (中国) 账户访问中国(北京)区域。
下表列出的是 AWS 账户提供的地区。您不能通过 AWS 账户描述或访问其他区域,例如AWS GovCloud(美国)或中国(北京)。
代码名称us-east-1
美国东部(弗吉尼亚北部)
us-east-2
美国东部(俄亥俄州)
us-west-1
美国西部(加利福尼亚北部)
us-west-2
美国西部(俄勒冈)
ca-central-1
加拿大 (中部)
eu-central-1
欧洲(法兰克福)
eu-west-1
欧洲(爱尔兰)
eu-west-2
欧洲 (伦敦)
eu-west-3
欧洲 (巴黎)
ap-northeast-1
亚太区域(东京)
ap-northeast-2
亚太区域(首尔)
ap-northeast-3
亚太区域 (大阪当地)
ap-southeast-1
亚太区域(新加坡)
ap-southeast-2
亚太区域(悉尼)
ap-south-1
亚太地区(孟买)
sa-east-1
南美洲(圣保罗)
有关更多信息,请参阅 AWS 全球基础设施。
每个区域的可用区的数量和映射可能因 AWS 账户不同而异。要获取可用于您的账户的可用区列表,您可以使用 Amazon EC2 控制台或命令行界面。有关更多信息,请参阅 描述您的区域和可用区。
- 67 次浏览