# Adding a Backend Server

#### Function

This API is used to add a backend server.

#### Constraints

When you add backend servers, note the following:

- Two backend servers in the same backend server group must have different IP addresses and ports.

- If no subnets are specified during cloud server creation, cross-VPC backend servers can be added. In this case, address must be set to an IPv4 address, the protocol of the backend server group must be TCP, HTTP, or HTTPS, and cross-VPC backend must have been enabled for the load balancer.

- If a subnet is specified during cloud server creation, the subnet must be in the same VPC as the subnet from which the virtual IP address bound to the load balancer is assigned.

- If the backend server group supports IPv4/IPv6 dual stack, address can be an IPv4 or IPv6 address. The value of address depends on the IP address version of the backend server group.

#### URI

POST /v3/{project_id}/elb/pools/{pool_id}/members

Table 1 Path parameters
Parameter | Mandatory | Type | Description
--- | --- | --- | ---
pool_id | Yes | String | Specifies the ID of the backend server group.
project_id | Yes | String | Specifies the project ID.

#### Request Parameters

Table 2 Request header parameters
Parameter | Mandatory | Type | Description
--- | --- | --- | ---
X-Auth-Token | Yes | String | Specifies the token used for IAM authentication.

Table 3 Request body parameters
Parameter | Mandatory | Type | Description
--- | --- | --- | ---
member | Yes | CreateMemberOption object | Specifies request parameters for creating a backend server.

Table 4 CreateMemberOption
Parameter | Mandatory | Type | Description
--- | --- | --- | ---

address

Yes

String

Specifies the IP address of the backend server.

- The IP address must be in the subnet specified by subnet_cidr_id, for example, 192.168.3.11.

- The IP address can only be the IP address of the primary NIC.

- If subnet_cidr_id is left blank, cross-VPC backend is enabled. In this case, these servers must use IPv4 addresses.

Minimum: 1

Maximum: 64

admin_state_up | No | Boolean | Specifies the administrative status of the backend server. Although this parameter can be used in the APIs for creating and updating backend servers, its actual value depends on whether cloud servers exist. If cloud servers exist, the value is true. Otherwise, the value is false.
name | No | String | Specifies the backend server name. Minimum: 0 Maximum: 255
project_id | No | String | Specifies the project ID. Minimum: 1 Maximum: 32
protocol_port | Yes | Integer | Specifies the port used by the backend server to receive requests. Minimum: 1 Maximum: 65535

subnet_cidr_id

No

String

Specifies the ID of the subnet where the backend server works.

This subnet must be in the same VPC as the subnet of the load balancer with which the backend server is associated. Only IPv4 subnets are supported.

This parameter can be left blank, indicating that cross-VPC backend servers can be added. In this case, IP addresses of these servers must be IPv4 addresses, the protocol of the backend server group must be TCP, HTTP, or HTTPS, and cross-VPC backend must have been enabled for the load balancer.

Minimum: 1

Maximum: 36

weight | No | Integer | Specifies the weight of the backend server. Requests are routed to backend servers in the same backend server group based on their weights. If the weight is 0, the backend server will not accept new requests. This parameter is invalid when lb_algorithm is set to SOURCE_IP for the backend server group that contains the backend server. Minimum: 0 Maximum: 100 Default: 1

#### Response Parameters

Status code: 201

Table 5 Response body parameters
Parameter | Type | Description
--- | --- | ---
request_id | String | Specifies the request ID. The value is automatically generated.
member | Member object | Specifies the backend server.

Table 6 Member
Parameter | Type | Description
--- | --- | ---
address | String | Specifies the IP address of the backend server. The IP address must be in the subnet specified by subnet_cidr_id, for example, 192.168.3.11. The IP address can only be the IP address of the primary NIC.
admin_state_up | Boolean | Specifies the administrative status of the backend server. Although this parameter can be used in the APIs for creating and updating backend servers, its actual value depends on whether cloud servers exist. If cloud servers exist, the value is true. Otherwise, the value is false. Default: true
id | String | Specifies the backend server ID.
name | String | Specifies the backend server name.

operating_status

String

Specifies the operating status of the backend server. The value can be one of the following:

- ONLINE: The backend server is running normally.

- NO_MONITOR: No health check is configured for the backend server group to which the backend server belongs.

- OFFLINE: The cloud server used as the backend server is stopped or does not exist.

project_id | String | Specifies the project ID.
protocol_port | Integer | Specifies the port used by the backend server to receive requests. Minimum: 1 Maximum: 65535
subnet_cidr_id | String | Specifies the ID of the subnet where the backend server works. This subnet must be in the VPC as the subnet of the load balancer associated with the backend server. Only IPv4 subnets are supported. If the value is left blank, the backend server is not in the load balancer's VPC.
weight | Integer | Specifies the weight of the backend server. Requests are routed to backend servers in the same backend server group based on their weights. If the weight is 0, the backend server will not accept new requests. This parameter is invalid when lb_algorithm is set to SOURCE_IP for the backend server group that contains the backend server. Minimum: 0 Maximum: 100 Default: 1
ip_version | String | This is a read-only attribute, which is automatically generated based on the address parameter. The value can be v4 or v6. Default: v4

#### Example Requests

    POST

    https://{elb_endpoint}/v3/99a3fff0d03c428eac3678da6a7d0f24/elb/pools/36ce7086-a496-4666-9064-5ba0e6840c75/members

    {
      "member" : {
        "subnet_cidr_id" : "c09f620e-3492-4429-ac15-445d5dd9ca74",
        "protocol_port" : 89,
        "name" : "My member",
        "address" : "120.10.10.16"
      }
    }

#### Example Responses

Status code: 201

Successful request.

    {
      "member" : {
        "name" : "My member",
        "weight" : 1,
        "admin_state_up" : false,
        "subnet_cidr_id" : "c09f620e-3492-4429-ac15-445d5dd9ca74",
        "project_id" : "99a3fff0d03c428eac3678da6a7d0f24",
        "address" : "120.10.10.16",
        "protocol_port" : 89,
        "id" : "1923923e-fe8a-484f-bdbc-e11559b1f48f",
        "operating_status" : "NO_MONITOR",
        "ip_version" : "v4"
      },
      "request_id" : "f354090d-41db-41e0-89c6-7a943ec50792"
    }

#### Status Codes

Status Code | Description
--- | ---
201 | Successful request.

#### Error Codes

See Error Codes.

Parent topic: Backend Server