使用Alibaba Cloud ESS SDK快速創(chuàng)建多可用區(qū)伸縮組
本文以Java語言和Python語言為例介紹如何使用Alibaba Cloud ESS SDK快速創(chuàng)建多可用區(qū)的伸縮組。
前提條件
使用本教程進(jìn)行操作前,請(qǐng)確保您已經(jīng)注冊(cè)了阿里云賬號(hào)。如還未注冊(cè),請(qǐng)先完成賬號(hào)注冊(cè)。
已配置Alibaba Cloud Credentials。
通過配置環(huán)境變量(
ALIBABA_CLOUD_ACCESS_KEY_ID
和ALIBABA_CLOUD_ACCESS_KEY_SECRET
)的方式配置Alibaba Cloud Credentials工具的身份驗(yàn)證,實(shí)現(xiàn)以非AK硬編碼的方式訪問阿里云OpenAPI。更多信息,請(qǐng)參見默認(rèn)憑據(jù)鏈。
背景信息
創(chuàng)建專有網(wǎng)絡(luò)伸縮組時(shí),您需要配置伸縮組對(duì)應(yīng)的交換機(jī),伸縮組創(chuàng)建完成后,通過該伸縮組彈性擴(kuò)張的ECS實(shí)例也都使用該交換機(jī)。由于原彈性伸縮服務(wù)限定一個(gè)專有網(wǎng)絡(luò)伸縮組只能配置一個(gè)交換機(jī),而一個(gè)交換機(jī)只歸屬于一個(gè)可用區(qū),當(dāng)您配置好伸縮組的交換機(jī)以后,如果交換機(jī)所在的可用區(qū)因庫(kù)存不足等原因不能創(chuàng)建ECS實(shí)例,您伸縮組中的伸縮配置、伸縮規(guī)則以及伸縮組對(duì)應(yīng)的報(bào)警任務(wù)等都將失效。
基于上述問題,您可以通過使用Alibaba Cloud ESS SDK快速創(chuàng)建多可用區(qū)伸縮組(為伸縮組新增多可用區(qū)參數(shù)VSwitchIds.N)來優(yōu)化該問題。創(chuàng)建伸縮組時(shí),您可以使用該參數(shù)為伸縮組配置多個(gè)交換機(jī),當(dāng)一個(gè)交換機(jī)所在可用區(qū)無法創(chuàng)建ECS實(shí)例的時(shí)候,彈性伸縮服務(wù)會(huì)為您自動(dòng)切換到其他交換機(jī)所在的可用區(qū),從而提高伸縮組的可用性。
注意事項(xiàng)
為了提高伸縮組的可用性,創(chuàng)建伸縮組時(shí),您可以新增多可用區(qū)參數(shù)(VSwitchIds.N)為伸縮組配置多個(gè)交換機(jī),使用該參數(shù)時(shí)需要注意以下幾點(diǎn):
使用VSwitchIds.N多可用區(qū)參數(shù)時(shí),VSwitchId參數(shù)將被忽略。
VSwitchIds.N可用區(qū)參數(shù)中,N代表交換機(jī)的優(yōu)先級(jí)(N的取值范圍:1~5),編號(hào)為1的交換機(jī)為創(chuàng)建實(shí)例的第一選擇,交換機(jī)優(yōu)先級(jí)隨編號(hào)的增大依次降低。
當(dāng)優(yōu)先級(jí)較高的交換機(jī)所在可用區(qū)無法創(chuàng)建實(shí)例時(shí),會(huì)自動(dòng)選擇下一優(yōu)先級(jí)的交換機(jī)來創(chuàng)建實(shí)例。在使用多可用區(qū)參數(shù)時(shí),建議設(shè)置同一地域下不同可用區(qū)的交換機(jī),降低因單可用區(qū)庫(kù)存不足無法創(chuàng)建ECS實(shí)例的概率。
VSwitchIds.N可用區(qū)參數(shù)中,指定的多個(gè)交換機(jī)必須在同一個(gè)專有網(wǎng)絡(luò)下。
使用Alibaba Cloud ESS SDK for Java創(chuàng)建多可用區(qū)伸縮組
導(dǎo)入Alibaba Cloud ESS SDK for Java。
使用Maven來管理您Java項(xiàng)目的依賴庫(kù),在項(xiàng)目對(duì)應(yīng)的
pom.xml
文件中加入下面依賴:<dependency> <groupId>com.aliyun</groupId> <artifactId>tea-openapi</artifactId> <version>0.2.8</version> </dependency> <dependency> <groupId>com.aliyun</groupId> <artifactId>ess20220222</artifactId> <version>1.0.5</version> </dependency> <dependency> <groupId>com.aliyun</groupId> <artifactId>credentials-java</artifactId> <version>0.2.11</version> </dependency>
使用Java SDK創(chuàng)建多可用區(qū)伸縮組。
將Alibaba Cloud ESS SDK for Java導(dǎo)入到Java工程后,您即可以通過SDK編碼創(chuàng)建多可用區(qū)伸縮組,示例代碼如下:
import com.aliyun.teaopenapi.models.Config; import java.util.Arrays; import java.util.List; public class EssSdkDemo { public static final String REGION_ID = "cn-hangzhou"; public static final Integer MAX_SIZE = 10; public static final Integer MIN_SIZE = 1; public static final String SCALING_GROUP_NAME = "TestScalingGroup"; //交換機(jī)列表,交換機(jī)優(yōu)先級(jí)從前往后依次降低,第一位的交換機(jī)優(yōu)先級(jí)最高。 public static final String[] vswitchIdArray = { "vsw-id1", "vsw-id2" }; public static final List<String> vswitchIds = Arrays.asList(vswitchIdArray); public static void main(String[] args) throws Exception { com.aliyun.credentials.Client credentialClient = new com.aliyun.credentials.Client(); com.aliyun.teaopenapi.models.Config config = new Config(); config.setCredential(credentialClient); config.setEndpoint("ess.aliyuncs.com"); com.aliyun.ess20220222.Client client = new com.aliyun.ess20220222.Client(config); createScalingGroup(client); } public static String createScalingGroup(com.aliyun.ess20220222.Client client) throws Exception { com.aliyun.ess20220222.models.CreateScalingGroupRequest request = new com.aliyun.ess20220222.models.CreateScalingGroupRequest(); request.setRegionId(REGION_ID); request.setMaxSize(MAX_SIZE); request.setMinSize(MIN_SIZE); request.setScalingGroupName(SCALING_GROUP_NAME); request.setVSwitchIds(vswitchIds); com.aliyun.teautil.models.RuntimeOptions runtime = new com.aliyun.teautil.models.RuntimeOptions(); com.aliyun.ess20220222.models.CreateScalingGroupResponse scalingGroupWithOptions = client.createScalingGroupWithOptions(request, runtime); return scalingGroupWithOptions.getBody().toMap().toString(); } }
上述代碼中,vSwitch的優(yōu)先級(jí)隨其在列表中出現(xiàn)的順序依次降低,排在列表最前面的vSwitch優(yōu)先級(jí)最高。
使用Alibaba Cloud ESS SDK for Python創(chuàng)建多可用區(qū)伸縮組
安裝Alibaba Cloud ESS SDK for Python。
執(zhí)行以下命令,安裝以下兩個(gè)依賴。
pip install alibabacloud_ess20220222==1.7.4
使用Python SDK創(chuàng)建多可用區(qū)伸縮組。
導(dǎo)入Alibaba Cloud ESS SDK for Python依賴庫(kù)后,您即可通過SDK編碼創(chuàng)建多可用區(qū)伸縮組,示例代碼如下:
# -*- coding: utf-8 -*- import os import sys from typing import List from alibabacloud_ess20220222.client import Client as Ess20220222Client from alibabacloud_tea_openapi import models as open_api_models from alibabacloud_ess20220222 import models as ess_20220222_models from alibabacloud_tea_util import models as util_models from alibabacloud_tea_util.client import Client as UtilClient class Sample: def __init__(self): pass @staticmethod def create_client() -> Ess20220222Client: """ 使用AK&SK初始化賬號(hào)Client @return: Client @throws Exception """ # 工程代碼泄露可能會(huì)導(dǎo)致 AccessKey 泄露,并威脅賬號(hào)下所有資源的安全性。以下代碼示例僅供參考。 config = open_api_models.Config( # 必填,請(qǐng)確保代碼運(yùn)行環(huán)境設(shè)置了環(huán)境變量 ALIBABA_CLOUD_ACCESS_KEY_ID。, access_key_id=os.environ['ALIBABA_CLOUD_ACCESS_KEY_ID'], # 必填,請(qǐng)確保代碼運(yùn)行環(huán)境設(shè)置了環(huán)境變量 ALIBABA_CLOUD_ACCESS_KEY_SECRET。, access_key_secret=os.environ['ALIBABA_CLOUD_ACCESS_KEY_SECRET'] ) config.endpoint = f'ess.aliyuncs.com' return Ess20220222Client(config) @staticmethod def main( args: List[str], ) -> None: client = Sample.create_client() create_scaling_group_request = ess_20220222_models.CreateScalingGroupRequest( region_id='cn-hangzhou', scaling_group_name='py-sdk-create-scaling-group-sample', min_size=1, max_size=1, v_switch_ids=[ 'vsw-bp******g', 'vsw-bp******y' ] ) runtime = util_models.RuntimeOptions() try: # 復(fù)制代碼運(yùn)行請(qǐng)自行打印 API 的返回值 client.create_scaling_group_with_options(create_scaling_group_request, runtime) except Exception as error: # 此處僅做打印展示,請(qǐng)謹(jǐn)慎對(duì)待異常處理,在工程項(xiàng)目中切勿直接忽略異常。 # 錯(cuò)誤 message print(error.message) # 診斷地址 print(error.data.get("Recommend")) UtilClient.assert_as_string(error.message) if __name__ == '__main__': Sample.main(sys.argv[1:])
上述代碼中,以Python 3.9版本為例,其中,vSwitch的優(yōu)先級(jí)隨其在列表中出現(xiàn)的順序依次降低,排在列表最前面的vSwitch優(yōu)先級(jí)最高。