ScalingGroupVServerGroups

Attaches/Detaches vserver groups to a specified scaling group.

NOTE: The load balancer of which vserver groups belongs to must be in active status. NOTE: If scaling group's network type is VPC, the vserver groups must be in the same VPC. NOTE: A scaling group can have at most 5 vserver groups attached by default. NOTE: Vserver groups and the default group of loadbalancer share the same backend server quota. NOTE: When attach vserver groups to scaling group, existing ECS instances will be added to vserver groups; Instead, ECS instances will be removed from vserver group when detach. NOTE: Detach action will be executed before attach action. NOTE: Vserver group is defined uniquely by loadbalancer_id, vserver_group_id, port. NOTE: Modifing weight attribute means detach vserver group first and then, attach with new weight parameter. NOTE: Resource alicloud.ess.ScalingGroupVServerGroups is available in 1.53.0+.

Example Usage

package generated_program;
import com.pulumi.Context;
import com.pulumi.Pulumi;
import com.pulumi.core.Output;
import com.pulumi.alicloud.AlicloudFunctions;
import com.pulumi.alicloud.inputs.GetZonesArgs;
import com.pulumi.alicloud.vpc.Network;
import com.pulumi.alicloud.vpc.NetworkArgs;
import com.pulumi.alicloud.vpc.Switch;
import com.pulumi.alicloud.vpc.SwitchArgs;
import com.pulumi.alicloud.slb.ApplicationLoadBalancer;
import com.pulumi.alicloud.slb.ApplicationLoadBalancerArgs;
import com.pulumi.alicloud.slb.ServerGroup;
import com.pulumi.alicloud.slb.ServerGroupArgs;
import com.pulumi.alicloud.slb.Listener;
import com.pulumi.alicloud.slb.ListenerArgs;
import com.pulumi.alicloud.ess.ScalingGroup;
import com.pulumi.alicloud.ess.ScalingGroupArgs;
import com.pulumi.alicloud.ess.ScalingGroupVServerGroups;
import com.pulumi.alicloud.ess.ScalingGroupVServerGroupsArgs;
import com.pulumi.alicloud.ess.inputs.ScalingGroupVServerGroupsVserverGroupArgs;
import com.pulumi.codegen.internal.KeyedValue;
import java.util.List;
import java.util.ArrayList;
import java.util.Map;
import java.io.File;
import java.nio.file.Files;
import java.nio.file.Paths;
public class App {
public static void main(String[] args) {
Pulumi.run(App::stack);
}
public static void stack(Context ctx) {
final var config = ctx.config();
final var name = config.get("name").orElse("testAccEssVserverGroupsAttachment");
final var defaultZones = AlicloudFunctions.getZones(GetZonesArgs.builder()
.availableDiskCategory("cloud_efficiency")
.availableResourceCreation("VSwitch")
.build());
var defaultNetwork = new Network("defaultNetwork", NetworkArgs.builder()
.cidrBlock("172.16.0.0/16")
.build());
var defaultSwitch = new Switch("defaultSwitch", SwitchArgs.builder()
.vpcId(defaultNetwork.id())
.cidrBlock("172.16.0.0/24")
.zoneId(defaultZones.applyValue(getZonesResult -> getZonesResult.zones()[0].id()))
.build());
var defaultApplicationLoadBalancer = new ApplicationLoadBalancer("defaultApplicationLoadBalancer", ApplicationLoadBalancerArgs.builder()
.loadBalancerName(name)
.vswitchId(defaultSwitch.id())
.build());
var defaultServerGroup = new ServerGroup("defaultServerGroup", ServerGroupArgs.builder()
.loadBalancerId(defaultApplicationLoadBalancer.id())
.build());
for (var i = 0; i < 2; i++) {
new Listener("defaultListener-" + i, ListenerArgs.builder()
.loadBalancerId(defaultApplicationLoadBalancer.stream().map(element -> element.id()).collect(toList())[range.value()])
.backendPort("22")
.frontendPort("22")
.protocol("tcp")
.bandwidth("10")
.healthCheckType("tcp")
.build());
}
var defaultScalingGroup = new ScalingGroup("defaultScalingGroup", ScalingGroupArgs.builder()
.minSize("2")
.maxSize("2")
.scalingGroupName(name)
.vswitchIds(defaultSwitch.id())
.build());
var defaultScalingGroupVServerGroups = new ScalingGroupVServerGroups("defaultScalingGroupVServerGroups", ScalingGroupVServerGroupsArgs.builder()
.scalingGroupId(defaultScalingGroup.id())
.vserverGroups(ScalingGroupVServerGroupsVserverGroupArgs.builder()
.loadbalancerId(defaultApplicationLoadBalancer.id())
.vserverAttributes(ScalingGroupVServerGroupsVserverGroupVserverAttributeArgs.builder()
.vserverGroupId(defaultServerGroup.id())
.port("100")
.weight("60")
.build())
.build())
.build());
}
}

Block vserver_group

the vserver_group supports the following:

  • loadbalancer_id - (Required) Loadbalancer server ID of VServer Group.

  • vserver_attributes - (Required) A list of VServer Group attributes. See Block vserver_attribute below for details.

Block vserver_attribute

  • vserver_group_id - (Required) ID of VServer Group.

  • port - (Required) - The port will be used for VServer Group backend server.

  • weight - (Required) The weight of an ECS instance attached to the VServer Group.

Import

ESS vserver groups can be imported using the id, e.g.

$ pulumi import alicloud:ess/scalingGroupVServerGroups:ScalingGroupVServerGroups example abc123456

Properties

Link copied to clipboard
val force: Output<Boolean>?

If instances of scaling group are attached/removed from slb backend server when attach/detach vserver group from scaling group. Default to true.

Link copied to clipboard
val id: Output<String>
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
val scalingGroupId: Output<String>

ID of the scaling group.

Link copied to clipboard
val urn: Output<String>
Link copied to clipboard

A list of vserver groups attached on scaling group. See Block vserver_group below for details.