All Products
Search
Document Center

Server Load Balancer:CreateServerGroup

Last Updated:Apr 17, 2025

Creates a server group in a region.

Operation description

CreateServerGroup is an asynchronous operation. After a request is sent, the system returns a request ID and runs the task in the background. You can call the GetJobStatus operation to query the creation status of the task.

  • If the task is in the Succeeded status, the server group is created.
  • If the task is in the Processing status, the server group is being created.

Debugging

You can run this interface directly in OpenAPI Explorer, saving you the trouble of calculating signatures. After running successfully, OpenAPI Explorer can automatically generate SDK code samples.

Authorization information

The following table shows the authorization information corresponding to the API. The authorization information can be used in the Action policy element to grant a RAM user or RAM role the permissions to call this API operation. Description:

  • Operation: the value that you can use in the Action element to specify the operation on a resource.
  • Access level: the access level of each operation. The levels are read, write, and list.
  • Resource type: the type of the resource on which you can authorize the RAM user or the RAM role to perform the operation. Take note of the following items:
    • For mandatory resource types, indicate with a prefix of * .
    • If the permissions cannot be granted at the resource level, All Resources is used in the Resource type column of the operation.
  • Condition Key: the condition key that is defined by the cloud service.
  • Associated operation: other operations that the RAM user or the RAM role must have permissions to perform to complete the operation. To complete the operation, the RAM user or the RAM role must have the permissions to perform the associated operations.
