摘要: ESS 伸缩配置定义了用于弹性伸缩的 ECS 实例的配置信息,包含了实例规格、网络、安全组、带宽等配置信息,您可灵活地搭配这些配置信息来为您的伸缩组创建伸缩配置。

本文将详细介绍 ESS 多实例规格的伸缩配置,并给出多实例规格伸缩配置相比单实例规格伸缩配置的优势所在,最后,本文将给出使用 ESS SDK 快速创建多实例规格伸缩配置的最佳实践。

ESS 伸缩配置多实例规格参数
原 ESS 弹性伸缩服务限定,一个伸缩组内只能有一个生效的伸缩配置,一个伸缩配置只能配置一种实例规格。由于上述的限制,导致伸缩组内有效的实例规格只有一个,如果当前的实例规格由于库存不足等变得不可用,那么伸缩组将无法创建出 ECS 实例。您需要重新选择当前伸缩组内其它伸缩配置或创建新的伸缩配置来恢复伸缩组,使伸缩组能够正常工作。为了优化上述问题,提高伸缩组内伸缩配置的可用性,ESS 弹性伸缩服务为伸缩配置新增了多实例规格参数(InstanceTypes.N)。您在创建伸缩配置的时候可以使用该参数为您的伸缩配置设置多个实例规格,当某个实例规格由于库存等原因变得不可用时,ESS 弹性伸缩服务会为您自动切换到其它有效的实例规格来创建实例。当您创建的伸缩配置使用了多实例规格参数时,您需要注意以下几点:

如果使用了 InstanceTypes.N 多实例规格参数,InstanceType 参数将被忽略。
InstanceTypes.N 参数中,N 的取值范围为 [1, 10],即一个伸缩配置内最多可以设置 10 种实例规格。
当您的伸缩组是经典网络伸缩组时,伸缩组所属 Region 必须支持您所配置的所有实例规格的经典网络实例的售卖,如果当前 Region 不支持您所配置的实例规格,伸缩组将无法为您创建出 ECS 实例。您可以通过 查询可用区列表 接口查询当前 Region 支持的实例规格,以及每种规格支持的网络类型。
当您的伸缩组是专有网络(VPC)伸缩组时,伸缩组配置的虚拟交换机对应的可用区内必须支持您所配置的所有实例规格的专有网络实例的售卖,每个伸缩组可以配置多个虚拟交换机,您可以通过 使用 ESS SDK 快速创建多可用区伸缩组 了解更多。
InstanceTypes.N 参数中 N 代表当前伸缩配置中实例规格的优先级,编号为 1 的实例规格优先级最高,实例规格优先级随着编号的增大依次降低。
如果当前伸缩配置中优先级较高的实例规格由于库存等原因无法创建出 ECS 实例时,ESS 会自动选择下一优先级的实例规格来为您创建实例。
当您在使用多实例规格参数来创建伸缩配置时,实例规格不可重复,否则伸缩配置将无法创建。
使用 SDK 创建多可用区伸缩组
本章将介绍如何使用 SDK 创建多实例规格的伸缩配置,这里以 Java 语言和 Python 语言为例进行介绍。

Java
导入 ESS Java SDK
首先,您需要下载 aliyun-java-sdk-core、aliyun-java-sdk-ess 两个依赖,您可以查看 maven-central 界面,搜索并下载相应的 jar 包,aliyun-java-sdk-ess 对应的 jar 包的版本号需要是 2.1.3 及以上版本才能使用多实例规格参数,aliyun-java-sdk-core 推荐使用最新的版本。

您可以选择使用 maven 来管理您 Java 项目的依赖库,在您的项目对应的 pom.xml 文件中加入下面的依赖项即可:

<dependency><groupId>com.aliyun</groupId><artifactId>aliyun-java-sdk-ess</artifactId><version>2.1.3</version>
</dependency>
<dependency><groupId>com.aliyun</groupId><artifactId>aliyun-java-sdk-core</artifactId><version>3.5.0</version>
</dependency>

使用 Java SDK 创建多实例规格伸缩配置
导入 ESS Java SDK 到您的 Java 工程以后,您就可以创建多实例规格伸缩配置了。使用 Java SDK 创建多实例规格伸缩配置的代码如下:

