Show / Hide Table of Contents

Namespace Pulumi.AliCloud.Slb

Classes

Acl

AclArgs

AclState

Attachment

AttachmentArgs

AttachmentState

BackendServer

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

using System.Collections.Generic;
using System.Linq;
using Pulumi;
using AliCloud = Pulumi.AliCloud;

class MyStack : Stack
{
public MyStack()
{
    var config = new Config();
    var name = config.Get("name") ?? "slbbackendservertest";
    var defaultZones = Output.Create(AliCloud.GetZones.InvokeAsync(new AliCloud.GetZonesArgs
    {
        AvailableDiskCategory = "cloud_efficiency",
        AvailableResourceCreation = "VSwitch",
    }));
    var defaultInstanceTypes = defaultZones.Apply(defaultZones => Output.Create(AliCloud.Ecs.GetInstanceTypes.InvokeAsync(new AliCloud.Ecs.GetInstanceTypesArgs
    {
        AvailabilityZone = defaultZones.Zones[0].Id,
        CpuCoreCount = 1,
        MemorySize = 2,
    })));
    var defaultImages = Output.Create(AliCloud.Ecs.GetImages.InvokeAsync(new AliCloud.Ecs.GetImagesArgs
    {
        MostRecent = true,
        NameRegex = "^ubuntu_18.*64",
        Owners = "system",
    }));
    var defaultNetwork = new AliCloud.Vpc.Network("defaultNetwork", new AliCloud.Vpc.NetworkArgs
    {
        CidrBlock = "172.16.0.0/16",
    });
    var defaultSwitch = new AliCloud.Vpc.Switch("defaultSwitch", new AliCloud.Vpc.SwitchArgs
    {
        AvailabilityZone = defaultZones.Apply(defaultZones => defaultZones.Zones[0].Id),
        CidrBlock = "172.16.0.0/16",
        VpcId = defaultNetwork.Id,
    });
    var defaultSecurityGroup = new AliCloud.Ecs.SecurityGroup("defaultSecurityGroup", new AliCloud.Ecs.SecurityGroupArgs
    {
        VpcId = defaultNetwork.Id,
    });
    var defaultInstance = new List<AliCloud.Ecs.Instance>();
    for (var rangeIndex = 0; rangeIndex < 2; rangeIndex++)
    {
        var range = new { Value = rangeIndex };
        defaultInstance.Add(new AliCloud.Ecs.Instance($"defaultInstance-{range.Value}", new AliCloud.Ecs.InstanceArgs
        {
            AvailabilityZone = defaultZones.Apply(defaultZones => defaultZones.Zones[0].Id),
            ImageId = defaultImages.Apply(defaultImages => defaultImages.Images[0].Id),
            InstanceChargeType = "PostPaid",
            InstanceName = name,
            InstanceType = defaultInstanceTypes.Apply(defaultInstanceTypes => defaultInstanceTypes.InstanceTypes[0].Id),
            InternetChargeType = "PayByTraffic",
            InternetMaxBandwidthOut = "10",
            SecurityGroups = 
            {
                defaultSecurityGroup,
            }.Select(__item => __item.Id).ToList(),
            SystemDiskCategory = "cloud_efficiency",
            VswitchId = defaultSwitch.Id,
        }));
    }
    var defaultLoadBalancer = new AliCloud.Slb.LoadBalancer("defaultLoadBalancer", new AliCloud.Slb.LoadBalancerArgs
    {
        VswitchId = defaultSwitch.Id,
    });
    var defaultBackendServer = new AliCloud.Slb.BackendServer("defaultBackendServer", new AliCloud.Slb.BackendServerArgs
    {
        BackendServers = 
        {
            new AliCloud.Slb.Inputs.BackendServerBackendServerArgs
            {
                ServerId = defaultInstance[0].Id,
                Weight = 100,
            },
            new AliCloud.Slb.Inputs.BackendServerBackendServerArgs
            {
                ServerId = defaultInstance[1].Id,
                Weight = 100,
            },
        },
        LoadBalancerId = defaultLoadBalancer.Id,
    });
}

}

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 value ecs, eni. Default to eni.

BackendServerArgs

BackendServerState

CaCertificate

A Load Balancer CA Certificate is used by the listener of the protocol https.

For information about slb and how to use it, see What is Server Load Balancer.

For information about CA Certificate and how to use it, see Configure CA Certificate.

Example Usage

using Pulumi;
using AliCloud = Pulumi.AliCloud;

class MyStack : Stack
{
public MyStack()
{
    // create a CA certificate
    var foo = new AliCloud.Slb.CaCertificate("foo", new AliCloud.Slb.CaCertificateArgs
    {
        CaCertificate = @"-----BEGIN CERTIFICATE-----
MIIDRjCCAq+gAwIBAgIJAJnI******90EAxEG/bJJyOm5LqoiA=
-----END CERTIFICATE-----
",
    });
}

}

