使用SpringBoot+軟件包的方式創(chuàng)建單機版ECS服務
本文介紹基于SpringBoot+軟件包的方式快速創(chuàng)建單機版ECS服務的詳細信息。
服務說明
本示例會自動的構建計算巢服務,創(chuàng)建過程大約持續(xù)1分鐘,當服務變成待提交后構建成功。具體的服務構建流程如下。
上傳文件并構建計算巢文件部署物。
創(chuàng)建計算巢服務并關聯(lián)文件部署物
服務架構
本部署架構為單機ECS部署,通過公網(wǎng)IP的8080端口訪問。
服務構建計費說明
測試本服務構建無需任何費用,創(chuàng)建服務實例涉及的費用參考服務實例計費說明。
RAM賬號所需權限
本服務需要對ECS、VPC等資源進行訪問和創(chuàng)建操作,若您使用RAM用戶創(chuàng)建服務實例,需要在創(chuàng)建服務實例前,對使用的RAM用戶的賬號添加相應資源的權限。添加RAM權限的詳細操作,請參見為RAM用戶授權。
所需權限如下表所示。
權限策略名稱 | 備注 |
AliyunECSFullAccess | 管理云服務器服務(ECS)的權限 |
AliyunVPCFullAccess | 管理專有網(wǎng)絡(VPC)的權限 |
AliyunROSFullAccess | 管理資源編排服務(ROS)的權限 |
AliyunComputeNestUserFullAccess | 管理計算巢服務(ComputeNest)的用戶側權限 |
AliyunComputeNestSupplierFullAccess | 管理計算巢服務(ComputeNest)的服務商側權限 |
服務實例計費說明
本服務在計算巢上的費用主要涉及:
所選vCPU與內存規(guī)格
系統(tǒng)盤類型及容量
公網(wǎng)帶寬
計費方式包括:
按量付費(小時)
包年包月
目前提供如下實例:
規(guī)格族 | vCPU與內存 | 系統(tǒng)盤 | 公網(wǎng)帶寬 |
ecs.c6.large | 內存型c6,2vCPU 4 GiB | ESSD云盤200 GiB PL0 | 固定帶寬1 Mbps |
ecs.c6.2xlarge | 內存型c6,4vCPU 8 GiB | ESSD云盤200 GiB PL0 | 固定帶寬1 Mbps |
預估費用在創(chuàng)建實例時可實時看到。
服務實例部署流程
部署參數(shù)說明
參數(shù)組 | 參數(shù)項 | 說明 |
服務實例 | 服務實例名稱 | 長度不超過64個字符,必須以英文字母開頭,可包含數(shù)字、英文字母、短劃線(-)和下劃線(_)。 |
地域 | 服務實例部署的地域。 | |
付費類型 | 資源的計費類型:按量付費和包年包月。 | |
ECS實例配置 | 實例類型 | 可用區(qū)下可以使用的實例規(guī)格。 |
實例密碼 | 長度8-30,必須包含三項(大寫字母、小寫字母、數(shù)字、()`~!@#$%^&*-+=|{}[]:;'<>,.?/ 中的特殊符號)。 | |
網(wǎng)絡配置 | 可用區(qū) | ECS實例所在可用區(qū)。 |
部署步驟
獲取部署鏈接。
在服務詳情頁,查看服務實例部署鏈接。
單擊部署鏈接,進入服務實例部署界面,根據(jù)界面提示,填寫參數(shù)完成部署。
參數(shù)填寫完成后可以看到對應詢價明細,確認參數(shù)后點擊下一步:確認訂單。
確認訂單完成后同意服務協(xié)議并點擊立即創(chuàng)建,進入部署階段。
您可以單擊去列表查看按鈕,查看服務實例的部署進度。
等待部署完成后就可以開始使用服務,進入服務實例詳情點擊visitUrl。
查看部署結果。
服務詳細說明
本文通過將代碼構建后,將deploy.sh和application.jar打包成package.tgz,通過計算巢部署物上傳為文件部署物,并分發(fā)生成SpringBootPackage,然后在模板ALIYUN::ECS::RunCommand
中執(zhí)行命令。
yum install -y java
mkdir -p /home/admin/application
cd /home/admin/application
wget '{{ computenest::file::springboot }}' -O package.tgz
tar xvf package.tgz
/bin/bash deploy.sh start
{{ computenest::file::springboot }} 為占位符,會由計算巢服務替換成文件部署物SpringBootPackage的HTTP下載地址。其中templates/template.yaml主要由三部分組成,詳細信息如下。
Parameters
定義需要用戶填寫的參數(shù),包括付費類型,實例規(guī)格和實例密碼可用區(qū)參數(shù)。PayType: Type: String Label: en: ECS Instance Charge Type zh-cn: 付費類型 Default: PostPaid AllowedValues: - PostPaid - PrePaid AssociationProperty: ChargeType AssociationPropertyMetadata: LocaleKey: InstanceChargeType PayPeriodUnit: Type: String Label: en: Pay Period Unit zh-cn: 購買資源時長周期 Default: Month AllowedValues: - Month - Year AssociationProperty: PayPeriodUnit AssociationPropertyMetadata: Visible: Condition: Fn::Not: Fn::Equals: - ${PayType} - PostPaid PayPeriod: Type: Number Label: en: Period zh-cn: 購買資源時長 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: 實例類型 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: 服務器登錄密碼,長度8-30,必須包含三項(大寫字母、小寫字母、數(shù)字、 ()`~!@#$%^&*_-+=|{}[]:;'<>,.?/ 中的特殊符號) AllowedPattern: '^[a-zA-Z0-9-\(\)\`\~\!\@\#\$\%\^\&\*\_\-\+\=\|\{\}\[\]\:\;\<\>\,\.\?\/]*$' Label: en: Instance Password zh-cn: 實例密碼 ConstraintDescription: en: Length 8-30, must contain three(Capital letters, lowercase letters, numbers, ()`~!@#$%^&*_-+=|{}[]:;'<>,.?/ Special symbol in) zh-cn: 長度8-30,必須包含三項(大寫字母、小寫字母、數(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實例和執(zhí)行命令的定義。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: # 付費類型 InstanceChargeType: Ref: PayType PeriodUnit: Ref: PayPeriodUnit Period: Ref: PayPeriod VpcId: Ref: Vpc VSwitchId: Ref: VSwitch SecurityGroupId: Ref: SecurityGroup ZoneId: Ref: ZoneId ImageId: springboot Password: Ref: InstancePassword InstanceType: Ref: EcsInstanceType SystemDiskCategory: cloud_essd SystemDiskSize: 200 InternetMaxBandwidthOut: 1 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
定義需要最終在計算巢概覽頁中對用戶展示的輸出。Outputs: VisitUrl: Description: en: VisitUrl. zh-cn: 訪問頁面。 Value: Fn::Sub: - http://${Address}:8080 - Address: Fn::Select: - 0 - Fn::GetAtt: - InstanceGroup - PublicIps