技术六处三部 云端架构师 | Herman Kou
在现今盛行的虚拟化技术中,容器技术已被广泛使用於各种大小型应用程式中。容器不仅可以加速开发速度,提高便利性,还可以降低应用程式的维护难度。AWS的 Elastic Container Service (ECS) 提供了一种全受管容器协同运作服务,可以轻松地部署、管理和扩展容器化应用程式。 而ECS除了选择传统需自行管理的EC2作为运算单元外,也可以选择使用Serverless的 AWS Fargate进行运算,进而免除EC2的管理工作。本文将讲述如何使用ECS并透过Serverless的AWS Fargate快速建立应用程式及其网路负载平衡器(Load Balancer)。
AWS ECS 是专为 Docker 型式的容器服务,并由AWS完全受馆,可以让使用者轻松地部署、管理和扩展容器化应用程式,而不必烦恼伺服器的管理。
( 图片取自 AWS 官网 : https://aws.amazon.com/tw/ecs/ © Amazon Web Service)
AWS Fargate 和 Elastic Container Service(ECS) 是什麽?
AWS Fargate 是 AWS 所提供的一种容器运算服务,它可以让您在不需要管理底层硬体的情况下执行容器。Fargate 包括了网路、安全性、硬体和操作系统等底层管理工作,让您可以专注於应用程式的开发和运算。
Elastic Container Service (ECS) 是 AWS 所提供的一种容器管理服务,它可以让您轻松地部署、管理和扩展容器化应用程式。 ECS 支援 Docker 容器,并提供一组简单的 API 和管理工具,可让您在数分钟内设定和启动容器。 ECS 可以在 AWS 内部执行应用程式,并可与其他 AWS 服务(如 Elastic Load Balancing 和 Amazon RDS)整合。它可以在选择EC2或Fargate上运算执行容器,支援自动扩展和负载平衡,并提供容器层级的监控和日志记录。
如何将准备好的Docker应用程式快速布建到AWS ECS上
1.事前我们需要预先准备要建置Docker应用程式之Image到AWS ECR
• 请预先会要建置的应用程式的之Image Push到ECR 的Repository上。
2.前往AWS Console的ECS服务,建立丛集。
• 点击画面中的建立丛集
3.设定丛集范本
• 由於我们是用Fargate作为运算单元,所以这里选取仅限联网。
4.设定丛集内容
• 输入丛集的名称,其余设定留作预设,再点击建立。
5.按下来建立任务定义
• 点击左方选单的任务定义,再点击建立新的任务定义。
6.选取启动类型相容性
• 由於我们是在建Fargate based的应用程式,所以在这里选取Fargate,再下一步。
7.设定任务和容器定义
• 输入任务定义名称
• 任务角色可以留空
• 作业系统系统选择Linux
8.往下拉继续进行设定
• 任务大小的任务记忆体设定2GB,任务CPU设定1vCPU。
9.点击新增容器,然後进行容器设定
• 输入容器名称
• 贴上ERC中Image的URL
• 在Port Mapping输入应用程式需要开启的Port
10.其余设定留预设,点击建立
• 点击右下角的建立
11.回到刚刚的丛集里面,在服务下点击建立
• 服务可以包含多个任务,也负责任务的Auto Scaling功能。
12.开始设定服务类型
• 启动类型为FARGATE
13.这里先跳到EC2的Console,找到Load balancer的设定,点击建立负载平衡器
• 点击左方橘色的负载平衡器。
14.选择建立应用程式负载平衡器
• 应用程式负载平衡器可以负责路由流量到Container里面。
15.输入ALB的名字,然後往下
• 设定负载平衡器的名字、方案(Scheme)、IP类型。
16.网路设定方面选择预设的VPC,Mapping则选取所有AZ。
• 设定VPC及其对应子网路。
17.SG选取预设的SG
• AWS 安全群组 (Security Group) 是 AWS 内部一种防火墙功能,用於控制进出虚拟网路 (VPC) 中的网路流量。
18.Listener的Port只开80,在下面点击建立Target Group
• 设定Listener在Http协定下聆听的Port。
19.选择Target Group的Target type为IP 地址,为TG取一个名字
• Target Group 是Application Load Balancer (ALB) 所使用的负载平衡器群组。
20.在Target Port 输入8080後,VPC选择预设VPC,然後建立。
• Target Port 是指在 Target Group 中注册的服务或应用程式所监听的通讯埠。
21.ALB和TG都建立好後回到ECS建立服务
• 启动类型选择FARGATE
• 作业系统系列选择Linux
• 任务定义选择自己建立的任务定义
• 丛集则选择自己的丛集
22.输入服务名称及所需的任务数量。
• 任务数量设定成2,亦可因其所需设定数量。
23.VPC和Subnets都选择预设的,SG也是
• 因示范原因设用预设的VPC及Subnets,可因实际情况作调整。
24.在负载平衡中选择ALB,并选择之前建好的ALB
• 选择刚建立好的负载平衡器
25.要进行的负载平衡的容器设定,然後点下一步
• 生产接听程式的连接埠请选80
• 目标群组名称选择自己所建立的
• 运作状态检查路径要是根目录没有东西的话,请填有会回应的路径
26.设定Auto Scaling,这里跳过点选後续步骤。
• 点击右下角的後续步骤。
27.检查没有问题点建立
• 检查设定是否正确,无误後点击建立
28.接下来要让Health check正常运作,回到ALB打开SG
• 点击编辑安全群组
29.点击预设的安全群组
30.点击编辑传入规则
• Inbound Rules 是指在 AWS 安全群组 (Security Group) 中设定的允许流量进入网路区域的规则。当网路流量想要进入网路区域时,将会根据 Inbound Rules 中的规则进行判断,若符合规则内容就会被允许进入,反之则会被拒绝。
31.在传入规则加入TCP 443
• ALB需要经由Port 443 来进行目标的Health Check。
32.打开丛集的详细资料找到SG
33.点击编辑传入规则
34.加上TCP 的443和8080Port anywhere
35.从ALB的DNS进入服务,完成
• 应用程式正常回传。
透过以上步骤我们可以轻松地利用AWS Elastic Container Service 及 Fargate等服务,将制作好的Docker的应用程式快速布建到AWS上,而AWS Fargate可免去管理伺服器的时间成本,AWS ECS提供弹性管理及快速变更的服务,对於相关开发者可以节省大量的管理时间成本,能够更专心投入专案开发之中。
而AWS所提供的全受管服务将以最高的业界标准进行维护,可将相关营运风险降至最低,相关资讯可参考AWS 服务水准协议 (SLA)。
AWS 服务水准协议 (SLA): https://aws.amazon.com/tw/legal/service-level-agreements/
MetaAge 迈达特,除了技术支援,也提供 7 x 24 全托管 MSP 服务
MetaAge 迈达特数位在资安、网路、储存、伺服器、虚拟化、资料库管理有丰富经验,技术深厚的架构师群与维运团队是企业云服务的最佳帮手。客户无论想要部署 AWS 服务,进一步代管维运(Cloud Managed Service)、基础架构即代码 (Infrastructure-as-code)、 API 整合、云地整合等加值服务,迈达特均能一站式满足多构面需求。
关於 MetaAge 迈达特
MetaAge 迈达特 (更名前:聚硕科技) 於 1998 年创业之初,即以成为「The ICT Solution Provider 专业资讯应用服务供应商」角色自期,为经销夥伴与企业用户提供一流产品与专业服务,成为业界最佳之加值服务名牌通路商。针对广大的经销商夥伴以及云市集之独立软体供应商 (ISV),也可洽谈经销合作方案,设计後续合作的框架。
MetaAge 迈达特代理的软硬体产品线均为全球知名品牌,针对广大的经销商夥伴以及云市集之独立软体供应商 (ISV),提供强大的技术支援与量身订作之经销合作方案,扩大合作夥伴的服务范围,在多样化的场域中一同实现更优质的客户服务体验。
迈达特持续作为 IT 智能化最佳夥伴,竭诚欢迎旧雨新知携手共创数位新局。
MetaAge 迈达特 AWS MSP 团队导入次世代监控系统,提供客户完全托管和完整监控的 MSP 整合服务。
扫码联系迈达特MSP服务团队, 或加入官方 LineID: @metaage_msp
联络方式 —— 24小时免付费电话: 080-000-8669 | Email: [email protected] | MSP 服务官方 LineID: @metaage_msp