CaCertificateArgs

CaCertificateState

DomainExtension

HTTPS listeners of guaranteed-performance SLB support configuring multiple certificates, allowing you to forward requests with different domain names to different backend servers. Please refer to the documentation for details.

NOTE: Available in 1.60.0+

NOTE: The instance with shared loadBalancerSpec doesn't support domainExtension.

Example Usage

using Pulumi;
using AliCloud = Pulumi.AliCloud;

class MyStack : Stack
{
public MyStack()
{
    var instance = new AliCloud.Slb.LoadBalancer("instance", new AliCloud.Slb.LoadBalancerArgs
    {
        Internet = "true",
        InternetChargeType = "PayByTraffic",
    });
    var foo = new AliCloud.Slb.ServerCertificate("foo", new AliCloud.Slb.ServerCertificateArgs
    {
        PrivateKey = @"-----BEGIN RSA PRIVATE KEY-----
MIIEowIBAAKCAQEAyjCheapjf7qDI3R9w/Gj0XFDgNLPK2aWIRvM25BdY/IB2KAf
xQ7zOxu3X1bMo2zMCzsSrwIVrxx0qRM/7e4AfkHcKwDIjCcBprQp164dhFol4GpT
HtcuGv0+Ue6vpuE9cxQE3/pG5x1n5EhheFu2+lAaGh/vUrUPeQp6szX/9qfzn+/k
tF8wsRV8PBiFc2ZNMRXupRyc2qtOn95r86w/uK6TuerU1L64E2P5+tYLBWT+39Ai
diUIenjURThFEn8Srvw8v/iLEMaKwiWNkOfWQH96166gzddOI8PT5cJy5an2c90T
DgzegVo8RPK70bU9KjH7gH79YIwXVmTdIVGAUQIDAQABAoIBAE1J4a/8biR5S3/W
G+03BYQeY8tuyjqw8FqfoeOcf9agwAvqybouSNQjeCk9qOQfxq/UWQQFK/zQR9gJ
v7pX7GBXFK5rkj3g+0SaQhRsPmRFgY0Tl8qGPt2aSKRRNVv5ZeADmwlzRn86QmiF
Mp0rkfqFfDTYWEepZszCML0ouzuxsW/9tq7rvtSjsgATNt31B3vFa3D3JBi31jUh
5nfR9A3bATze7mQw3byEDiVl5ASRDgYyur403P1fDnMy9DBHZ8NaPOsFF6OBpJal
BJsG5z00hll5PFN2jfmBQKlvAeU7wfwqdaSnGHOfqf2DeTTaFjIQ4gUhRn/m6pLo
6kXttLECgYEA9sng0Qz/TcPFfM4tQ1gyvB1cKnnGIwg1FP8sfUjbbEgjaHhA224S
k3BxtX2Kq6fhTXuwusAFc6OVMAZ76FgrQ5K4Ci7+DTsrF28z4b8td+p+lO/DxgP9
lTgN+ddsiTOV4fUef9Z3yY0Zr0CnBUMbQYRaV2UIbCdiB0G4V/bt9TsCgYEA0bya
Oo9wGI0RJV0bYP7qwO74Ra1/i1viWbRlS7jU37Q+AZstrlKcQ5CTPzOjKFKMiUzl
4miWacZ0/q2n+Mvd7NbXGXTLijahnyOYKaHJYyh4oBymfkgAifRstE0Ki9gdvArb
/I+emC0GvLSyfGN8UUeDJs4NmqdEXGqjo2JOV+MCgYALFv1MR5o9Y1u/hQBRs2fs
PiGDIx+9OUQxYloccyaxEfjNXAIGGkcpavchIbgWiJ++PJ2vdquIC8TLeK8evL+M
9M3iX0Q5UfxYvD2HmnCvn9D6Xl/cyRcfGnq+TGjrLW9BzSMGuZt+aiHKV0xqFx7l
bc4leTvMqGRmURS4lzcQOwKBgQCDzA/i4sYfN25h21tcHXSpnsG3D2rJyQi5NCo/
ZjunA92/JqOTGuiFcLGHEszhhtY3ZXJET1LNz18vtzKJnpqrvOnYXlOVW/U+SqDQ
8JDb1c/PVZGuY1KrXkR9HLiW3kz5IJ3S3PFdUVYdeTN8BQxXCyg4V12nJJtJs912
y0zN3wKBgGDS6YttCN6aI4EOABYE8fI1EYQ7vhfiYsaWGWSR1l6bQey7KR6M1ACz
ZzMASNyytVt12yXE4/Emv6/pYqigbDLfL1zQJSLJ3EHJYTh2RxjR+AaGDudYFG/T
liQ9YXhV5Iu2x1pNwrtFnssDdaaGpfA7l3xC00BL7Z+SAJyI4QKA
-----END RSA PRIVATE KEY-----
",
        ServerCertificate = @"-----BEGIN CERTIFICATE-----
MIIDdjCCAl4CCQCcm+erkcKN7DANBgkqhkiG9w0BAQsFADB9MQswCQYDVQQGEwJj
bjELMAkGA1UECAwCYmoxEDAOBgNVBAcMB2JlaWppbmcxDzANBgNVBAoMBmFsaXl1
bjELMAkGA1UECwwCc2MxFTATBgNVBAMMDHd3dy50ZXN0LmNvbTEaMBgGCSqGSIb3
DQEJARYLMTIzQDEyMy5jb20wHhcNMTkwNDI2MDM0ODAxWhcNMjQwNDI1MDM0ODAx
WjB9MQswCQYDVQQGEwJjbjELMAkGA1UECAwCYmoxEDAOBgNVBAcMB2JlaWppbmcx
DzANBgNVBAoMBmFsaXl1bjELMAkGA1UECwwCc2MxFTATBgNVBAMMDHd3dy50ZXN0
LmNvbTEaMBgGCSqGSIb3DQEJARYLMTIzQDEyMy5jb20wggEiMA0GCSqGSIb3DQEB
AQUAA4IBDwAwggEKAoIBAQDKMKF5qmN/uoMjdH3D8aPRcUOA0s8rZpYhG8zbkF1j
8gHYoB/FDvM7G7dfVsyjbMwLOxKvAhWvHHSpEz/t7gB+QdwrAMiMJwGmtCnXrh2E
WiXgalMe1y4a/T5R7q+m4T1zFATf+kbnHWfkSGF4W7b6UBoaH+9StQ95CnqzNf/2
p/Of7+S0XzCxFXw8GIVzZk0xFe6lHJzaq06f3mvzrD+4rpO56tTUvrgTY/n61gsF
ZP7f0CJ2JQh6eNRFOEUSfxKu/Dy/+IsQxorCJY2Q59ZAf3rXrqDN104jw9PlwnLl
qfZz3RMODN6BWjxE8rvRtT0qMfuAfv1gjBdWZN0hUYBRAgMBAAEwDQYJKoZIhvcN
AQELBQADggEBAABzo82TxGp5poVkd5pLWj5ACgcBv8Cs6oH9D+4Jz9BmyuBUsQXh
2aG0hQAe1mU61C9konsl/GTW8umJQ4M4lYEztXXwMf5PlBMGwebM0ZbSGg6jKtZg
WCgJ3eP/FMmyXGL5Jji5+e09eObhUDVle4tdi0On97zBoz85W02rgWFAqZJwiEAP
t+c7jX7uOSBq2/38iGStlrX5yB1at/gJXXiA5CL5OtlR3Okvb0/QH37efO1Nu39m
lFi0ODPAVyXjVypAiLguDxPn6AtDTdk9Iw9B19OD4NrzNRWgSSX5vuxo/VcRcgWk
3gEe9Ca0ZKN20q9XgthAiFFjl1S9ZgdA6Zc=
-----END CERTIFICATE-----
",
    });
    var https = new AliCloud.Slb.Listener("https", new AliCloud.Slb.ListenerArgs
    {
        BackendPort = 80,
        Bandwidth = 10,
        Cookie = "testslblistenercookie",
        CookieTimeout = 86400,
        FrontendPort = 443,
        HealthCheck = "on",
        HealthCheckConnectPort = 20,
        HealthCheckHttpCode = "http_2xx,http_3xx",
        HealthCheckInterval = 5,
        HealthCheckTimeout = 8,
        HealthCheckUri = "/cons",
        HealthyThreshold = 8,
        LoadBalancerId = instance.Id,
        Protocol = "https",
        SslCertificateId = foo.Id,
        StickySession = "on",
        StickySessionType = "insert",
        UnhealthyThreshold = 8,
    });
    var example1 = new AliCloud.Slb.DomainExtension("example1", new AliCloud.Slb.DomainExtensionArgs
    {
        Domain = "www.test.com",
        FrontendPort = https.FrontendPort,
        LoadBalancerId = instance.Id,
        ServerCertificateId = foo.Id,
    });
}

}