public class EssSdkDemo {public static final String       REGION_ID         = "cn-hangzhou";public static final String       AK                = "xxxxxxxxxxxxxx";public static final String       AKS               = "xxxxxxxxxxxxxx";/*** 排在最前面的实例规格优先级最高,实例规格优先级随着在数组中出现的次序依次递减*/public static final String[]     TYPE_ARRAY        = { "instancetype1", "instancetype2" };public static final List<String> INSTANCE_TYPES    = Arrays.asList(TYPE_ARRAY);public static final String       SCALING_GROUP_ID  = "xxxxxxxxxxxxxx";//ubuntu_16_0402_64_20G_alibase_20170818.vhdpublic static final String       IMAGE_ID          = "xxxxxxxxxxxxxx";public static final String       SECURITY_GROUP_ID = "xxxxxxxxxxxxxx";public static void main(String[] args) throws Exception {IClientProfile clientProfile = DefaultProfile.getProfile(REGION_ID, AK, AKS);IAcsClient client = new DefaultAcsClient(clientProfile);System.out.println(createScalingConf(client));}/*** 创建多实例规格伸缩配置** @param client* @return* @throws Exception*/public static String createScalingConf(IAcsClient client) throws Exception {CreateScalingConfigurationRequest request = new CreateScalingConfigurationRequest();request.setScalingGroupId(SCALING_GROUP_ID);request.setImageId(IMAGE_ID);request.setInstanceTypes(INSTANCE_TYPES);request.setSecurityGroupId(SECURITY_GROUP_ID);CreateScalingConfigurationResponse response = client.getAcsResponse(request);return response.getScalingConfigurationId();}
}

注意:AK,SCALING_GROUP_ID,SECURITY_GROUP_ID 等参数需要您根据个人情况进行设置。

Python
安装 ESS Python SDK
同 Java 语言一样,在使用 ESS Python SDK 前,您需要先下载 aliyun-python-sdk-ess、aliyun-python-sdk-core 两个依赖。本文推荐使用 pip 的方式来安装 Python 依赖包,关于 pip 的安装您可以参数 Installation-Pip。 安装好 pip 以后,您可以使用命令 pip install aliyun-java-sdk-ess==2.1.3 pip install aliyun-java-sdk-core==3.5.0 安装两个所需的依赖。

使用 Python SDK 创建多实例规格伸缩配置
导入 ESS Python SDK 依赖库以后,您就可以创建多实例规格伸缩配置了。使用 Python SDK 创建多实例规格伸缩配置的代码如下:

#coding=utf-8
import json
import loggingfrom aliyunsdkcore import client
from aliyunsdkess.request.v20140828.CreateScalingConfigurationRequest import CreateScalingConfigurationRequestlogging.basicConfig(level=logging.INFO,format='%(asctime)s %(filename)s[line:%(lineno)d] %(levelname)s %(message)s',datefmt='%a, %d %b %Y %H:%M:%S')
# 请替换自己的ak信息
ak = 'ak'
aks = 'aks'scaling_group_id = 'xxxxxxxxxxxxxxx'
image_id = 'xxxxxxxxxxxxxxx'
security_group_id = 'xxxxxxxxxxxxxxx'
instance_types = ['instancetype1', 'instancetype2']region_id = 'cn-beijing'clt = client.AcsClient(ak, aks, region_id)
def _create_scaling_conf():
request = CreateScalingConfigurationRequest()
request.set_ScalingGroupId(scaling_group_id)
request.set_ImageId(image_id)
request.set_SecurityGroupId(security_group_id)
request.set_InstanceTypes(instance_types)
response = _send_request(request)
return response.get('ScalingConfigurationId')
def _send_request(request):
request.set_accept_format('json')
try:response_str = clt.do_action(request)logging.info(response_str)response_detail = json.loads(response_str)return response_detail
except Exception as e:logging.error(e)
if __name__ == '__main__':
scaling_group_id = _create_scaling_conf()
print '创建伸缩配置成功,伸缩组ID:' + str(scaling_group_id)

注意:ak,scaling_group_id,security_group_id 等参数需要您根据个人情况进行设置。

在使用 SDK 创建伸缩配置的时候,您可以参考 创建伸缩配置接口 来了解每个参数的意义。建议多实例规格伸缩配置和多可用区伸缩组结合使用,这样可以在最大程度上提高您的伸缩组的可用性。关于多可用区伸缩组的创建方法,您可以参考 使用 ESS SDK 快速创建多可用区伸缩组 。

写在最后
ESS 伸缩配置多实例规格参数目前可通过 OpenApi 的方式来使用,弹性伸缩服务控制台近期也会支持多实例规格伸缩配置功能。

