使用SpringBoot+软件包的方式创建ECS集群版服务

本文介绍基于SpringBoot+软件包的方式快速创建集群版服务的详细信息。

服务说明

本示例会自动的构建计算巢服务,创建过程大约持续1分钟,当服务变成待提交后构建成功。具体的服务构建流程如下:

  1. 上传文件并构建计算巢文件部署物

  2. 创建计算巢服务并关联文件部署物

服务架构

本部署架构为集群ECS部署,通过EIP(弹性公网IP)的8080端口访问,配备负载均衡和弹性伸缩组,具体如图所示。1.png

服务构建计费说明

测试本服务构建无需任何费用,创建服务实例涉及的费用参考服务实例计费说明。

RAM账号所需权限

本服务需要对ECS、VPC等资源进行访问和创建操作,若您使用RAM用户创建服务实例,需要在创建服务实例前,对使用的RAM用户的账号添加相应资源的权限。添加RAM权限的详细操作,请参见为RAM用户授权

所需权限如下表所示。

权限策略名称

备注

AliyunECSFullAccess

管理云服务器服务(ECS)的权限

AliyunVPCFullAccess

管理专有网络(VPC)的权限

AliyunESSFullAccess

管理弹性伸缩 (ESS) 的权限

AliyunSLBFullAccess

管理负载均衡 (SLB) 的权限

AliyunROSFullAccess

管理资源编排服务(ROS)的权限

AliyunComputeNestUserFullAccess

管理计算巢服务(ComputeNest)的用户侧权限

AliyunComputeNestSupplierFullAccess

管理计算巢服务(ComputeNest)的服务商侧权限

服务实例计费说明

测试本服务在计算巢上的费用主要涉及:

  • 所选vCPU与内存规格

  • 系统盘类型及容量

  • 负载均衡配置

  • EIP费用

计费方式包括:

  • 按量付费(小时)

  • 包年包月

目前提供如下实例类型:

规格族

vCPU与内存

系统盘

公网带宽

ecs.c6.large

内存型c6,2vCPU 4 GiB

ESSD云盘 200 GiB PL0

固定带宽1 Mbps

ecs.c6.2large

内存型c6,4vCPU 8 GiB

ESSD云盘 200 GiB PL0

固定带宽1 Mbps

预估费用在创建实例时可实时看到。

服务实例部署流程

部署参数说明

参数组

参数项

说明

服务实例

服务实例名称

长度不超过64个字符,必须以英文字母开头,可包含数字、英文字母、短划线(-)和下划线(_)。

地域

服务实例部署的地域。

付费类型

资源的计费类型:按量付费和包年包月。

ECS实例配置

实例类型

可用区下可以使用的实例规格。

实例密码