DomainExtensionArgs

DomainExtensionState

GetAcls

GetAclsArgs

GetAclsResult

GetAttachments

GetAttachmentsArgs

GetAttachmentsResult

GetBackendServers

GetBackendServersArgs

GetBackendServersResult

GetCaCertificates

GetCaCertificatesArgs

GetCaCertificatesResult

GetDomainExtensions

GetDomainExtensionsArgs

GetDomainExtensionsResult

GetListeners

GetListenersArgs

GetListenersResult

GetLoadBalancers

GetLoadBalancersArgs

GetLoadBalancersResult

GetMasterSlaveServerGroups

GetMasterSlaveServerGroupsArgs

GetMasterSlaveServerGroupsResult

GetRules

GetRulesArgs

GetRulesResult

GetServerCertificates

GetServerCertificatesArgs

GetServerCertificatesResult

GetServerGroups

GetServerGroupsArgs

GetServerGroupsResult

GetZones

GetZonesArgs

GetZonesResult

Listener

Provides an Application Load Balancer Listener resource.

For information about slb and how to use it, see What is Server Load Balancer.

For information about listener and how to use it, to see the following:

  • Configure a HTTP Listener.
  • Configure a HTTPS Listener.
  • Configure a TCP Listener.
  • Configure a UDP Listener.

