本文介紹基於ECS+SLB架構版MySQL軟體包快速構建包含私網串連(PrivateLink)功能的單租版全託管計算巢服務執行個體的詳細資料。
服務說明
本樣本採用ECS+SLB的架構,並預設開啟了私網打通,使用者部署服務執行個體後,可以直接通過內網訪問部署在服務商的MySQL。本樣本對應的Git倉庫地址為:mysql-managed-demo。
本樣本會自動的構建計算巢服務,建立過程大約持續3分鐘,當服務變成待提交後構建成功。具體的服務構建流程如下。
將MySQL安裝包(提前存放到該 GitHub repo中)構建為計算巢檔案部署物。
建立計算巢服務並關聯檔案部署物。
服務為您提供了如下三種套餐。
套餐名 | SLB規格 | ECS規格類型系列 | vCPU與記憶體 | 系統硬碟 | 公網頻寬 |
低配版 | slb.s1.small | ecs.c6.large | 記憶體型c6,2vCPU 4 GiB | ESSD雲端硬碟200 GiB PL0 | 固定頻寬1 Mbps |
基礎版 | slb.s1.small | ecs.c6.xlarge | 記憶體型c6,4vCPU 8 GiB | ESSD雲端硬碟200 GiB PL0 | 固定頻寬1 Mbps |
高配版 | slb.s3.small | ecs.c6.2xlarge | 記憶體型c6,4vCPU 8 GiB | ESSD雲端硬碟200 GiB PL0 | 固定頻寬1 Mbps |
部署架構
本部署架構為SLB+ECS,安全性群組開放連接埠為3306,並配置了終端節點。
服務構建計費說明
測試本服務構建無需任何費用,建立服務執行個體涉及的費用參考服務執行個體計費說明。
RAM帳號要求的權限
本服務需要對ECS、VPC等資源進行訪問和建立操作,若您使用RAM使用者建立服務執行個體,需要在建立服務執行個體前,對使用的RAM使用者的帳號添加相應資源的許可權。添加RAM許可權的詳細操作,請參見為RAM使用者授權。
要求的權限如下表所示。
權限原則名稱 | 備忘 |
AliyunECSFullAccess | 管理雲端服務器服務(ECS)的許可權 |
AliyunVPCFullAccess | 管理Virtual Private Cloud的許可權 |
AliyunROSFullAccess | 管理Resource Orchestration Service服務(ROS)的許可權 |
AliyunComputeNestUserFullAccess | 管理計算巢服務(ComputeNest)的使用者側許可權 |
AliyunComputeNestSupplierFullAccess | 管理計算巢服務(ComputeNest)的服務商側許可權 |
AliyunPrivateLinkFullAccess | 管理私網串連(PrivateLink)的許可權 |
服務執行個體計費說明
測試本服務在計算巢上的費用主要涉及:
所選vCPU與記憶體規格
系統硬碟類型及容量
公網頻寬
私網串連費用
計費方式包括:
隨用隨付(小時)
訂用帳戶
服務執行個體的預估費用在建立執行個體時可即時看到。私網串連時,只有在建立服務時候並建立串連後才會計費,計費的詳細資料,請參見計費說明。
部署流程
部署參數說明
參數族 | 參數項 | 說明 |
基礎配置 | 資料庫root和admin賬戶密碼 | 資料庫root和admin賬戶密碼,長度8-32個字元,可包含大小寫字母、數字及特殊符號(包含:!@#$%^&*-+=_)。 |
網路設定 | 可用性區域 | 選擇可用性區域,資源將在服務商的該可用性區域建立。 |
網路設定 | 專用網路 | 選擇建立私網串連的VPC。 |
網路設定 | 安全性群組 | 選擇建立私網串連的安全性群組。 |
網路設定 | 交換器和可用性區域 | 選擇建立私網串連的可用性區域與交換器。 |
部署步驟
單擊服務商提供的服務執行個體部署連結,在服務執行個體部署介面,根據介面提示,填寫參數完成部署。

您還需要填寫網路資訊,建立服務執行個體時,私網串連的終端節點將在該可用性區域建立。

參數填寫完成後可以看到對應的詢價明細,確認參數後點擊下一步:確認訂單。

確認訂單完成後同意服務合約並單擊立即建立進入部署階段。


等待部署完成後就可以開始使用服務。

使用服務,本服務支援私網訪問,租戶可以通過PrivateLink實現私網訪問(私網訪問協助文檔), 租戶私網訪問流程。
在服務執行個體的虛擬互連網頁簽中查看詳細資料,串連時可以通過自訂網域名(如果在建立服務執行個體時勾選了的話)、IP地址或者可用性區域網域名稱進行訪問。

在對應的vsw中建立ECS,然後安裝MySQL用戶端。
yum install mysql or apt install mysql-client在該ECS中串連MySQL,下面展示分別用自訂網域名、IP與可用性區域網域名稱進行串連。
自訂網域名方式訪問。

通過IP訪問。

通過可用性區域網域名稱訪問。

服務詳細說明
本文提前將MySQL社區版安裝包存放到該Github Repo中,構建服務過程中會將該安裝包發布為計算巢部署物,並在ROS模板中寫入安裝指令,ROS模板引擎在執行時便會自動執行安裝操作。{{ computenest::file::MySQL }} 為預留位置,會由計算巢服務替換成檔案部署物MySQL的HTTP下載地址。
wget '{{ computenest::file::MySQL }}' -O mysql-community-release-el6-5.noarch.rpm
rpm -ivh mysql-community-release-el6-5.noarch.rpm
yum repolist all | grep mysql
yum install mysql-community-server -y檔案說明
檔案路徑 | 說明 |
config.yaml | 構建服務的設定檔,服務構建過程中會使用計算巢命令列工具computenest-cli,computenest-cli會基於該設定檔構建服務。 |
parameters.yaml | 本服務為託管版單租,使用該檔案渲染服務商需要配置的網路參數,包括VpcId,vSwitch等。 |
artifact/mysql-community-release-el6-5.noarch.rpm | MySQL社區版安裝包,構建過程會將該包發布為計算巢部署物。 |
icons/service_logo.jpg | 構建服務預設的表徵圖。 |
templates/parameters.yaml | 本服務為託管版單租服務,所以只需要使用者填寫一部分參數,即可通過該檔案指定使用者所填參數。 |
templates/template.yaml | ROS模板檔案,ROS模板引擎根據該模板能夠自動建立出所有的資源。 |
其中templates/template.yaml主要由三部分組成,詳細資料如下。
Parameters定義需要使用者填寫的參數,包括付費類型,執行個體規格和執行個體密碼可用性區域參數。ZoneId: Type: String AssociationProperty: ALIYUN::ECS::Instance:ZoneId Label: en: VSwitch Available Zone zh-cn: 可用性區域 # 資料庫root賬戶密碼 Password: # 查詢該參數時只輸出星號(*) NoEcho: true Type: String Description: en: 'Database root account passwor, 8-32 characters, including uppercase and lowercase letters, numbers and special symbols (including: !@#$%^&*-+=_).' zh-cn: 資料庫root賬戶密碼,長度8-32個字元,可包含大小字母、數字及特殊符號(包含:!@#$%^&*-+=_)。 Label: en: Root Account Password zh-cn: 資料庫root賬戶密碼 ConstraintDescription: en: '8-32 characters, including uppercase and lowercase letters, numbers and special symbols (including: !@#$%^&*-+=_).' zh-cn: 8-32個字元,可包含大小字母、數字及特殊符號(包含:!@#$%^&*-+=_)。 MinLength: '8' MaxLength: '32' AssociationProperty: ALIYUN::ECS::Instance::Password # Virtual Private Cloud執行個體ID VpcId: AssociationProperty: ALIYUN::ECS::VPC::VPCId Type: String Label: en: VPC ID zh-cn: Virtual Private Cloud執行個體ID # 交換器執行個體ID VSwitchId: AssociationProperty: ALIYUN::ECS::VSwitch::VSwitchId AssociationPropertyMetadata: VpcId: ${VpcId} ZoneId: ${ZoneId} Type: String Label: en: VSwitch ID zh-cn: 交換器執行個體ID # Ecs執行個體類型 EcsInstanceType: Type: String Label: en: Instance Type zh-cn: Ecs執行個體類型 AssociationProperty: ALIYUN::ECS::Instance::InstanceType AllowedValues: - ecs.c6.large - ecs.c6.xlarge - ecs.c6.2xlarge - ecs.c6.4xlarge SlbInstanceType: Type: String Label: en: Instance Type zh-cn: Slb執行個體類型 AssociationProperty: ALIYUN::Slb::LoadBalance::LoadBalancerSpec AllowedValues: - slb.s1.small - slb.s3.smallResources定義需要開的資源,包括新開的Vpc、vSwitch、ECS、Slb執行個體、私網串連。EcsSecurityGroup: Type: 'ALIYUN::ECS::SecurityGroup' Properties: VpcId: Ref: VpcId SecurityGroupIngress: - Priority: 1 PortRange: 3306/3306 NicType: internet SourceCidrIp: 0.0.0.0/0 IpProtocol: tcp # Ecs執行個體 EcsInstanceGroup: Type: ALIYUN::ECS::InstanceGroup Properties: # I/O最佳化執行個體 IoOptimized: optimized ZoneId: Ref: ZoneId DiskMappings: - Category: cloud_essd Device: /dev/xvdb Size: 200 SystemDiskSize: 40 # cloud-init執行使用者命令 # /var/log/cloud-init.log /var/log/cloud-init-output.log 可以看到執行日誌 # /var/lib/cloud/instance/scripts/part-001 為具體的指令碼 可以sh 執行來排查問題 UserData: Fn::Sub: - | #!/bin/sh # sleep一段時間確保網路就緒 sleep 10 # 以下省略,具體可以看templates/template.yaml # 付費方式:隨用隨付 InstanceChargeType: PostPaid MaxAmount: 1 # 系統硬碟類型:cloud_essd SystemDiskCategory: cloud_essd # 執行個體名稱 InstanceName: Ref: ALIYUN::StackName VpcId: Ref: VpcId SecurityGroupId: Ref: EcsSecurityGroup VSwitchId: Ref: VSwitchId # 指定CentOS 7.9鏡像,如果修改鏡像,UserData指令碼需要進行適配 ImageId: "centos_7_9_x64_20G_alibase_20220727.vhd" InstanceType: Ref: EcsInstanceType # 主機名稱 HostName: Ref: ALIYUN::StackName # Ecs登入密碼 Password: Ref: Password # 是否為執行個體分配公網IP AllocatePublicIP: true InternetMaxBandwidthOut: 1 Slb: Type: ALIYUN::SLB::LoadBalancer Properties: LoadBalancerName: Fn::Join: - '-' - - mysql - Ref: ALIYUN::StackName VpcId: Ref: VpcId VSwitchId: Ref: VSwitchId PayType: PayOnDemand AddressType: intranet LoadBalancerSpec: Ref: SlbInstanceType SupportPrivateLink: true SlbBackendServerAttachment: DependsOn: - EcsInstanceGroup Type: ALIYUN::SLB::BackendServerAttachment Properties: BackendServerList: Fn::GetAtt: - EcsInstanceGroup - InstanceIds LoadBalancerId: Ref: Slb BackendServerWeightList: - 100 - 0 SlbListener: DependsOn: Slb Type: ALIYUN::SLB::Listener Properties: Persistence: CookieTimeout: 60 StickySession: 'on' PersistenceTimeout: 180 XForwardedFor: 'off' StickySessionType: insert ListenerPort: 3306 Bandwidth: -1 HealthCheck: HttpCode: http_2xx,http_3xx,http_4xx,http_5xx HealthCheckType: tcp UnhealthyThreshold: 3 Timeout: 5 HealthyThreshold: 3 Port: 3306 URI: / Interval: 2 LoadBalancerId: Ref: Slb BackendServerPort: 3306 Protocol: tcp VpcEndpointService: DependsOn: Slb Type: ALIYUN::PrivateLink::VpcEndpointService Properties: ServiceDescription: isv service Resource: - ZoneId: Ref: ZoneId ResourceId: Ref: Slb ResourceType: slb AutoAcceptEnabled: trueOutputs定義需要最終在計算巢概覽頁中對使用者展示的輸出。Outputs: EndpointServiceId: Description: en: EndpointService Id zh-cn: 終端節點服務Id Value: Fn::GetAtt: - VpcEndpointService - ServiceId Endpoint: Value: Fn::Join: - '' - - Ref: ALIYUN::StackName - .mysql.com MysqlUserName: Description: en: MySQL User Name zh-cn: MySQL登入使用者名稱 Value: admin