蘇翔宇
(深圳技師學院信息與通信學院,深圳 518116)
自2006 年亞馬遜AWS 公司提出 “云計算”的概念以來,云計算技術在短短十幾年間實現(xiàn)了突飛猛進的發(fā)展,云計算行業(yè)的規(guī)模已經達到萬億級別以上,其地位已經超越傳統(tǒng)的物理數(shù)據中心,成為新一代的IT基礎設施。
成千上萬的企業(yè)想要把自己的業(yè)務遷移到“云” 上,如何快速高效地實現(xiàn)云中各種基礎設施和服務的部署?傳統(tǒng)的通過手動在云中配置云資源的方式效率低下且容易出錯。如何避免大量重復的基礎設施配置操作并降低部署故障率? 一種將基礎設施視為代碼的AWS CloudFor?mation 服務, 有效地解決了以上問題。 AWS CloudFormation 服務使用JSON 或YAML 語言編寫的模板構建堆棧部署云資源,對堆棧創(chuàng)建、更新、刪除的整個生命周期進行管理,實現(xiàn)了云中基礎設施部署的自動化[1]。
在當前工信部倡導百萬企業(yè)上云的趨勢下,越來越多的企業(yè)響應號召開始了上 “云” 之路,準備將全部或部分業(yè)務遷移到云上。由于很多企業(yè)原有的IT 基礎架構和業(yè)務系統(tǒng)功能不同,其云遷移的方案也各不相同,但在遷移中有關網絡等基礎設施的部署都是必須的,要在云中先把基礎設施部署完成,才能著手遷移具體的業(yè)務[2]。
當前的云計算服務提供商很多,以亞馬遜AWS 公有云為例,云中的基礎設施主要包括區(qū)域與可用區(qū)、VPC 與子網、安全組和網絡ACL、路由表、負載均衡器、防火墻、計算資源、存儲資源等,如圖1 所示。無論是哪種云遷移方案,從傳統(tǒng)的本地IT 系統(tǒng)遷移到云中的這些基礎設施資源都是必須的,基礎設施遷移方案的準確與否是云遷移最終能否成功的關鍵。
圖1 云遷移中的基礎設施對應
鑒于基礎設施在云中部署的先行性和重要性,企業(yè)在做云遷移時務必格外重視,但絕大多數(shù)企業(yè)在云中部署基礎設施都是采用手動的形式,這樣做的劣勢顯而易見,每次操作的方案隨機性大,部署的穩(wěn)定性欠缺,大量重復性操作,復用性差且方案更新難度大[3]。
AWS CloudFormation服務用代碼構建云中的基礎設施,支持JSON 或YAML 語言,用戶可以使用堆棧文件包含所有用到的云資源,比如網絡資源、計算資源、存儲資源等,編輯完成之后運行即可在云中直接生成這些基礎設施。除此之外,AWS CloudFormation服務還可以對整個堆棧進行生命周期管理,這種自動化的部署和管理極大地降低了云中基礎設施構建的難度以及之后堆棧運維的復雜程度,還為將來的升級提供了堆棧更新等簡便易用的功能,可謂一舉多得。
下面以一家中小企業(yè)的云遷移案例為例制定了一套使用AWS CloudFormation服務部署基礎設施的方案,方案具體包括網絡層、應用層、更新堆棧三個部分。
對于云中基礎設施和服務的部署要遵循合理的順序,才能保障部署任務順利完成,通常情況下首先要完成的是網絡層的部署。以下以構建VPC和子網為例,介紹使用AWS CloudFor?mation服務部署網絡層的實現(xiàn)方案:
以上建立了一個地址范圍是10.0.0.0/16的VPC,為該VPC關聯(lián)了一個互聯(lián)網網關,互聯(lián)網網關是VPC中的云資源通往互聯(lián)網的媒介。然后在VPC中構建了一個地址范圍是10.0.0.0/24的公有子網,并為該公有子網關聯(lián)了公有路由表,保證公有子網中的計算資源可以通過公有路由表經由互聯(lián)網網關訪問互聯(lián)網。
在完成了基本的網絡層部署之后,接下來要部署應用層資源,下面以EC2 虛擬機為例介紹計算資源的具體部署方案,包括虛擬機鏡像的選擇、初始化安裝的軟件和服務、公有網絡地址分配、安全組的定義等,具體方案如下:
AmazonLinuxAMIID:
Type: AWS::SSM::Parameter::Value
Default: /aws/service/ami?amazon?linux?latest/amzn2?ami?hvm?x86_64-gp2
WebServerInstance:
Type: AWS::EC2::Instance
Metadata:
'AWS::CloudFormation::Init':
packages:
yum:
httpd:[]
files:
/var/www/html/index.html
services:
sysvinit:
httpd:
enabled: true
ensureRunning: true
WebServerSecurityGroup:
Type: AWS::EC2::SecurityGroup
Properties:
VpcId:
Fn::ImportValue:
!Sub ${NetworkStackName}-VPCID
SecurityGroupIngress:
- IpProtocol: tcp
FromPort: 80
ToPort: 80
CidrIp: 0.0.0.0/0
以上定義了EC2 是使用linux gp2 類型的鏡像模板,初始化安裝了Apache web 應用服務器軟件,安全組開放了80端口。
初次完成云資源部署之后,如果遇到方案的更新或是部署升級該怎么辦?這就要用到AWS CloudFormation服務的更新堆棧操作。本例是在2.1 和2.2 的基礎上,更新了原有方案中的安全組開放端口號,啟用更安全的https 協(xié)議來訪問。具體實現(xiàn)如下:
WebServerSecurityGroup:
Type: AWS::EC2::SecurityGroup
Properties:
VpcId:
Fn::ImportValue:
!Sub ${NetworkStackName}-VPCID
SecurityGroupIngress:
- IpProtocol: tcp
FromPort: 443
ToPort: 443
CidrIp: 0.0.0.0/0
以上安全組進行更新只開放了443端口,替代了原有的80 端口,使用https 協(xié)議,通過傳輸加密和身份認證增強了信息傳輸?shù)陌踩浴?/p>
復用性是AWS CloudFormation 服務的一大優(yōu)勢,一次編寫多次使用,例如某個企業(yè)在某次進行云遷移時使用的堆棧文件可以在以后直接使用[4]。但企業(yè)面臨的真實環(huán)境往往很復雜,比如兩次遷移間隔了一定的時間,IT 基礎架構和業(yè)務都發(fā)生了變化無法直接使用之前的堆棧文件。此時,可以使用更新堆棧的方法,把更新的部分放在一個新的文件里,在原有堆棧文件執(zhí)行之后,再執(zhí)行一次新的文件就可以了。
當用戶構建的堆棧不再使用需要刪除時,如何避免磁盤上的數(shù)據丟失以及故障時修復?通常的做法是定制堆棧刪除策略,以下策略就是在磁盤刪除時建立磁盤快照,以便今后可以通過快照還原磁盤數(shù)據。
DiskVolume:
Type: AWS::EC2::Volume
Properties:
Size: 100
AvailabilityZone: !GetAtt WebServerInstance.
AvailabilityZone
Tags:
- Key: Name
Value: Web Data
DeletionPolicy: Snapshot
在我國進行數(shù)字化經濟轉型的大背景下,云計算已經成為新一代的信息基礎設施,如何讓企業(yè)可以將業(yè)務平滑地遷移到 “云” 上是亟待解決的問題。本文的研究就是致力于為中小企業(yè)提供高效快捷的較為通用的云中基礎設施自動化部署方案。