Example Usage

using Pulumi;
using AliCloud = Pulumi.AliCloud;

class MyStack : Stack
{
public MyStack()
{
    var config = new Config();
    var name = config.Get("name") ?? "testcreatehttplistener";
    var ipVersion = config.Get("ipVersion") ?? "ipv4";
    var defaultLoadBalancer = new AliCloud.Slb.LoadBalancer("defaultLoadBalancer", new AliCloud.Slb.LoadBalancerArgs
    {
        Internet = true,
        InternetChargeType = "PayByTraffic",
    });
    var defaultAcl = new AliCloud.Slb.Acl("defaultAcl", new AliCloud.Slb.AclArgs
    {
        EntryLists = 
        {
            new AliCloud.Slb.Inputs.AclEntryListArgs
            {
                Comment = "first",
                Entry = "10.10.10.0/24",
            },
            new AliCloud.Slb.Inputs.AclEntryListArgs
            {
                Comment = "second",
                Entry = "168.10.10.0/24",
            },
        },
        IpVersion = ipVersion,
    });
    var defaultListener = new AliCloud.Slb.Listener("defaultListener", new AliCloud.Slb.ListenerArgs
    {
        AclId = defaultAcl.Id,
        AclStatus = "on",
        AclType = "white",
        BackendPort = 80,
        Bandwidth = 10,
        Cookie = "testslblistenercookie",
        CookieTimeout = 86400,
        FrontendPort = 80,
        HealthCheck = "on",
        HealthCheckConnectPort = 20,
        HealthCheckDomain = "ali.com",
        HealthCheckHttpCode = "http_2xx,http_3xx",
        HealthCheckInterval = 5,
        HealthCheckTimeout = 8,
        HealthCheckUri = "/cons",
        HealthyThreshold = 8,
        IdleTimeout = 30,
        LoadBalancerId = defaultLoadBalancer.Id,
        Protocol = "http",
        RequestTimeout = 80,
        StickySession = "on",
        StickySessionType = "insert",
        UnhealthyThreshold = 8,
        XForwardedFor = new AliCloud.Slb.Inputs.ListenerXForwardedForArgs
        {
            RetriveSlbId = true,
            RetriveSlbIp = true,
        },
    });
}

}

Listener fields and protocol mapping

load balance support 4 protocal to listen on, they are http,https,tcp,udp, the every listener support which portocal following:

listener parameter support protocol value range
backend_port http & https & tcp & udp 1-65535
frontend_port http & https & tcp & udp 1-65535
protocol http & https & tcp & udp
bandwidth http & https & tcp & udp -1 / 1-1000
scheduler http & https & tcp & udp wrr rr or wlc
sticky_session http & https on or off
sticky_session_type http & https insert or server
cookie_timeout http & https 1-86400
cookie http & https
persistence_timeout tcp & udp 0-3600
health_check http & https on or off
health_check_type tcp tcp or http
health_check_domain http & https & tcp
health_check_method http & https & tcp
health_check_uri http & https & tcp
health_check_connect_port http & https & tcp & udp 1-65535 or -520
healthy_threshold http & https & tcp & udp 1-10
unhealthy_threshold http & https & tcp & udp 1-10
health_check_timeout http & https & tcp & udp 1-300
health_check_interval http & https & tcp & udp 1-50
health_check_http_code http & https & tcp http_2xx,http_3xx,http_4xx,http_5xx
server_certificate_id https
gzip http & https true or false
x_forwarded_for http & https
acl_status http & https & tcp & udp on or off
acl_type http & https & tcp & udp white or black
acl_id http & https & tcp & udp the id of resource alicloud_slb_acl
established_timeout tcp 10-900
idle_timeout http & https 1-60
request_timeout http & https 1-180
enable_http2 https on or off
tls_cipher_policy https tls_cipher_policy_1_0, tls_cipher_policy_1_1, tls_cipher_policy_1_2, tls_cipher_policy_1_2_strict
server_group_id http & https & tcp & udp the id of resource alicloud.slb.ServerGroup

