创建云主机最佳实践 操作步骤 本文以南昌5资源池为例,创建1000台按需计费的云主机,其中每批创建50台,并发创建20批次。 1. 计算控制台点击“镜像服务”,在公共镜像Tab选择CentOS Linux 7.6 64位镜像,获取镜像ID。 2. 选择需要开通的云主机规格,本次使用s7.large.2,根据OpenAPI的查询云主机规格资源接口获取该规格对应的flavorID。 3. 网络控制台点击“虚拟私有云”,创建虚拟私有云(VPC),同时在该虚拟私有云(VPC)下创建subnet,保证该subnet可使用的IP数量超过1000个。 4. 在官网帮助中心查找OpenAPI批量创建云主机接口。 5. 批量开通函数封装。 @atomic.actiontimer("openapi.batchcreateinstance") def batchcreateinstance(self, region, az, flavor, image, vpc, subnet, extip, disktype, disksize,ondemand, ordercount, kwargs): """Returns user servers list.""" body self.client.servers.batchcreate(region, az, flavor, image, vpc, subnet, extip, disktype, disksize,ondemand,ordercount, kwargs) order body["returnObj"]["masterOrderID"] res self.queryuuid(order,interval2, timeout600) return res def batchcreate(self, region, az, flavor, image, vpc, subnet, extip, disktype, disksize, ondemand, ordercount, kwargs): name "srally" + self.randomdigits(5) params { "clientToken": str(uuid.uuid4()), "regionID": region, "azName": az, "instanceName": name, "displayName": name, "flavorID": flavor, "imageType": 1, "imageID": image, "bootDiskType": disktype, "bootDiskSize": disksize, "onDemand": ondemand, "orderCount": ordercount, "vpcID": vpc, "extIP": extip, "networkCardList": [ { "subnetID": subnet, "isMaster": True } ], } params.update(kwargs) return self.post("/v4/ecs/batchcreateinstances", paramsparams) 6. 编写yaml执行脚本。 scenario选择上述编写的batchcreateinstance方法; region、az对应南昌5资源池ID和可用区; flavor、image为上述选择的规格和镜像; vpc、subnet是上述创建的虚拟私有云和子网; extip默认为0,不创建弹性IP; disktype选择SATA普通IO,disksize选择40; ondemand选择true,选择创建按需云主机; projectID为相关的企业项目; ordercount选择50,表示单批次批量创建50台云主机; runner中times设置20,代表共批量创建20批次;concurrency设置20,代表并发20。 yaml可执行脚本如图所示。 7. 部署相关脚本到对应的运行机器,执行yaml脚本,开始创建云主机。 rally task start .yaml 8. 当20个订单创建完成后,可在控制台查看“运行中”的云主机数量。对于千台云主机,通常情况下可在十分钟内完成开通。本次批量开通千台云主机耗时138秒,开通成功率100%。