本文介紹基于單ECS架構版MySQL軟件包快速構建包含VPC對等連接功能的單租版全托管計算巢服務實例的詳細信息。
服務說明
本示例采用單ECS的架構,并默認開啟了VPC對等連接功能,用戶在完成服務實例部署后,可以直接通過內網訪問部署在服務商側的MySQL。本示例對應的Git倉庫地址為:mysql-managed-vpcpeering-demo。
本示例會自動構建計算巢服務,創建過程大約持續3分鐘,當服務狀態變成待提交,即表示服務構建成功。具體的服務構建流程如下。
將MySQL安裝包(提前存放到該GitHub repo中)構建為計算巢文件部署物。
創建計算巢服務并關聯相應的文件部署物。
本示例的服務為您提供了如下三種套餐。
套餐名 | ECS規格族 | vCPU與內存 | 系統盤 | 公網帶寬 |
低配版 | ecs.c6.large | 內存型c6,2vCPU 4 GiB | ESSD云盤 200 GiB PL0 | 固定帶寬 1 Mbps |
基礎版 | ecs.c6.xlarge | 內存型c6,4vCPU 8 GiB | ESSD云盤 200 GiB PL0 | 固定帶寬 1 Mbps |
高配版 | ecs.c6.2xlarge | 內存型c6,4vCPU 8 GiB | ESSD云盤 200 GiB PL0 | 固定帶寬 1 Mbps |
部署架構
本實例僅部署一臺ECS,安全組開放3306端口,每個服務實例將新建VPC與vSwitch。
服務構建計費說明
測試本服務構建無需任何費用,創建服務實例涉及的費用請參考服務實例計費說明。
RAM賬號所需權限
本服務需要對ECS、VPC等資源進行訪問和創建操作,若您使用RAM用戶創建服務實例,需要在創建服務實例前,對使用的RAM用戶的賬號添加相應資源的權限。添加RAM權限的詳細操作,請參見為RAM用戶授權。
所需權限如下表所示。
權限策略名稱 | 備注 |
AliyunECSFullAccess | 管理云服務器服務(ECS)的權限 |
AliyunVPCFullAccess | 管理專有網絡(VPC)的權限 |
AliyunROSFullAccess | 管理資源編排服務(ROS)的權限 |
AliyunComputeNestUserFullAccess | 管理計算巢服務(ComputeNest)的用戶側權限 |
AliyunComputeNestSupplierFullAccess | 管理計算巢服務(ComputeNest)的服務商側權限 |
AliyunCDTFullAccess | 管理云數據傳輸(CDT)的權限 |
服務實例計費說明
本示例服務在計算巢上主要涉及如下費用:
所選vCPU與內存規格
系統盤類型及容量
公網帶寬
本示例計費方式包括:
按量付費(小時)
包年包月
服務實例的預估費用在創建實例時可實時看到。
部署流程
部署參數說明
參數族 | 參數項 | 說明 |
基礎配置 | 數據庫root和admin賬戶密碼 | 數據庫root和admin賬戶密碼,長度8-32個字符,可包含大小寫字母、數字及特殊符號(包含:!@#$%^&*-+=_)。 |
網絡配置 | 可用區 | 選擇可用區,資源將在服務商的該可用區創建。 |
網絡設置 | 專有網絡IPv4網段 | 填寫專有網絡IPv4網段,建議您使用RFC私網地址作為專有網絡的網段,如10.0.0.0/8,172.16.0.0/12,192.168.0.0/16。 |
網絡設置 | 交換機子網網段 | 填寫交換機子網網段。 |
部署步驟
單擊服務商提供的服務實例部署鏈接,在服務實例部署界面,根據界面提示,填寫參數完成部署。
網絡配置部分填入新建VPC的IPV4網段與交換機子網網段。 如果需要創建對等連接,這里還需要填寫網絡配置,網絡設置部分填寫對等連接的用戶側VPC。 需要注意VPC的網段不可以與新建VPC網段重疊。
參數填寫完成后可進入訂單確認頁。
確認訂單完成后同意服務協議并點擊立即創建,進入部署階段。
等待部署完成后就可以開始使用服務。
網絡配置已有對等連接內容(用戶在創建服務實例頁選擇開啟VPC對等連接才會顯示)。
使用服務,本服務支持VPC對等連接,租戶可以通過VPC對等連接實現私網訪問,租戶私網訪問流程如下。
在服務實例詳情的立即使用處VisitUrl后的私網IP地址,可以實現私網訪問。
在對應的vsw中創建ECS,創建好后安裝MySQL客戶端。
yum install mysql or apt install mysql-client
在該ECS中連接MySQL,用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
定義需要用戶填寫的參數,包括付費類型,實例規格,Ipv4網段,交換機子網網段和實例密碼可用區參數。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 # 新建Ipv4網段 VpcCidrBlock: Type: String Label: en: VPC CIDR IPv4 Block zh-cn: 專有網絡IPv4網段 Description: zh-cn: VPC的ip地址段范圍,<br>您可以使用以下的ip地址段或其子網:<br><font color='green'>[10.0.0.0/8]</font><br><font color='green'>[172.16.0.0/12]</font><br><font color='green'>[192.168.0.0/16]</font> en: 'The ip address range of the VPC in the CidrBlock form; <br>You can use the following ip address ranges and their subnets: <br><font color=''green''>[10.0.0.0/8]</font><br><font color=''green''>[172.16.0.0/12]</font><br><font color=''green''>[192.168.0.0/16]</font>' AssociationProperty: ALIYUN::VPC::VPC::CidrBlock Default: 192.168.0.0/16 # 新建交換機網段 VSwitchCidrBlock: Type: String Label: en: VSwitch CIDR Block zh-cn: 交換機子網網段 Description: zh-cn: 必須屬于VPC的子網段。 en: Must belong to the subnet segment of VPC. AssociationProperty: ALIYUN::VPC::VSwitch::CidrBlock AssociationPropertyMetadata: VpcCidrBlock: VpcCidrBlock Default: 192.168.1.0/24 # 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
Resources
定義需要開的資源,包括新開的VPC、vSwitch、ECS、SLB實例。# Vpc EcsVpc: Type: ALIYUN::ECS::VPC Properties: CidrBlock: Ref: VpcCidrBlock VpcName: Ref: ALIYUN::StackName # 交換機 EcsVSwitch: Type: ALIYUN::ECS::VSwitch Properties: ZoneId: Ref: ZoneId VpcId: Ref: EcsVpc CidrBlock: Ref: VSwitchCidrBlock 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
Outputs
定義需要最終在計算巢概覽頁中對用戶展示的輸出。Outputs: MysqlUserName: Label: MySQL登錄用戶名 Value: admin VisitUrl: Label: 私網訪問地址 Description: zh-cn: 私網訪問地址 en: private Addresses Value: Fn::Sub: - mysql://${ServerAddress}:3306 - ServerAddress: Fn::Select: - 0 - Fn::GetAtt: - EcsInstanceGroup - PrivateIps