The listener mapping supports the following:

ListenerArgs

ListenerState

LoadBalancer

LoadBalancerArgs

LoadBalancerState

MasterSlaveServerGroup

A master slave server group contains two ECS instances. The master slave server group can help you to define multiple listening dimension.

NOTE: One ECS instance can be added into multiple master slave server groups.

NOTE: One master slave server group can only add two ECS instances, which are master server and slave server.

NOTE: One master slave server group can be attached with tcp/udp listeners in one load balancer.

NOTE: One Classic and Internet load balancer, its master slave server group can add Classic and VPC ECS instances.

NOTE: One Classic and Intranet load balancer, its master slave server group can only add Classic ECS instances.

NOTE: One VPC load balancer, its master slave server group can only add the same VPC ECS instances.

NOTE: Available in 1.54.0+

Example Usage

using System.Collections.Generic;
using System.Linq;
using Pulumi;
using AliCloud = Pulumi.AliCloud;

class MyStack : Stack
{
public MyStack()
{
    var defaultZones = Output.Create(AliCloud.GetZones.InvokeAsync(new AliCloud.GetZonesArgs
    {
        AvailableDiskCategory = "cloud_efficiency",
        AvailableResourceCreation = "VSwitch",
    }));
    var defaultInstanceTypes = defaultZones.Apply(defaultZones => Output.Create(AliCloud.Ecs.GetInstanceTypes.InvokeAsync(new AliCloud.Ecs.GetInstanceTypesArgs
    {
        AvailabilityZone = defaultZones.Zones[0].Id,
        EniAmount = 2,
    })));
    var image = Output.Create(AliCloud.Ecs.GetImages.InvokeAsync(new AliCloud.Ecs.GetImagesArgs
    {
        MostRecent = true,
        NameRegex = "^ubuntu_18.*64",
        Owners = "system",
    }));
    var config = new Config();
    var name = config.Get("name") ?? "tf-testAccSlbMasterSlaveServerGroupVpc";
    var number = config.Get("number") ?? "1";
    var mainNetwork = new AliCloud.Vpc.Network("mainNetwork", new AliCloud.Vpc.NetworkArgs
    {
        CidrBlock = "172.16.0.0/16",
    });
    var mainSwitch = new AliCloud.Vpc.Switch("mainSwitch", new AliCloud.Vpc.SwitchArgs
    {
        AvailabilityZone = defaultZones.Apply(defaultZones => defaultZones.Zones[0].Id),
        CidrBlock = "172.16.0.0/16",
        VpcId = mainNetwork.Id,
    });
    var groupSecurityGroup = new AliCloud.Ecs.SecurityGroup("groupSecurityGroup", new AliCloud.Ecs.SecurityGroupArgs
    {
        VpcId = mainNetwork.Id,
    });
    var instanceInstance = new List<AliCloud.Ecs.Instance>();
    for (var rangeIndex = 0; rangeIndex < 2; rangeIndex++)
    {
        var range = new { Value = rangeIndex };
        instanceInstance.Add(new AliCloud.Ecs.Instance($"instanceInstance-{range.Value}", new AliCloud.Ecs.InstanceArgs
        {
            AvailabilityZone = defaultZones.Apply(defaultZones => defaultZones.Zones[0].Id),
            ImageId = image.Apply(image => image.Images[0].Id),
            InstanceChargeType = "PostPaid",
            InstanceName = name,
            InstanceType = defaultInstanceTypes.Apply(defaultInstanceTypes => defaultInstanceTypes.InstanceTypes[0].Id),
            InternetChargeType = "PayByTraffic",
            InternetMaxBandwidthOut = "10",
            SecurityGroups = 
            {
                groupSecurityGroup.Id,
            },
            SystemDiskCategory = "cloud_efficiency",
            VswitchId = mainSwitch.Id,
        }));
    }
    var instanceLoadBalancer = new AliCloud.Slb.LoadBalancer("instanceLoadBalancer", new AliCloud.Slb.LoadBalancerArgs
    {
        Specification = "slb.s2.small",
        VswitchId = mainSwitch.Id,
    });
    var defaultNetworkInterface = new List<AliCloud.Vpc.NetworkInterface>();
    for (var rangeIndex = 0; rangeIndex < number; rangeIndex++)
    {
        var range = new { Value = rangeIndex };
        defaultNetworkInterface.Add(new AliCloud.Vpc.NetworkInterface($"defaultNetworkInterface-{range.Value}", new AliCloud.Vpc.NetworkInterfaceArgs
        {
            SecurityGroups = 
            {
                groupSecurityGroup.Id,
            },
            VswitchId = mainSwitch.Id,
        }));
    }
    var defaultNetworkInterfaceAttachment = new List<AliCloud.Vpc.NetworkInterfaceAttachment>();
    for (var rangeIndex = 0; rangeIndex < number; rangeIndex++)
    {
        var range = new { Value = rangeIndex };
        defaultNetworkInterfaceAttachment.Add(new AliCloud.Vpc.NetworkInterfaceAttachment($"defaultNetworkInterfaceAttachment-{range.Value}", new AliCloud.Vpc.NetworkInterfaceAttachmentArgs
        {
            InstanceId = instanceInstance[0].Id,
            NetworkInterfaceId = defaultNetworkInterface.Select(__item => __item.Id).ToList()[range.Index],
        }));
    }
    var groupMasterSlaveServerGroup = new AliCloud.Slb.MasterSlaveServerGroup("groupMasterSlaveServerGroup", new AliCloud.Slb.MasterSlaveServerGroupArgs
    {
        LoadBalancerId = instanceLoadBalancer.Id,
        Servers = 
        {
            new AliCloud.Slb.Inputs.MasterSlaveServerGroupServerArgs
            {
                Port = 100,
                ServerId = instanceInstance[0].Id,
                ServerType = "Master",
                Weight = 100,
            },
            new AliCloud.Slb.Inputs.MasterSlaveServerGroupServerArgs
            {
                Port = 100,
                ServerId = instanceInstance[1].Id,
                ServerType = "Slave",
                Weight = 100,
            },
        },
    });
    var tcp = new AliCloud.Slb.Listener("tcp", new AliCloud.Slb.ListenerArgs
    {
        Bandwidth = "10",
        EstablishedTimeout = 600,
        FrontendPort = "22",
        HealthCheckConnectPort = 20,
        HealthCheckHttpCode = "http_2xx",
        HealthCheckInterval = 5,
        HealthCheckTimeout = 8,
        HealthCheckType = "tcp",
        HealthCheckUri = "/console",
        HealthyThreshold = 8,
        LoadBalancerId = instanceLoadBalancer.Id,
        MasterSlaveServerGroupId = groupMasterSlaveServerGroup.Id,
        PersistenceTimeout = 3600,
        Protocol = "tcp",
        UnhealthyThreshold = 8,
    });
}

}

