Backend Server
Add a group of backend servers (ECS or ENI instance) to the Server Load Balancer or remove them from it.
NOTE: 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.ecs.EcsFunctions;
import com.pulumi.alicloud.ecs.inputs.GetInstanceTypesArgs;
import com.pulumi.alicloud.ecs.inputs.GetImagesArgs;
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.ecs.SecurityGroup;
import com.pulumi.alicloud.ecs.SecurityGroupArgs;
import com.pulumi.alicloud.ecs.Instance;
import com.pulumi.alicloud.ecs.InstanceArgs;
import com.pulumi.alicloud.slb.ApplicationLoadBalancer;
import com.pulumi.alicloud.slb.ApplicationLoadBalancerArgs;
import com.pulumi.alicloud.slb.BackendServer;
import com.pulumi.alicloud.slb.BackendServerArgs;
import com.pulumi.alicloud.slb.inputs.BackendServerBackendServerArgs;
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 slbBackendServerName = config.get("slbBackendServerName").orElse("slbbackendservertest");
final var backendServerZones = AlicloudFunctions.getZones(GetZonesArgs.builder()
.availableDiskCategory("cloud_efficiency")
.availableResourceCreation("VSwitch")
.build());
final var backendServerInstanceTypes = EcsFunctions.getInstanceTypes(GetInstanceTypesArgs.builder()
.availabilityZone(backendServerZones.applyValue(getZonesResult -> getZonesResult.zones()[0].id()))
.cpuCoreCount(1)
.memorySize(2)
.build());
final var backendServerImages = EcsFunctions.getImages(GetImagesArgs.builder()
.nameRegex("^ubuntu_18.*64")
.mostRecent(true)
.owners("system")
.build());
var backendServerNetwork = new Network("backendServerNetwork", NetworkArgs.builder()
.vpcName(slbBackendServerName)
.cidrBlock("172.16.0.0/16")
.build());
var backendServerSwitch = new Switch("backendServerSwitch", SwitchArgs.builder()
.vpcId(backendServerNetwork.id())
.cidrBlock("172.16.0.0/16")
.zoneId(backendServerZones.applyValue(getZonesResult -> getZonesResult.zones()[0].id()))
.vswitchName(slbBackendServerName)
.build());
var backendServerSecurityGroup = new SecurityGroup("backendServerSecurityGroup", SecurityGroupArgs.builder()
.vpcId(backendServerNetwork.id())
.build());
for (var i = 0; i < "2"; i++) {
new Instance("backendServerInstance-" + i, InstanceArgs.builder()
.imageId(backendServerImages.applyValue(getImagesResult -> getImagesResult.images()[0].id()))
.instanceType(backendServerInstanceTypes.applyValue(getInstanceTypesResult -> getInstanceTypesResult.instanceTypes()[0].id()))
.instanceName(slbBackendServerName)
.securityGroups(backendServerSecurityGroup.stream().map(element -> element.id()).collect(toList()))
.internetChargeType("PayByTraffic")
.internetMaxBandwidthOut("10")
.availabilityZone(backendServerZones.applyValue(getZonesResult -> getZonesResult.zones()[0].id()))
.instanceChargeType("PostPaid")
.systemDiskCategory("cloud_efficiency")
.vswitchId(backendServerSwitch.id())
.build());
}
var backendServerApplicationLoadBalancer = new ApplicationLoadBalancer("backendServerApplicationLoadBalancer", ApplicationLoadBalancerArgs.builder()
.loadBalancerName(slbBackendServerName)
.vswitchId(backendServerSwitch.id())
.instanceChargeType("PayByCLCU")
.build());
var backendServerBackendServer = new BackendServer("backendServerBackendServer", BackendServerArgs.builder()
.loadBalancerId(backendServerApplicationLoadBalancer.id())
.backendServers(
BackendServerBackendServerArgs.builder()
.serverId(backendServerInstance[0].id())
.weight(100)
.build(),
BackendServerBackendServerArgs.builder()
.serverId(backendServerInstance[1].id())
.weight(100)
.build())
.build());
}
}
Content copied to clipboard
Block servers
The servers mapping supports the following:
server_id
- (Required) A list backend server ID (ECS instance ID).weight
- (Optional) Weight of the backend server. Valid value range: 0-100.type
- (Optional) Type of the backend server. Valid valueecs
,eni
,eci
. Default toecs
. NOTE: From 1.170.0+, Theeci
is valid.server_ip
- (Optional, Computed, Available in 1.93.0+) ServerIp of the backend server. This parameter can be specified when the type iseni
.ecs
type currently does not support addingserver_ip
parameter.
Import
Load balancer backend server can be imported using the load balancer id.
$ pulumi import alicloud:slb/backendServer:BackendServer example <load_balancer_id>
Content copied to clipboard