使用 ESS SDK 快速创建多实例规格伸缩配置相关推荐

  1. ESS控制台发布新功能:创建多实例规格的伸缩配置

    摘要: 背景 原弹性伸缩ESS服务限定,生效的伸缩配置中只能对应一种实例规格,这样就会存在如果生效的配置中的实例规格的库存不足(高配实例规格通常更容易出现库存不足的情况)时, 用户配置好的伸缩规则以及 ...

  2. 快速创建 IEqualityComparer 实例:改进

    两年前,我写了篇文章<快速创建 IEqualityComparer<T> 和 IComparer<T> 的实例>,文中给出了一个用于快速创建 IEqualityCo ...

  3. Vscode使用用户代码片段快速创建Vue实例

    如图所见,只需要敲出vue三个单词即可完美创建Vue实例 ,非常快捷方便,如何完美实现呢?教程如下

  4. 手把手教你快速创建一个超高性价比弹性云服务器

    近些年来,我们能明显的感受到物价.尤其是房价上涨的迹象.本来就不容易鼓起来的钱袋子,在高昂的房价压力下显得更加瘪了.但你听过网络的"房屋空间"吗?即云服务器,近些年却在不断降低成本 ...

  5. 快速创建 IEqualityComparerT 和 IComparerT 的实例

    几篇相关文章:<Linq的Distinct太不给力了>.<c# 扩展方法奇思妙用基础篇八:Distinct 扩展>.<何止 Linq 的 Distinct 不给力> ...

  6. java list初始容量_java中快速创建带初始值的List和Map实例

    java中快速创建带初始值的List和Map实例 初始化一个List和Map对象并为期加入值的写法如下: List sList = new ArrayList(); sList.add("s ...

  7. 一分钟在云端快速创建MySQL数据库实例

    本教程将帮助您了解如何使用Azure管理门户迅速创建,连接,配置MySQL 数据库 on Azure.完成本教程后,您将在Azure上拥有一个示例MySQL数据库服务器,并了解如何使用管理门户执行基本 ...

  8. 【前端实例代码】如何使用 HTML 和 CSS 快速创建一个响应式导航栏

    效果图: 大屏: 小屏: bilibili在线视频演示地址: [前端实例代码]如何使用 HTML 和 CSS 快速创建一个响应式导航栏nav_哔哩哔哩_bilibili完整代码在这里:https:// ...

  9. 如何使用Foxit Mobile SDK 6.0 快速创建一个PDF阅读器-Android篇

    Foxit MobilePDF SDK是一款用于移动平台的快速开发包,专注于帮助开发人员将强大的Foxit PDF技术轻松地集成到他们的应用程序中.不知不觉,产品的版本已经到了6.0,近期刚刚发布,6 ...

最新文章

  1. Codeforces 494D Upgrading Array
  2. 前端每日实战:100# 视频演示如何用纯 CSS 创作闪闪发光的霓虹灯文字
  3. [libGDX游戏开发教程]使用libGDX进行游戏开发(12)-Action动画
  4. MemDC,GDI绘制注意点
  5. thinkphp3.2.3在nginx环境下“__PUBLIC__“路径错误、URL跳转路径错误解决方案
  6. 字扩展,位扩展,和字位扩展_6个有用的LibreOffice扩展
  7. webapp开发时问题的总结1
  8. linux shell学习-1
  9. 在计算机系统软件中核心软件,在计算机系统软件中的核心软件是()
  10. (1)numpy.power
  11. java王者荣耀英雄代码_王者荣耀英雄代码大全
  12. OJ在线编程常见输入输出JavaScript练习
  13. FileZilla客户端使用遇到的问题
  14. Windows 7 SP1 多国语言包(MUI language packs)官方下载
  15. 大数据相关面试题整理-带答案
  16. 计算机主机的拆卸步骤,电脑主板怎么拆CPU 主板拆CPU步骤图文教程
  17. sed命令详解及运用
  18. 基于SpringBoot+MyBatis实现的私人影院系统
  19. ctf pwn 萌新学习记录 基本rop(题目来自Wiki)
  20. 学习C语言类似百词斩的软件,十款很不错的英语学习软件大推荐

热门文章

  1. python 支付宝个人账单_金融支付财务融合业务-实践分享1:订单、账单、交易流水、账套知识解构、原理解析...
  2. 【LeetCode笔记】98. 验证二叉搜索树(Java、dfs、中序遍历、二叉树)
  3. python中setup函数的用法_python学习之setUp函数和tearDown函数
  4. 利用计算机录音模拟声波,2016年计算机一级考试题库及答案
  5. 下面哪个字段是http请求中必须具备的_HTTP 协议报文结构及示例
  6. mysql mode_MYSQL中的sql_mode模式
  7. oracle 时间集合,oracle 日期函数集合(集中版本)第2/2页
  8. ftp服务器文件名存在,有什么办法根据已知文件名来检测FTP服务器上是否存在该文件? 急...
  9. 谱聚类(spectral clustering)原理总结
  10. 第29届IEEE IV 征稿启示