使用SpringBoot+ECS鏡像的方式創(chuàng)建單機(jī)版ECS服務(wù)
本文介紹基于SpringBoot+ECS鏡像的方式快速創(chuàng)建單機(jī)版ECS服務(wù)的詳細(xì)信息。
服務(wù)說明
本示例會自動的構(gòu)建計(jì)算巢服務(wù),具體的服務(wù)構(gòu)建流程如下。
OOS ACS-ECS-UpdateImage模板執(zhí)行命令構(gòu)建ECS鏡像。
通過構(gòu)建好的ECS鏡像創(chuàng)建ECS鏡像部署物并完成分發(fā)。
創(chuàng)建計(jì)算巢服務(wù)并關(guān)聯(lián)鏡像部署物。
創(chuàng)建過程大約持續(xù)15分鐘,當(dāng)服務(wù)變成待提交后構(gòu)建成功。
部署架構(gòu)
本部署架構(gòu)為單機(jī)ECS部署,通過公網(wǎng)IP的8080端口訪問。
服務(wù)構(gòu)建計(jì)費(fèi)說明
測試本服務(wù)構(gòu)建需要支付構(gòu)建鏡像過程中的ECS費(fèi)用和快照費(fèi)用,請確保賬號中有足夠的余額,預(yù)計(jì)消耗金額。
構(gòu)建鏡像,需要創(chuàng)建ECS實(shí)例(ecs.c6.large,5 Mbps公網(wǎng)帶寬,40 GiB高效云盤系統(tǒng)盤):0.660元/小時(shí),預(yù)計(jì)消耗總金額:0.660*0.1≈0.07元(構(gòu)建鏡像預(yù)計(jì)10分鐘以內(nèi))。
快照費(fèi)用:該服務(wù)創(chuàng)建快照大小為40 GiB,構(gòu)建鏡像地域默認(rèn)為新加坡,那么消耗金額為:0.136元/GB/月 * 40 GB * 1月)/30天/24小時(shí)≈0.007元/小時(shí)。更多信息,請參見快照計(jì)費(fèi)。
創(chuàng)建服務(wù)實(shí)例涉及的費(fèi)用參考服務(wù)實(shí)例計(jì)費(fèi)說明
RAM賬號所需權(quán)限
本服務(wù)需要對ECS、VPC等資源進(jìn)行訪問和創(chuàng)建操作,若您使用RAM用戶創(chuàng)建服務(wù)實(shí)例,需要在創(chuàng)建服務(wù)實(shí)例前,對使用的RAM用戶的賬號添加相應(yīng)資源的權(quán)限。添加RAM權(quán)限的詳細(xì)操作,請參見為RAM用戶授權(quán)。
所需權(quán)限如下表所示。
權(quán)限策略名稱 | 備注 |
AliyunECSFullAccess | 管理云服務(wù)器服務(wù)(ECS)的權(quán)限 |
AliyunVPCFullAccess | 管理專有網(wǎng)絡(luò)(VPC)的權(quán)限 |
AliyunROSFullAccess | 管理資源編排服務(wù)(ROS)的權(quán)限 |
AliyunComputeNestUserFullAccess | 管理計(jì)算巢服務(wù)(ComputeNest)的用戶側(cè)權(quán)限 |
AliyunComputeNestSupplierFullAccess | 管理計(jì)算巢服務(wù)(ComputeNest)的服務(wù)商側(cè)權(quán)限 |
服務(wù)實(shí)例計(jì)費(fèi)說明
測試本服務(wù)在計(jì)算巢上的費(fèi)用主要如下資源:
所選vCPU與內(nèi)存規(guī)格
系統(tǒng)盤類型及容量
公網(wǎng)帶寬
計(jì)費(fèi)方式包括:
按量付費(fèi)(小時(shí))
包年包月
目前提供如下實(shí)例:
規(guī)格族 | vCPU與內(nèi)存 | 系統(tǒng)盤 | 公網(wǎng)帶寬 |
ecs.c6.large | 內(nèi)存型c6,2vCPU 4 GiB | ESSD云盤200 GiB PL0 | 固定帶寬1 Mbps |
ecs.c6.2xlarge | 內(nèi)存型c6,4vCPU 8 GiB | ESSD云盤200 GiB PL0 | 固定帶寬1 Mbps |
預(yù)估費(fèi)用在創(chuàng)建實(shí)例時(shí)可實(shí)時(shí)看到。
部署流程
部署參數(shù)說明
參數(shù)組 | 參數(shù)項(xiàng) | 說明 |
服務(wù)實(shí)例 | 服務(wù)實(shí)例名稱 | 長度不超過64個(gè)字符,必須以英文字母開頭,可包含數(shù)字、英文字母、短劃線(-)和下劃線(_)。 |
地域 | 服務(wù)實(shí)例部署的地域。 | |
付費(fèi)類型 | 資源的計(jì)費(fèi)類型:按量付費(fèi)和包年包月。 | |
ECS實(shí)例配置 | 實(shí)例類型 | 可用區(qū)下可以使用的實(shí)例規(guī)格。 |
實(shí)例密碼 | 長度8-30,必須包含三項(xiàng)(大寫字母、小寫字母、數(shù)字、()`~!@#$%^&*-+=|{}[]:;'<>,.?/中的特殊符號)。 | |
網(wǎng)絡(luò)配置 | 可用區(qū) | ECS實(shí)例所在可用區(qū)。 |
部署步驟
獲取部署鏈接。
在服務(wù)詳情頁,查看服務(wù)實(shí)例部署鏈接。
單擊部署鏈接,進(jìn)入服務(wù)實(shí)例部署界面,根據(jù)界面提示,填寫參數(shù)完成部署。
參數(shù)填寫完成后可以看到對應(yīng)詢價(jià)明細(xì),確認(rèn)參數(shù)后點(diǎn)擊下一步:確認(rèn)訂單。
確認(rèn)訂單完成后同意服務(wù)協(xié)議并點(diǎn)擊立即創(chuàng)建,進(jìn)入部署階段。
您可以單擊去列表查看按鈕,查看服務(wù)實(shí)例的部署進(jìn)度。
等待部署完成后就可以開始使用服務(wù),進(jìn)入服務(wù)實(shí)例詳情點(diǎn)擊visitUrl。
查看部署結(jié)果。
服務(wù)詳細(xì)說明
本文通過將代碼構(gòu)建后,將deploy.sh和application.jar打包成package.tgz放到artifacts目錄下,然后OOS構(gòu)建鏡像SpringBootImage,構(gòu)建鏡像的基礎(chǔ)鏡像為centos_7_8_x64_20G_alibase_20211130.vhd,執(zhí)行的命令如下。
yum install -y java
yum install -y git
# 下載包 例子是從git獲取
git clone https://github.com/aliyun-computenest/springboot-ecs-image-demo.git
mkdir -p /home/admin/application
cp /root/springboot-ecs-image-demo/artifacts/package.tgz /home/admin/application
cd /home/admin/application
tar xvf package.tgz
rm -rf /root/springboot-ecs-image-demo
rm package.tgz
templates/template.yaml主要由如下三部分組成。
Parameters
定義需要用戶填寫的參數(shù),包括付費(fèi)類型,實(shí)例規(guī)格和實(shí)例密碼可用區(qū)參數(shù)。PayType: Type: String Label: en: ECS Instance Charge Type zh-cn: 付費(fèi)類型 Default: PostPaid AllowedValues: - PostPaid - PrePaid AssociationProperty: ChargeType AssociationPropertyMetadata: LocaleKey: InstanceChargeType PayPeriodUnit: Type: String Label: en: Pay Period Unit zh-cn: 購買資源時(shí)長周期 Default: Month AllowedValues: - Month - Year AssociationProperty: PayPeriodUnit AssociationPropertyMetadata: Visible: Condition: Fn::Not: Fn::Equals: - ${PayType} - PostPaid PayPeriod: Type: Number Label: en: Period zh-cn: 購買資源時(shí)長 Default: 1 AllowedValues: - 1 - 2 - 3 - 4 - 5 - 6 - 7 - 8 - 9 AssociationProperty: PayPeriod AssociationPropertyMetadata: Visible: Condition: Fn::Not: Fn::Equals: - ${PayType} - PostPaid EcsInstanceType: Type: String Label: en: Instance Type zh-cn: 實(shí)例類型 AssociationProperty: ALIYUN::ECS::Instance::InstanceType AssociationPropertyMetadata: InstanceChargeType: ${PayType} AllowedValues: - ecs.c6.large - ecs.c6.2xlarge InstancePassword: NoEcho: true Type: String Description: en: Server login password, Length 8-30, must contain three(Capital letters, lowercase letters, numbers, ()`~!@#$%^&*_-+=|{}[]:;'<>,.?/ Special symbol in) zh-cn: 服務(wù)器登錄密碼,長度8-30,必須包含三項(xiàng)(大寫字母、小寫字母、數(shù)字、 ()`~!@#$%^&*_-+=|{}[]:;'<>,.?/ 中的特殊符號) AllowedPattern: '^[a-zA-Z0-9-\(\)\`\~\!\@\#\$\%\^\&\*\_\-\+\=\|\{\}\[\]\:\;\<\>\,\.\?\/]*$' Label: en: Instance Password zh-cn: 實(shí)例密碼 ConstraintDescription: en: Length 8-30, must contain three(Capital letters, lowercase letters, numbers, ()`~!@#$%^&*_-+=|{}[]:;'<>,.?/ Special symbol in) zh-cn: 長度8-30,必須包含三項(xiàng)(大寫字母、小寫字母、數(shù)字、 ()`~!@#$%^&*_-+=|{}[]:;'<>,.?/ 中的特殊符號) MinLength: 8 MaxLength: 30 AssociationProperty: ALIYUN::ECS::Instance::Password ZoneId: Type: String Label: en: Zone ID zh-cn: 可用區(qū)ID AssociationProperty: ALIYUN::ECS::Instance::ZoneId
Resources
定義需要開的資源,包括新開的VPC、Vswitch和ECS實(shí)例,以及執(zhí)行命令的定義。InstanceGroup.ImageId
定義為springboot
,最終會由ECS鏡像的部署物替換成對應(yīng)地域的真正的鏡像ID。Vpc: Type: ALIYUN::ECS::VPC Properties: CidrBlock: 192.168.0.0/16 SecurityGroup: Type: ALIYUN::ECS::SecurityGroup Properties: SecurityGroupName: Ref: ALIYUN::StackName VpcId: Ref: Vpc # 安全組入端口 SecurityGroupIngress: - PortRange: 8080/8080 Priority: 1 SourceCidrIp: 0.0.0.0/0 IpProtocol: tcp NicType: internet VSwitch: Type: ALIYUN::ECS::VSwitch Properties: ZoneId: Ref: ZoneId VpcId: Ref: Vpc CidrBlock: 192.168.0.0/24 InstanceGroup: Type: ALIYUN::ECS::InstanceGroup Properties: VpcId: Ref: Vpc VSwitchId: Ref: VSwitch SecurityGroupId: Ref: SecurityGroup ZoneId: Ref: ZoneId ImageId: springboot InstanceType: Ref: EcsInstanceType SystemDiskCategory: cloud_essd IoOptimized: optimized MaxAmount: 1 InstallPackage: Type: ALIYUN::ECS::RunCommand Properties: InstanceIds: Fn::GetAtt: - InstanceGroup - InstanceIds Type: RunShellScript Sync: true Timeout: 3600 CommandContent: Fn::Sub: - | #!/bin/bash cd /home/admin/application /bin/bash deploy.sh start - AccountId: Ref: ALIYUN::TenantId
Outputs
定義需要最終在計(jì)算巢概覽頁中對用戶展示的輸出。Outputs: VisitUrl: Description: en: VisitUrl. zh-cn: 訪問頁面。 Value: Fn::Sub: - http://${Address}:8080 - Address: Fn::Select: - 0 - Fn::GetAtt: - InstanceGroup - PublicIps
相關(guān)文檔
服務(wù)配置
創(chuàng)建代運(yùn)維服務(wù)完成實(shí)例運(yùn)維
創(chuàng)建包含變配功能的服務(wù)并變配服務(wù)實(shí)例