OperationAccess levelResource typeCondition keyAssociated operation
nlb:CreateServerGroupcreate
*ServerGroup
acs:nlb:{#regionId}:{#accountId}:servergroup/*
*VPC
acs:vpc:{#regionId}:{#accountId}:vpc/{#VpcId}
    none
none

Request parameters

ParameterTypeRequiredDescriptionExample
ServerGroupTypestringNo

The type of the server group. Valid values:

  • Instance (default): allows you to specify servers of the Ecs, Eni, or Eci type.
  • Ip: allows you to specify IP addresses.
Instance
ServerGroupNamestringYes

The server group name.

The name must be 2 to 128 characters in length, can contain digits, periods (.), underscores (_), and hyphens (-), and must start with a letter.

NLB_ServerGroup
AddressIPVersionstringNo

The IP version. Valid values:

  • ipv4 (default): IPv4
  • DualStack: dual-stack
ipv4
ProtocolstringNo

The protocol between the NLB instance and backend servers. Valid values:

  • TCP (default)
  • UDP
  • TCP_UDP
Note
  • If you set this parameter to UDP, you can associate the server group only with UDP listeners.
  • If you set this parameter to TCP and PreserveClientIpEnabled to true, you can associate the server group only with TCP listeners.
  • If you set this parameter to TCP and PreserveClientIpEnabled to false, you can associate the server group with TCPSSL and TCP listeners.
  • If you set this parameter to TCP_UDP, you can associate the server group with TCP and UDP listeners.
  • TCP
    VpcIdstringYes

    The ID of the virtual private cloud (VPC) where the server group is deployed.

    Note If ServerGroupType is set to Instance, only servers in the specified VPC can be added to the server group.
    vpc-bp15zckdt37pq72zv****
    AnyPortEnabledbooleanNo

    Specifies whether to enable multi-port forwarding. Valid values:

    • true
    • false (default)
    false
    ConnectionDrainEnabledbooleanNo

    Specifies whether to enable connection draining. Valid values:

    • true
    • false (default)
    false
    ConnectionDrainTimeoutintegerNo

    Specifies a timeout period for connection draining. Unit: seconds. Valid values: 0 to 900.

    10
    SchedulerstringNo

    The scheduling algorithm. Valid values:

    • Wrr (default): weighted round-robin. Backend servers with higher weights receive more requests.
    • Wlc: weighted least connections. Requests are distributed based on the weights and the number of connections to backend servers. If multiple backend servers have the same weight, requests are forwarded to the backend server with the least connections.
    • rr: Requests are forwarded to backend servers in sequence.
    • sch: source IP hash. Requests from the same source IP address are forwarded to the same backend server.
    • tch: consistent hashing based on four factors: source IP address, destination IP address, source port, and destination port. Requests that contain the same four factors are forwarded to the same backend server.
    • qch: QUIC ID hash. Requests that contain the same QUIC ID are forwarded to the same backend server.
    Note QUIC ID hash is supported only when the backend protocol is set to UDP.
    Wrr
    PreserveClientIpEnabledbooleanNo

    Specifies whether to enable client IP preservation. Valid values:

    • true (default)
    • false
    Note If you set this parameter to true and Protocol to TCP, the server group cannot be associated with TCPSSL listeners.
    true
    HealthCheckConfigobjectNo

    The configurations of health checks.

    HealthCheckEnabledbooleanNo

    Specifies whether to enable health checks. Valid values:

    • true (default)
    • false
    true
    HealthCheckTypestringNo

    The protocol that you want to use for health checks. Valid values:

    • TCP
    • HTTP
    • UDP
    TCP
    HealthCheckConnectPortintegerNo

    The port that you want to use for health checks on backend servers.

    Valid values: 0 to 65535.

    Default value: 0. If you set this parameter to 0, the port that the backend server uses to provide services is also used for health checks.

    0
    HealthyThresholdintegerNo

    The number of times that an unhealthy backend server must consecutively pass health checks before it is declared healthy. In this case, the health status changes from fail to success.

    Valid values: 2 to 10.

    Default value: 2.

    2
    UnhealthyThresholdintegerNo

    The number of times that a healthy backend server must consecutively fail health checks before it is declared unhealthy. In this case, the health status changes from success to fail.

    Valid values: 2 to 10.

    Default value: 2.

    2
    HealthCheckConnectTimeoutintegerNo

    The timeout period for a health check response. Unit: seconds. Valid values: 1 to 300. Default value: 5.

    5
    HealthCheckIntervalintegerNo

    The interval at which health checks are performed. Unit: seconds. Default value: 5.

    • If you set HealthCheckType to TCP or HTTP, valid values are 1 to 50.
    • If you set HealthCheckType to UDP, valid values are 1 to 300. Set the health check interval equal to or larger than the response timeout period to ensure that UDP response timeouts are not determined as no responses.
    5
    HealthCheckDomainstringNo

    The domain name that is used for health checks. Valid values:

    • $SERVER_IP: the internal IP address of a backend server.
    • domain: a domain name. The domain name must be 1 to 80 characters in length, and can contain letters, digits, hyphens (-), and periods (.).
    Note This parameter takes effect only if you set HealthCheckType to HTTP.
    $SERVER_IP
    HealthCheckUrlstringNo

    The URL path to which health check probes are sent.

    The URL path must be 1 to 80 characters in length, and can contain letters, digits, and the following special characters: - / . % ? # & . It must start with a forward slash (/).

    Note This parameter takes effect only if you set HealthCheckType to HTTP.
    /test/index.html
    HealthCheckHttpCodearrayNo

    The HTTP status codes to return for health checks. Separate multiple HTTP status codes with commas (,). Valid values: http_2xx (default), http_3xx, http_4xx, and http_5xx.

    Note This parameter takes effect only if you set HealthCheckType to HTTP.
    HealthCheckHttpCodestringNo

    The HTTP status codes to return for health checks. Separate multiple HTTP status codes with commas (,). Valid values: http_2xx (default), http_3xx, http_4xx, and http_5xx.

    Note This parameter takes effect only if you set HealthCheckType to HTTP.
    http_2xx
    HttpCheckMethodstringNo

    The HTTP method that is used for health checks. Valid values: GET (default) and HEAD.

    Note This parameter takes effect only if you set HealthCheckType to HTTP.
    GET
    HealthCheckReqstringNo

    The request string that UDP listeners send to backend servers for health checks. The string must be 1 to 512 characters in length and can contain only letters and digits.

    hello
    HealthCheckExpstringNo

    The response string that backend servers return to UDP listeners for health checks. The string must be 1 to 512 characters in length and can contain only letters and digits.

    ok
    HealthCheckHttpVersionstringNo

    The HTTP version used for health checks. Valid values: HTTP1.0 (default) and HTTP1.1.

    Note This parameter takes effect only if you set HealthCheckType to HTTP.
    HTTP1.0
    ResourceGroupIdstringNo

    The ID of the resource group to which the server group belongs.

    rg-atstuj3rtop****
    DryRunbooleanNo

    Specifies whether to perform a dry run. Valid values:

    • true:: validates the request without performing the operation. The system checks the request for potential issues, including missing parameter values, incorrect request syntax, and service limits. If the request fails the validation, the corresponding error message is returned. If the request passes the validation, the DryRunOperation error code is returned.
    • false (default): validates the request and performs the operation. If the request passes the dry run, a 2xx HTTP status code is returned and the operation is performed.
    true
    ClientTokenstringNo

    The client token used to ensure the idempotence of the request.

    You can use the client to generate the token. Ensure that the token is unique among different requests. Only ASCII characters are allowed.

    Note If you do not set this parameter, the value of RequestId is used.**** The value of RequestId is different for each request.
    123e4567-e89b-12d3-a456-426655440000
    RegionIdstringNo

    The ID of the region where the NLB instance is deployed.

    You can call the DescribeRegions operation to query the most recent region list.

    cn-hangzhou
    Tagarray<object>No

    The tags.

    objectNo

    The tag.

    KeystringNo

    The key of the tag. The tag key can be up to 64 characters in length, cannot start with aliyun or acs:, and cannot contain http:// or https://. The tag key can contain letters, digits, and the following special characters: _ . : / = + - @

    You can specify up to 20 tags in each call.

    env
    ValuestringNo

    The value of the tag. The tag value can be up to 128 characters in length, cannot start with acs: or aliyun, and cannot contain http:// or https://. The tag value can contain letters, digits, and the following special characters: _ . : / = + - @

    You can specify up to 20 tags in each call.

    product

    Response parameters

    ParameterTypeDescriptionExample
    object

    Creates a server group.

    RequestIdstring

    The request ID.

    54B48E3D-DF70-471B-AA93-08E683A1B45
    ServerGroupIdstring

    The server group ID.

    sgp-atstuj3rtoptyui****
    JobIdstring

    The ID of the asynchronous task.

    72dcd26b-f12d-4c27-b3af-18f6aed5****

    Examples

    Sample success responses

    JSONformat

    {
      "RequestId": "54B48E3D-DF70-471B-AA93-08E683A1B45",
      "ServerGroupId": "sgp-atstuj3rtoptyui****",
      "JobId": "72dcd26b-f12d-4c27-b3af-18f6aed5****"
    }

    Error codes

    HTTP status codeError codeError messageDescription
    400IllegalParam.AnyPortServerGroupConflictWithHealthCheckConfigThe param of AnyPortServerGroupConflictWithHealthCheckConfig is illegal.-
    400IllegalParamFormat.ParseCreateRsPoolRequestFailedThe param format of CreateRsPoolRequest is illegal.The param format of CreateRsPoolRequest is illegal.
    400IllegalParam.PreserveClientIpSwitchThe param of PreserveClientIpSwitch is illegal.-
    400OperationDenied.VpcNotSupportIpv6The operation is not allowed because of VpcNotSupportIpv6.The VPC you are using does not support Ipv6.
    400IllegalParam.healthCheckDomainThe parameter of healthCheckConfig.healthCheckDomain is illegal.The healthCheckDomain in the health check configuration is invalid. Check the input parameters.
    400OperationDenied.UidNotAllowQuic29The operation is not allowed because of uid not allow quic29 version.-
    400IlleagalParam.healthCheckUrlThe parameter of healthCheckUrl in healthCheckConfig is illegal.The URL of the health check used in the health check setting is invalid.
    400IllegalParam.ServerGroupNameThe param of ServerGroupName is illegal.-
    400DryRunOperationRequest validation has been passed with DryRun flag set.Request validation has been passed with DryRun flag set.
    400MissingParam.%sThe parameter of %s is missing.-
    400IllegalParam.ConnectionDrainTimeoutThe param of ConnectionDrainTimeout is illegal.The parameter ConnectionDrainTimeout is invalid. Check the input parameters.
    400IllegalParamThe param of %s is illegal.-
    400SystemBusySystem is busy, please try again later.-
    400QuotaExceeded.QuotaInsufficientThe quota of %s is exceeded, usage %s/%s.The quota is insufficient, currently used %s/%s. Please modify the quota size in the quota center.
    403Forbidden.NoPermissionAuthentication is failed for NoPermission.Authentication is failed for NoPermission.
    404ResourceNotFound.VpcThe specified resource of Vpc is not found.The specified VPC resource was not found. Please check the input parameters.
    404ResourceNotFound.ResourceGroupThe param of resourceGroup not existed.The resource group does not exist.

    For a list of error codes, visit the Service error codes.

    Change history

    Change timeSummary of changesOperation
    2024-06-25The Error code has changedView Change Details
    2024-02-29The Error code has changedView Change Details
    2024-02-22The Error code has changedView Change Details
    2024-02-04The Error code has changedView Change Details
    2024-01-24The Error code has changedView Change Details
    2023-12-18The Error code has changedView Change Details
    2023-10-30The Error code has changedView Change Details
    2023-10-07The Error code has changedView Change Details
    2023-09-27The Error code has changed. The request parameters of the API has changedView Change Details
    2023-09-26The Error code has changedView Change Details
    2023-09-18The Error code has changed. The request parameters of the API has changedView Change Details
    2023-09-05The Error code has changedView Change Details
    2023-08-22The Error code has changedView Change Details
    2023-06-30The internal configuration of the API is changed, but the call is not affectedView Change Details
    2023-06-29The request parameters of the API has changedView Change Details