长度8-30,必须包含三项(大写字母、小写字母、数字、 ()`~!@#$%^&*-+=|{}[]:;'<>,.?/ 中的特殊符号)。

SLB配置

实例规格

SLB实例规格配置。

网络配置

可用区

ECS实例所在可用区。

部署步骤

  1. 获取部署链接。

    在服务详情页,查看服务实例部署链接。2.png

  2. 单击部署链接,进入服务实例部署界面,根据界面提示,填写参数完成部署。3.png

  3. 参数填写完成后可以看到对应询价明细,确认参数后点击下一步:确认订单4.png

  4. 确认订单完成后同意服务协议并点击立即创建,进入部署阶段。

    您可以单击去列表查看按钮,查看服务实例的部署进度。5.png6.png

  5. 等待部署完成后就可以开始使用服务,进入服务实例详情点击visitUrl7.png

  6. 查看部署结果。7.png

  7. 对服务实例进行弹性扩缩容。

    1. 在服务实例的运维管理页签中,单击弹性扩缩容

      10.png

    2. 在弹出的界面中,配置扩缩容参数然后点击确定11.png

    3. 运维管理页签中,查看扩缩容进度。12.png13.png

  8. 查看扩缩容后的资源信息。

    待结束执行后可以看到资源中新增了3台ECS,即表示扩缩容完成。14.png

服务详细说明

基础服务说明请参考SpringBoot软件包部署单机版,本文在此基础上新增了SLB和ESS的配置。

  1. SLB为ECS配置负载均衡并绑定对应的EIP。

      Slb:
        Type: ALIYUN::SLB::LoadBalancer
        Properties:
          VpcId:
            Ref: VpcId
          VSwitchId:
            Ref: VSwitchId
          LoadBalancerName:
            Fn::Join:
              - '-'
              - - 'slb'
                - Ref: ALIYUN::StackName
          PayType:
            Ref: PayType
          PricingCycle:
            Ref: PayPeriodUnit
          Duration:
            Ref: PayPeriod
          AddressType: intranet
          LoadBalancerSpec:
            Ref: LoadBalancerSpec
          AutoPay: true
      EipSlbAddress:
        Type: ALIYUN::VPC::EIP
        Properties:
          Name:
            Ref: ALIYUN::StackName
          InternetChargeType: PayByTraffic
          Bandwidth: 5
      EipSlbAddressAssociation:
        Type: ALIYUN::VPC::EIPAssociation
        Properties:
          InstanceId:
            Ref: Slb
          AllocationId:
            Ref: EipSlbAddress
      SlbBackendServerAttachment:
        DependsOn:
          - EcsInstanceGroup
        Type: ALIYUN::SLB::BackendServerAttachment
        Properties:
          BackendServerList:
            Fn::GetAtt:
              - EcsInstanceGroup
              - InstanceIds
          LoadBalancerId:
            Ref: Slb
          BackendServerWeightList:
            - 100
            - 100
      SlbListener:
        DependsOn:
          - Slb
        Type: ALIYUN::SLB::Listener
        Properties:
          Persistence:
            CookieTimeout: 60
            StickySession: 'on'
            PersistenceTimeout: 180
            XForwardedFor: 'off'
            StickySessionType: insert
          ListenerPort: 8080
          Bandwidth: -1
          HealthCheck:
            HttpCode: http_2xx,http_3xx,http_4xx,http_5xx
            HealthCheckType: tcp
            UnhealthyThreshold: 3
            Timeout: 5
            HealthyThreshold: 3
            Port: 8080
            URI: /
            Interval: 2
          LoadBalancerId:
            Ref: Slb
          BackendServerPort: 8080
          Protocol: tcp
    
  2. ESS配置增加弹性伸缩能力可以随时扩缩容。

    EssInstanceScalingGroupEnable:
        Type: 'ALIYUN::ESS::ScalingGroupEnable'
        Properties:
          ScalingRuleArisExecuteVersion: '1'
          ScalingConfigurationId:
            Ref: EcsInstanceScalingConfiguration
          InstanceIds:
            'Fn::GetAtt':
              - EcsInstanceGroup
              - InstanceIds
          ScalingGroupId:
            Ref: EssInstanceScalingGroup
        DependsOn:
          - EcsInstanceScalingConfiguration
          - EssInstanceScalingGroup
      EcsInstanceScalingConfiguration:
        Type: 'ALIYUN::ESS::ScalingConfiguration'
        Properties:
          # 网络配置
          SecurityGroupId:
            Ref: EcsSecurityGroup
          # 伸缩组
          ScalingGroupId:
            Ref: EssInstanceScalingGroup
          ScalingConfigurationName:
            Fn::Join:
              - '-'
              - - 'sc'
                - Ref: ALIYUN::StackName
          # 实例类型
          InstanceType:
            Ref: EcsInstanceType
          # 磁盘配置
          SystemDiskCategory: cloud_essd
          SystemDiskSize: 200
          ImageId: centos_7_8_x64_20G_alibase_20211130.vhd
          InstanceName:
            Fn::Join:
              - '-'
              - - Ref: ALIYUN::StackName
                - '[1,4]'
          UserData:
            Fn::Sub:
              - |
                #!/bin/bash
                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
              - AccountId:
                  Ref: ALIYUN::TenantId
    

相关文档

服务配置

创建代运维服务完成实例运维

创建包含变配功能的服务并变配服务实例

升级配置

服务交付

自定义服务架构图

自定义服务架构图

将服务上架到云市场

其他

实例代码源地址

部署配置