弹性伸缩组管理
初始化客户端
参数获取可参照准备工作中token认证方式。
Copied!
String user = "replace-with-your-username";
String password = "replace-with-your-password";
String projectId = "replace-with-your-projectId";
String userDomainId = "replace-with-your-domainId";
String authUrl = "https://iam.example.com/v3"; // endpointUrl
OSClientV3 osclient = OSFactory.builderV3().endpoint(authUrl)
.credentials(user, password, Identifier.byId(userDomainId))
.scopeToProject(Identifier.byId(projectId)).authenticate();
创建弹性伸缩组
伸缩组内定义了最大实例数、期望实例数、最小实例数、虚拟私有云、子网、负载均衡等信息。
创建所需部分参数
名称 |
类型 |
描述 |
groupName |
string |
伸缩组名称(1-64个字符),只能包含中文、字母、数字、下划线、中划线。 |
vpcId |
string |
VPC信息,通过查询VPC服务VPC列表接口获取,详见《虚拟私有云API参考》的“查询VPC列表”。 |
networks |
Array of Networks objects |
网络信息,最多支持选择5个子网,传入的第一个子网默认作为云服务器的主网卡。使用vpc_id通过查询VPC服务子网列表接口获取, 查询子网列表”。 |
configId |
string |
网络信息,最多支持选择5个子网,传入的第一个子网默认作为云服务器的主网卡。使用vpc_id通过查询VPC服务子网列表接口获取, 查询子网列表”。 |
securityGroups |
Array of SecurityGroups objects |
安全组信息,最多支持选择1个安全组。使用vpc_id通过查询VPC服务安全组列表接口获取,详见《虚拟私有云API参考》的“查询安全组列表”。当伸缩配置和伸缩组同时指定安全组时,将以伸缩配置中的安全组为准;当伸缩配置和伸缩组都没有指定安全组时,将使用默认安全组。为了使用灵活性更高,推荐在伸缩配置中指定安全组。 |
availabilityZones |
Array of string |
可用分区信息。弹性伸缩活动中自动添加的云服务器会被创建在指定的可用区中。如果没有指定可用分区,会由系统自动指定可用分区。详情请参考地区和终端节点。 |
代码展示
Copied!
// Create scalingGroup
public String creatGroup() {
IdResourceEntity network = new IdResourceEntity();
network.setId("******");
IdResourceEntity securityGroup = new IdResourceEntity();
securityGroup.setId("******");
String availabilityZon = "******";
ASAutoScalingGroupCreate group = ASAutoScalingGroupCreate.builder().groupName("test").vpcId("******")
.networks(Lists.newArrayList(network)).configId("******").securityGroups(Lists.newArrayList(securityGroup))
.availabilityZones(com.google.common.collect.Lists.newArrayList(availabilityZon)).build();
String groupId = osclient.autoScaling().groups().create(group);
if (null != groupId) {
System.out.println("create scalingGroup success, id = " + groupId);
return groupId;
} else {
System.out.println("create scalingGroup failed");
return null;
}
}
说明
:
- 1、默认最多可以创建10个伸缩组。
- 2、如果伸缩组配置了负载均衡,在添加或移除实例时,会自动为实例绑定或解绑负载均衡监听器。
- 3、如果伸缩组使用负载均衡健康检查方式,伸缩组中的实例需要启用负载均衡器的监听端口才能通过健康检查。端口启用可在安全组中进行配置,可参考添加安全组规则进行操作。
- 4、更多信息请参考API Explorer。
查询弹性伸缩组详情
根据伸缩组ID查询指定弹性伸缩组详情
Copied!
// Get scalingGroup
public void getGroup(String groupId) {
ScalingGroup group = osclient.autoScaling().groups().get(groupId);
if (null != group) {
System.out.print("get scalingGroup success, id = " + group.toString());
} else {
System.out.println("get scalingGroup failed");
}
}
说明
:更多信息请参考API Explorer。
查询弹性伸缩组列表
根据输入条件过滤查询弹性伸缩组列表。查询结果分页显示。若不加过滤条件默认最多查询租户下20条伸缩组信息。
Copied!
// List all scalingGroups
public void listGroups() {
List< ? extends ScalingGroup> grouplist = osclient.autoScaling().groups().list();
if (null != grouplist) {
System.out.println("List all scalingGroups success, size is = " + grouplist.size());
} else {
System.out.println("get scalingGroups failed");
}
}
说明
:可根据伸缩组名称,伸缩配置ID,伸缩组状态,企业项目ID,起始行号,记录条数进行条件过滤查询。更多信息请参考API Explorer。
修改弹性伸缩组
根据ID修改指定弹性伸缩组中的信息
Copied!
// Update a scalingGroup
public void updateGroup(String groupId) {
ASAutoScalingGroupUpdate update =
ASAutoScalingGroupUpdate.builder().groupName("test1").maxInstanceNumber(10).coolDownTime(800).build();
String group = osclient.autoScaling().groups().update(groupId, update);
if (null != group) {
System.out.println("Update a scalingGroup success, id = " + group);
} else {
System.out.println("Update a scalingGroup failed");
}
}
说明
:
- 1、更换伸缩组的伸缩配置,伸缩组中已经存在的使用之前伸缩配置创建的云服务器不受影响。
- 2、伸缩组为没有正在进行的伸缩活动时,可以修改伸缩组的子网、可用区和负载均衡配置。
- 3、当伸缩组的期望实例数改变时,会触发伸缩活动加入或移出实例。期望实例数必须大于或等于最小实例数,必须小于或等于最大实例数。
- 4、更多信息请参考API Explorer。
启用弹性伸缩组
当需要伸缩组实现自动创建或收缩实例时,您可以启用伸缩组。
Copied!
// Resume a scalingGroup
public void resumeGroup(String groupId) {
ActionResponse resp = osclient.autoScaling().groups().resume(groupId);
if (resp.isSuccess()) {
System.out.println("Resume scalingGroup success");
} else {
System.out.println("Resume scalingGroup failed");
}
}
说明
:更多信息请参考API Explorer。
停用弹性伸缩组
当您需要对伸缩组中的实例进行关机配置或者升级时,为了避免健康检查将该实例删除,您可以先停用伸缩组,然后对实例进行操作,待实例状态恢复为运行中后再启用伸缩组。
Copied!
// Pause a scalingGroup
public void pauseGroup(String groupId) {
ActionResponse resp = osclient.autoScaling().groups().pause(groupId);
if (resp.isSuccess()) {
System.out.println("Pause scalingGroup success");
} else {
System.out.println("Pause scalingGroup failed");
}
}
说明
:已停用状态的伸缩组,不会自动触发任何伸缩活动。当伸缩组正在进行伸缩活动,即使停用,正在进行的伸缩活动也不会立即停止。更多信息请参考API Explorer。
删除弹性伸缩组
当您不再需要某个伸缩组时,可以删除该伸缩组。
Copied!
// Delete a scalingGroup
public void deleteGroup(String groupId) {
ActionResponse resp = osclient.autoScaling().groups().delete(groupId);
if (resp.isSuccess()) {
System.out.println("Delete scalingGroup success");
} else {
System.out.println("Delete scalingGroup failed");
}
}
说明
:
- 1、force_delete属性表示如果伸缩组存在ECS实例或正在进行伸缩活动,是否强制删除伸缩组并移出和释放ECS实例。默认值为no,表示不强制删除伸缩组。
- 2、如果force_delete的值为no,必须满足以下两个条件,才能删除伸缩组:
条件一:伸缩组没有正在进行的伸缩活动。
条件二:伸缩组当前的ECS实例数量(current_instance_number)为0。
- 3、如果force_delete的值为yes,伸缩组会被置于DELETING状态,拒绝接收新的伸缩活动请求,然后等待已有的伸缩活动完成,最后将伸缩组内所有ECS实例移出伸缩组(用户手动添加的ECS实例会被移出伸缩组,弹性伸缩自动创建的ECS实例会被自动删除)并删除伸缩组。
- 4、更多信息请参考API Explorer。
版本说明
本示例基于华为云SDK V1.0版本开发,高版本示例正在开发中。
功能介绍
伸缩组是具有相同属性和应用场景的云服务器和伸缩策略的集合,是启停伸缩策略和进行伸缩活动的基本单位。您可以使用伸缩策略设定的条件自动增加、减少伸缩组中的实例数量,或维持伸缩组中固定的实例数量。本示例将带您了解如何启停一个伸缩组及其他操作。
准备工作
弹性伸缩组管理
初始化客户端
参数获取可参照准备工作中token认证方式。
创建弹性伸缩组
伸缩组内定义了最大实例数、期望实例数、最小实例数、虚拟私有云、子网、负载均衡等信息。
创建所需部分参数
代码展示
说明
:查询弹性伸缩组详情
根据伸缩组ID查询指定弹性伸缩组详情
说明
:更多信息请参考API Explorer。查询弹性伸缩组列表
根据输入条件过滤查询弹性伸缩组列表。查询结果分页显示。若不加过滤条件默认最多查询租户下20条伸缩组信息。
说明
:可根据伸缩组名称,伸缩配置ID,伸缩组状态,企业项目ID,起始行号,记录条数进行条件过滤查询。更多信息请参考API Explorer。修改弹性伸缩组
根据ID修改指定弹性伸缩组中的信息
说明
:启用弹性伸缩组
当需要伸缩组实现自动创建或收缩实例时,您可以启用伸缩组。
说明
:更多信息请参考API Explorer。停用弹性伸缩组
当您需要对伸缩组中的实例进行关机配置或者升级时,为了避免健康检查将该实例删除,您可以先停用伸缩组,然后对实例进行操作,待实例状态恢复为运行中后再启用伸缩组。
说明
:已停用状态的伸缩组,不会自动触发任何伸缩活动。当伸缩组正在进行伸缩活动,即使停用,正在进行的伸缩活动也不会立即停止。更多信息请参考API Explorer。删除弹性伸缩组
当您不再需要某个伸缩组时,可以删除该伸缩组。
说明
:条件一:伸缩组没有正在进行的伸缩活动。
条件二:伸缩组当前的ECS实例数量(current_instance_number)为0。
参考
更多信息请参考弹性伸缩 AS。