Block servers

The servers mapping supports the following:

  • server_ids - (Required) A list backend server ID (ECS instance ID).
  • port - (Required) The port used by the backend server. Valid value range: [1-65535].
  • weight - (Optional) Weight of the backend server. Valid value range: [0-100]. Default to 100.
  • type - (Optional, Available in 1.51.0+) Type of the backend server. Valid value ecs, eni. Default to eni.
  • server_type - (Optional) The server type of the backend server. Valid value Master, Slave.
  • is_backup - (Removed from v1.63.0) Determine if the server is executing. Valid value 0, 1.

MasterSlaveServerGroupArgs

MasterSlaveServerGroupState

Rule

A forwarding rule is configured in HTTP/HTTPS listener and it used to listen a list of backend servers which in one specified virtual backend server group. You can add forwarding rules to a listener to forward requests based on the domain names or the URL in the request.

NOTE: One virtual backend server group can be attached in multiple forwarding rules.

NOTE: At least one "Domain" or "Url" must be specified when creating a new rule.

NOTE: Having the same 'Domain' and 'Url' rule can not be created repeatedly in the one listener.

NOTE: Rule only be created in the HTTP or HTTPS listener.

NOTE: Only rule's virtual server group can be modified.

Example Usage

using System.Linq;
using Pulumi;
using AliCloud = Pulumi.AliCloud;

