AWS-小型企業(yè)-架構(gòu)設(shè)計(jì)
時(shí)間:2023-07-27 18:39:01 | 來源:網(wǎng)站運(yùn)營(yíng)
時(shí)間:2023-07-27 18:39:01 來源:網(wǎng)站運(yùn)營(yíng)
AWS-小型企業(yè)-架構(gòu)設(shè)計(jì):作者:guoliangdi
AWS 發(fā)展歷史
AWS 服務(wù)概覽
AWS 服務(wù)簡(jiǎn)介-計(jì)算服務(wù)
AWS 服務(wù)簡(jiǎn)介-網(wǎng)絡(luò)服務(wù)
AWS 服務(wù)簡(jiǎn)介-數(shù)據(jù)庫服務(wù)
AWS 服務(wù)簡(jiǎn)介-存儲(chǔ)服務(wù)
Part 1 - AWS Architecture Design
BRIEF
Imagine that you meet with a small startup company in the early stages of their operations. Currently their architecture uses a LAMP stack with MySQL, Apache and PHP all running on one desktop PC within their small office. Like many small start-ups they are confident that they will be the next big thing and expect significant, rapid, yet unquantified growth in the next few months. With this in mind, they are concerned about:
- Scaling to meet the demand, but with uncertainty around when and how much this demand will be they are very concerned about buying too much infrastructure too soon or not enough too late!
擴(kuò)大規(guī)模以滿足需求,但由于不確定需求會(huì)在什么時(shí)候出現(xiàn)以及會(huì)有多大,他們非常關(guān)心是否購(gòu)買了太多的基礎(chǔ)設(shè)施,太早或不夠,太晚!
需求分析:
說明用戶對(duì)未來服務(wù)使用量規(guī)模不確定,如果過早投入必然造成資源與成本的浪費(fèi),太遲則可能會(huì)影響企業(yè)的穩(wěn)定發(fā)展。針對(duì)此類問題要求所有基礎(chǔ)設(shè)施應(yīng)具備彈性計(jì)算的能力,可以根據(jù)使用情況而自動(dòng)擴(kuò)展與縮小服務(wù)規(guī)模。
方案:
采用 Amazon EC2 Auto Scaling 來維持應(yīng)用程序的可用性,確保 EC2 隊(duì)列的可用性并根據(jù)其需求自動(dòng)擴(kuò)展和縮減該隊(duì)列,以最大限度提高性能和降低成本,同時(shí)實(shí)例類型可以采用按需實(shí)例,實(shí)際消耗的計(jì)算容量支付費(fèi)用,而不是預(yù)留實(shí)例。
- Their lack of provision for Disaster Recovery.
他們?nèi)狈?zāi)難恢復(fù)的準(zhǔn)備。
需求分析:
災(zāi)難恢復(fù)涉及到基礎(chǔ)設(shè)施高可用與異地多活的能力,備用電力等條件,如自建機(jī)房部署方式如果出現(xiàn)故障會(huì)造成災(zāi)難性的后果,即使恢復(fù)也可能丟失掉部分?jǐn)?shù)據(jù)。做為云計(jì)算需要有快速恢復(fù)故障的能力同時(shí)確保數(shù)據(jù)不會(huì)丟失。
方案:
采用 Amazon EC2 實(shí)例恢復(fù)的機(jī)制,如果實(shí)例出現(xiàn)問題,替代實(shí)例可以在其中以可預(yù)見的方式快速啟動(dòng)。Amazon RDS 具備主備數(shù)據(jù)庫構(gòu)成的高可用數(shù)據(jù)庫,通常備用實(shí)例也是存放在其他可用區(qū)中,Amazon RDS 會(huì)將數(shù)據(jù)同步復(fù)制到其他可用區(qū) (AZ) 的備用實(shí)例中,同時(shí)設(shè)置數(shù)據(jù)庫的快照。另外在發(fā)生硬件故障的情況下,Amazon RDS 將自動(dòng)更換用于支持部署的計(jì)算實(shí)例。
- Their ability to configure their database and data access layer for high performance and throughput.
他們配置數(shù)據(jù)庫和數(shù)據(jù)訪問層以獲得高性能和吞吐量的能力。
需求分析:以直觀的方式顯示數(shù)據(jù)庫負(fù)載,即使非專業(yè)人士也能檢測(cè)性能問題。
方案:
Amazon RDS Performance Insights 是一項(xiàng)數(shù)據(jù)庫性能調(diào)優(yōu)和監(jiān)控功能,通過看板可分析和調(diào)整 RDS 數(shù)據(jù)庫性能,可幫助您迅速評(píng)估數(shù)據(jù)庫負(fù)載壓力與吞吐量的監(jiān)測(cè)。
另外提高性能需要注意的有以下措施:
1、在配置方面可以采用高性能的存儲(chǔ)類型(IOPS(SSD))保證數(shù)據(jù)庫提供高性能的讀寫操作;
2、通過多個(gè)只讀副本讀寫分離,從而負(fù)載數(shù)據(jù)庫的訪問;
3、高性能數(shù)據(jù)庫必要的時(shí)候通過緩存減少數(shù)據(jù)庫訪問次數(shù)。
- Making the user experience in the browser very low latency even though a large portion of their user base will be from far away.
使瀏覽器中的用戶體驗(yàn)延遲極低,即使他們的大部分用戶來自很遠(yuǎn)的地方。
需求分析:應(yīng)用可以被遠(yuǎn)端用戶以最小的網(wǎng)絡(luò)延遲被訪問,通常是采用CDN方式。
方案:通地 AWS CloudFront 能夠使的邊緣站點(diǎn)緩存靜態(tài)數(shù)據(jù),加速分配給最終用戶的 Web 服務(wù)。
- Effective distribution of load.
負(fù)荷的有效分配。
需求分析:動(dòng)態(tài)流量分發(fā)
方案:EC2 可以通過 Elastic Load Balancing 自動(dòng)分配傳入的應(yīng)用程序流量。
1、通過使用 Elasticache 緩存應(yīng)用數(shù)據(jù)來減少數(shù)據(jù)庫讀的壓力。
2、加快應(yīng)用程序性能、減輕后端數(shù)據(jù)庫負(fù)載。
- A self-healing infrastructure that recovers from failed service instances.
從失敗的服務(wù)實(shí)例中恢復(fù)的自修復(fù)基礎(chǔ)設(shè)施。
需求分析:服務(wù)健康監(jiān)控
方案:通過 Amazon Cloudwatch 中定義的報(bào)警指標(biāo)檢測(cè) auto-scaling。CloudWatch 以日志、指標(biāo)和事件的形式收集監(jiān)控和運(yùn)營(yíng)數(shù)據(jù),并使用自動(dòng)化控制面板將其可視化。
創(chuàng)建 Amazon CloudWatch 警報(bào)來監(jiān)控 Amazon EC2 實(shí)例。如果實(shí)例因需要 AWS 參與才能修復(fù)的基礎(chǔ)硬件故障或問題而受損,可自動(dòng)恢復(fù)實(shí)例。
- Security of data at rest and in transit.
靜止和傳輸中的數(shù)據(jù)的安全性。
需求分析:訪問鏈路安全
方案:通過AWS Certificate Manager 來申請(qǐng) SSL 證書。
1、數(shù)據(jù)安全通常做法在數(shù)據(jù)傳輸過程和存儲(chǔ)能夠加密的形式。
2、數(shù)據(jù)存儲(chǔ)的安全性通常的做法是使用加密算法存儲(chǔ)數(shù)據(jù)。
3、對(duì)數(shù)據(jù)在傳輸過程中的安全,由于VPC起到了隔離資源的作用。那么在網(wǎng)絡(luò)層可以僅由客戶使用IAM給定的特權(quán)來建立連接。數(shù)據(jù)在運(yùn)輸過程中可以通過SSL / TLS傳輸協(xié)議。
- Securing access to the environment as the delivery team expands.
隨著交付團(tuán)隊(duì)的擴(kuò)展,確保對(duì)環(huán)境的訪問。
方案:
使用AWS IAM 定義 用戶/角色和組的不同權(quán)限,針對(duì)不同資源向不同人員授予不同權(quán)限,例如,您可以允許某些用戶完全訪問 Amazon Elastic Compute Cloud (Amazon EC2)、Amazon Simple Storage Service (Amazon S3)、Amazon DynamoDB、Amazon Redshift 和其他 AWS 服務(wù)。對(duì)于另一些用戶,您可以允許僅針對(duì)某些 S3 存儲(chǔ)桶的只讀訪問權(quán)限,或是僅管理某些 EC2 實(shí)例的權(quán)限,或是訪問您的賬單信息但無法訪問任何其他內(nèi)容的權(quán)限。不必共享您的密碼或訪問密鑰。
- An archival strategy for inactive objects greater than 6 months.
大于6個(gè)月的不活動(dòng)對(duì)象的歸檔策略。
需求分析:需要有一個(gè)存儲(chǔ)檔案的容器可以定期存在相關(guān)的日志和非活動(dòng)的對(duì)象。
方案:Amazon S3 是一種對(duì)象存儲(chǔ)服務(wù),提供行業(yè)領(lǐng)先的可擴(kuò)展性、數(shù)據(jù)可用性、安全性和性能。各種規(guī)模和行業(yè)的客戶可以為幾乎任何使用案例存儲(chǔ)和保護(hù)任意數(shù)量的數(shù)據(jù),例如數(shù)據(jù)湖。且S3提供不同訪問頻率的服務(wù)規(guī)格。
- Ability to easily manage and replicate multiple environments based on their blueprint architecture.
能夠基于藍(lán)圖架構(gòu)輕松管理和復(fù)制多個(gè)環(huán)境。
方案:如果復(fù)制到不同 region,可以采用AWS CloudFormation ,它提供了一種通用語言來描述和預(yù)配置您的云環(huán)境中的所有基礎(chǔ)設(shè)施資源。CloudFormation 使您可以跨所有地區(qū)和賬戶使用簡(jiǎn)單的文本文件以自動(dòng)化的安全方式為您的應(yīng)用程序需要的所有資源建模并對(duì)其進(jìn)行預(yù)配置。
如快速部署環(huán)境、開發(fā)環(huán)境等可采用 AWS Elastic Beanstalk,只需上傳代碼,Elastic Beanstalk 即可自動(dòng)處理包括容量預(yù)配置、負(fù)載均衡、自動(dòng)擴(kuò)展和應(yīng)用程序運(yùn)行狀況監(jiān)控在內(nèi)的部署工作。
Solution Design 系統(tǒng)架構(gòu)圖:
Design Detail 網(wǎng)絡(luò)層:
Route53:實(shí)現(xiàn)的DNS域名解析服務(wù),通過CNAME連接到 CloudFront endpoint 。
CloudFront: 實(shí)現(xiàn)全球內(nèi)容發(fā)布網(wǎng)絡(luò),用戶請(qǐng)求將被引導(dǎo)到最低延遲的節(jié)點(diǎn),提供傳送的內(nèi)容最佳性能,需要設(shè)置CloudFront 設(shè)置訪問源為應(yīng)用的ELB節(jié)點(diǎn)。
AWS Regoin 是應(yīng)用部署的區(qū)域,一個(gè)Region可以有A-Z可用區(qū)。
應(yīng)用層:
Auto Scaling與 ELB 集成來實(shí)現(xiàn)應(yīng)用服務(wù)的可用性和擴(kuò)展性,將ELB附加到現(xiàn)有 Auto Scaling組實(shí)現(xiàn)負(fù)載均衡,它能夠自動(dòng)注冊(cè)組內(nèi)的實(shí)例,并將傳入請(qǐng)求分配給這些實(shí)例。 在可用性方面,如果有服務(wù)失敗宕機(jī),那么auto-scaling 能夠迅速發(fā)現(xiàn)問題機(jī)器并啟動(dòng)一臺(tái)新的機(jī)器,持續(xù)服務(wù)。在擴(kuò)展性方面使用 Auto Scaling,可以設(shè)置Min/MaX/參數(shù)實(shí)現(xiàn)自動(dòng)擴(kuò)縮 EC2 的服務(wù)實(shí)例數(shù)量。 AutoScaling組中的每個(gè)實(shí)例都在不同的可用區(qū),防止在可用區(qū)發(fā)生故障。
數(shù)據(jù)層:
elasticache:
使用ElastiCache Redis 提高生產(chǎn)部署的可靠性,緩解對(duì)數(shù)據(jù)庫訪問的壓力,降低延遲。
Redis 組包含一個(gè)應(yīng)用程序可讀寫入的主節(jié)點(diǎn)和 2個(gè)只讀節(jié)點(diǎn)。在向主節(jié)點(diǎn)寫入數(shù)據(jù)時(shí),也會(huì)在只讀副本節(jié)點(diǎn)上異步更新數(shù)據(jù)。 這樣可以有效的防止節(jié)點(diǎn)故障,而在兩個(gè)可用區(qū)各分別部署一個(gè)集群服務(wù),主要是為了避免可用區(qū)故障。
DataBase:
數(shù)據(jù)庫負(fù)責(zé)數(shù)據(jù)庫的高可用和高性能的數(shù)據(jù)存儲(chǔ),一個(gè)高可用的數(shù)據(jù)庫通常包含兩個(gè)數(shù)據(jù)庫實(shí)例:一個(gè)主數(shù)據(jù)庫和備用數(shù)據(jù)庫。當(dāng)所有請(qǐng)求發(fā)送到主數(shù)據(jù)庫時(shí),由 RDS實(shí)例來負(fù)責(zé)響應(yīng)服務(wù)器請(qǐng)求,完成對(duì)數(shù)據(jù)的讀寫操作。主和備用數(shù)據(jù)庫之間的數(shù)據(jù)同步復(fù)制。如果主數(shù)據(jù)庫由于硬件或網(wǎng)絡(luò)故障而不可用時(shí),RDS會(huì)自動(dòng)偵測(cè)到故障,啟動(dòng)故障轉(zhuǎn)移過程,備用數(shù)據(jù)庫將成為了主數(shù)據(jù)庫,同時(shí)DNS也會(huì)自動(dòng)更新,來實(shí)現(xiàn)快速故障轉(zhuǎn)移。
VPC&安全組設(shè)置:
每一層都設(shè)計(jì)了安全組和子網(wǎng),能夠更加有效提供安全保障機(jī)制。
在應(yīng)用層autoScaling的安全控制中定義允許訪問的80和443端口,允許特定訪問 eg. ssh 22。
安全組入站策略定義允許訪問MYSQL/Aurora/redis等端口。
監(jiān)控:
通過使用CloudWatch來監(jiān)控整個(gè)系統(tǒng)的內(nèi)存使用率、利用率等一系列指標(biāo)來監(jiān)控服務(wù)器運(yùn)行狀況。
Summary 總結(jié):
創(chuàng)業(yè)公司提出的需求正是云平臺(tái)提供商所要解決的問題,如何提供可管理的,高性能,高可用,安全的基礎(chǔ)服務(wù)平臺(tái),同時(shí)方便用戶日常的運(yùn)維,發(fā)布和應(yīng)對(duì)突發(fā)事件的能力。
高性能:也是客戶非常關(guān)注的,AWS覆蓋全球25個(gè)地理區(qū)域,81可用區(qū),在提供高可用的服務(wù)同時(shí),也能夠提供高性能服務(wù)。AWS提供了各種類型的實(shí)例類型,內(nèi)存優(yōu)化,存儲(chǔ)優(yōu)化等等,適應(yīng)不同的需求。
高可用性:無論是APP層的AutoScaling、數(shù)據(jù)庫、S3都會(huì)提供不同成本的規(guī)格,而且是在不同的可用區(qū),這個(gè)可以保證一個(gè)可用區(qū)不可用時(shí),應(yīng)用可以快速切換到另外的可用區(qū),做到高可用。
安全性:AWS通過強(qiáng)大自動(dòng)監(jiān)控系統(tǒng)可以做到保護(hù)網(wǎng)絡(luò)和增強(qiáng)互聯(lián)網(wǎng)接入的安全性,通過VPC和安全組的控制,做到網(wǎng)絡(luò)的安全性和隔離性。
References 引用:
https://aws.amazon.com/cn/vpc/?nc2=h_ql_prod_fs_vpc https://aws.amazon.com/cn/ec2/?nc2=h_ql_prod_cp_ec2 https://aws.amazon.com/cn/rds/aurora/?nc2=h_ql_prod_db_aa https://aws.amazon.com/cn/cloudfront/?nc2=type_a https://aws.amazon.com/cn/s3/?nc2=h_ql_prod_st_s3
關(guān)鍵詞:設(shè)計(jì),企業(yè),小型