class MyStack : Stack
{
public MyStack()
{
    var config = new Config();
    var name = config.Get("name") ?? "slbrulebasicconfig";
    var defaultZones = Output.Create(AliCloud.GetZones.InvokeAsync(new AliCloud.GetZonesArgs
    {
        AvailableDiskCategory = "cloud_efficiency",
        AvailableResourceCreation = "VSwitch",
    }));
    var defaultInstanceTypes = defaultZones.Apply(defaultZones => Output.Create(AliCloud.Ecs.GetInstanceTypes.InvokeAsync(new AliCloud.Ecs.GetInstanceTypesArgs
    {
        AvailabilityZone = defaultZones.Zones[0].Id,
        CpuCoreCount = 1,
        MemorySize = 2,
    })));
    var defaultImages = Output.Create(AliCloud.Ecs.GetImages.InvokeAsync(new AliCloud.Ecs.GetImagesArgs
    {
        MostRecent = true,
        NameRegex = "^ubuntu_18.*64",
        Owners = "system",
    }));
    var defaultNetwork = new AliCloud.Vpc.Network("defaultNetwork", new AliCloud.Vpc.NetworkArgs
    {
        CidrBlock = "172.16.0.0/16",
    });
    var defaultSwitch = new AliCloud.Vpc.Switch("defaultSwitch", new AliCloud.Vpc.SwitchArgs
    {
        AvailabilityZone = defaultZones.Apply(defaultZones => defaultZones.Zones[0].Id),
        CidrBlock = "172.16.0.0/16",
        VpcId = defaultNetwork.Id,
    });
    var defaultSecurityGroup = new AliCloud.Ecs.SecurityGroup("defaultSecurityGroup", new AliCloud.Ecs.SecurityGroupArgs
    {
        VpcId = defaultNetwork.Id,
    });
    var defaultInstance = new AliCloud.Ecs.Instance("defaultInstance", new AliCloud.Ecs.InstanceArgs
    {
        AvailabilityZone = defaultZones.Apply(defaultZones => defaultZones.Zones[0].Id),
        ImageId = defaultImages.Apply(defaultImages => defaultImages.Images[0].Id),
        InstanceChargeType = "PostPaid",
        InstanceName = name,
        InstanceType = defaultInstanceTypes.Apply(defaultInstanceTypes => defaultInstanceTypes.InstanceTypes[0].Id),
        InternetChargeType = "PayByTraffic",
        InternetMaxBandwidthOut = "10",
        SecurityGroups = 
        {
            defaultSecurityGroup,
        }.Select(__item => __item.Id).ToList(),
        SystemDiskCategory = "cloud_efficiency",
        VswitchId = defaultSwitch.Id,
    });
    var defaultLoadBalancer = new AliCloud.Slb.LoadBalancer("defaultLoadBalancer", new AliCloud.Slb.LoadBalancerArgs
    {
        VswitchId = defaultSwitch.Id,
    });
    var defaultListener = new AliCloud.Slb.Listener("defaultListener", new AliCloud.Slb.ListenerArgs
    {
        BackendPort = 22,
        Bandwidth = 5,
        FrontendPort = 22,
        HealthCheckConnectPort = "20",
        LoadBalancerId = defaultLoadBalancer.Id,
        Protocol = "http",
    });
    var defaultServerGroup = new AliCloud.Slb.ServerGroup("defaultServerGroup", new AliCloud.Slb.ServerGroupArgs
    {
        LoadBalancerId = defaultLoadBalancer.Id,
        Servers = 
        {
            new AliCloud.Slb.Inputs.ServerGroupServerArgs
            {
                Port = 80,
                ServerIds = 
                {
                    defaultInstance,
                }.Select(__item => __item.Id).ToList(),
                Weight = 100,
            },
        },
    });
    var defaultRule = new AliCloud.Slb.Rule("defaultRule", new AliCloud.Slb.RuleArgs
    {
        Cookie = "23ffsa",
        CookieTimeout = 100,
        Domain = "*.aliyun.com",
        FrontendPort = defaultListener.FrontendPort,
        HealthCheck = "on",
        HealthCheckConnectPort = 80,
        HealthCheckDomain = "test",
        HealthCheckHttpCode = "http_2xx",
        HealthCheckInterval = 10,
        HealthCheckTimeout = 30,
        HealthCheckUri = "/test",
        HealthyThreshold = 3,
        ListenerSync = "off",
        LoadBalancerId = defaultLoadBalancer.Id,
        Scheduler = "rr",
        ServerGroupId = defaultServerGroup.Id,
        StickySession = "on",
        StickySessionType = "server",
        UnhealthyThreshold = 5,
        Url = "/image",
    });
}

}

RuleArgs

RuleState

ServerCertificate

A Load Balancer Server Certificate is an ssl Certificate used by the listener of the protocol https.

For information about slb and how to use it, see What is Server Load Balancer.

For information about Server Certificate and how to use it, see Configure Server Certificate.

Example Usage

using Pulumi;
using AliCloud = Pulumi.AliCloud;

class MyStack : Stack
{
public MyStack()
{
    // create a server certificate
    var foo = new AliCloud.Slb.ServerCertificate("foo", new AliCloud.Slb.ServerCertificateArgs
    {
        PrivateKey = @"-----BEGIN RSA PRIVATE KEY-----
MIICXAIBAAKBgQDO0knDrlNdiys******ErVpjsckAaOW/JDG5PCSwkaMxk=
-----END RSA PRIVATE KEY-----
",
        ServerCertificate = @"-----BEGIN CERTIFICATE-----
MIIDRjCCAq+gAwIBAgI+OuMs******XTtI90EAxEG/bJJyOm5LqoiA=
-----END CERTIFICATE-----
",
    });
}

}

ServerCertificateArgs

ServerCertificateState

ServerGroup

A virtual server group contains several ECS instances. The virtual server group can help you to define multiple listening dimension, and to meet the personalized requirements of domain name and URL forwarding.

NOTE: One ECS instance can be added into multiple virtual server groups.

NOTE: One virtual server group can be attached with multiple listeners in one load balancer.

NOTE: One Classic and Internet load balancer, its virtual server group can add Classic and VPC ECS instances.

NOTE: One Classic and Intranet load balancer, its virtual server group can only add Classic ECS instances.

NOTE: One VPC load balancer, its virtual server group can only add the same VPC ECS instances.

Example Usage

using System.Collections.Generic;
using System.Linq;
using Pulumi;
using AliCloud = Pulumi.AliCloud;

class MyStack : Stack
{
public MyStack()
{
    var config = new Config();
    var name = config.Get("name") ?? "slbservergroupvpc";
    var defaultZones = Output.Create(AliCloud.GetZones.InvokeAsync(new AliCloud.GetZonesArgs
    {
        AvailableDiskCategory = "cloud_efficiency",
        AvailableResourceCreation = "VSwitch",
    }));
    var defaultInstanceTypes = defaultZones.Apply(defaultZones => Output.Create(AliCloud.Ecs.GetInstanceTypes.InvokeAsync(new AliCloud.Ecs.GetInstanceTypesArgs
    {
        AvailabilityZone = defaultZones.Zones[0].Id,
        CpuCoreCount = 1,
        MemorySize = 2,
    })));
    var defaultImages = Output.Create(AliCloud.Ecs.GetImages.InvokeAsync(new AliCloud.Ecs.GetImagesArgs
    {
        MostRecent = true,
        NameRegex = "^ubuntu_18.*64",
        Owners = "system",
    }));
    var defaultNetwork = new AliCloud.Vpc.Network("defaultNetwork", new AliCloud.Vpc.NetworkArgs
    {
        CidrBlock = "172.16.0.0/16",
    });
    var defaultSwitch = new AliCloud.Vpc.Switch("defaultSwitch", new AliCloud.Vpc.SwitchArgs
    {
        AvailabilityZone = defaultZones.Apply(defaultZones => defaultZones.Zones[0].Id),
        CidrBlock = "172.16.0.0/16",
        VpcId = defaultNetwork.Id,
    });
    var defaultSecurityGroup = new AliCloud.Ecs.SecurityGroup("defaultSecurityGroup", new AliCloud.Ecs.SecurityGroupArgs
    {
        VpcId = defaultNetwork.Id,
    });
    var instance = new List<AliCloud.Ecs.Instance>();
    for (var rangeIndex = 0; rangeIndex < 2; rangeIndex++)
    {
        var range = new { Value = rangeIndex };
        instance.Add(new AliCloud.Ecs.Instance($"instance-{range.Value}", new AliCloud.Ecs.InstanceArgs
        {
            AvailabilityZone = defaultZones.Apply(defaultZones => defaultZones.Zones[0].Id),
            ImageId = defaultImages.Apply(defaultImages => defaultImages.Images[0].Id),
            InstanceChargeType = "PostPaid",
            InstanceName = name,
            InstanceType = defaultInstanceTypes.Apply(defaultInstanceTypes => defaultInstanceTypes.InstanceTypes[0].Id),
            InternetChargeType = "PayByTraffic",
            InternetMaxBandwidthOut = "10",
            SecurityGroups = 
            {
                defaultSecurityGroup,
            }.Select(__item => __item.Id).ToList(),
            SystemDiskCategory = "cloud_efficiency",
            VswitchId = defaultSwitch.Id,
        }));
    }
    var defaultLoadBalancer = new AliCloud.Slb.LoadBalancer("defaultLoadBalancer", new AliCloud.Slb.LoadBalancerArgs
    {
        VswitchId = defaultSwitch.Id,
    });
    var defaultServerGroup = new AliCloud.Slb.ServerGroup("defaultServerGroup", new AliCloud.Slb.ServerGroupArgs
    {
        LoadBalancerId = defaultLoadBalancer.Id,
        Servers = 
        {
            new AliCloud.Slb.Inputs.ServerGroupServerArgs
            {
                Port = 100,
                ServerIds = 
                {
                    instance[0].Id,
                    instance[1].Id,
                },
                Weight = 10,
            },
            new AliCloud.Slb.Inputs.ServerGroupServerArgs
            {
                Port = 80,
                ServerIds = instance.Select(__item => __item.Id).ToList(),
                Weight = 100,
            },
        },
    });
}

}

Block servers

The servers mapping supports the following:

  • server_ids - (Required) A list backend server ID (ECS instance ID).
  • port - (Required) The port used by the backend server. Valid value range: [1-65535].
  • weight - (Optional) Weight of the backend server. Valid value range: [0-100]. Default to 100.
  • type - (Optional, Available in 1.51.0+) Type of the backend server. Valid value ecs, eni. Default to eni.

ServerGroupArgs

ServerGroupState

Back to top Copyright 2016-2020, Pulumi Corporation.