# RegisterBackend

## 1. 接口描述

本接口用于将一台或多台后端服务绑定到负载均衡的监听器。

{% hint style="info" %}
**注意事项**

* 负载均衡实例的状态必须是`RUNNING`
* 支持添加bmc的实例，要求实例的必须通过 **云网络 L3 产品** 与负载均衡器所属的VPC的边界网关建立联通。在添加bmc实例时，只需指定bmc实例的内网ip地址，不能填入实例ID。
{% endhint %}

## 2. 请求参数

以下请求参数列表仅列出了接口中需要的请求参数

| 参数名称           | 必选 | 类型                                                          | 描述                                                |
| -------------- | -- | ----------------------------------------------------------- | ------------------------------------------------- |
| loadBalancerId | 是  | String                                                      | 负载均衡实例的 ID。                                       |
| listenerId     | 是  | String                                                      | 负载均衡监听器的 ID。                                      |
| backendServers | 是  | Array of [BackendServer](../../datastructure#backendserver) | <p>要绑定的后端服务器列表。</p><p>注意：同一个实例在同一个监听器里只能存在一个。</p> |

## 3. 响应结果

| 参数名称      | 类型     | 描述                                                       |
| --------- | ------ | -------------------------------------------------------- |
| requestId | String | <p>唯一请求 ID。</p><p>每次请求都会返回。定位问题时需要提供该次请求的 RequestId。</p> |

## 4. 代码示例

{% tabs %}
{% tab title="示例" %}
\*\*1. 绑定一个后端机器到监听器上。 \*\*

```json
POST /api/v2/zlb HTTP/1.1
Host: console.zenlayer.com
Content-Type: application/json
X-ZC-Action: RegisterBackend
<Common Request Params>

Request：
{
  "loadBalancerId": "<loadBalancerId>",
  "listenerId": "<listenerId>",
  "backendServers": [
    {
      "instanceId": "<instanceId>",
      "privateIpAddress": "10.0.0.1",
      "weight": 100
    }
  ]
}

Response：
{
  "requestId": "T05992D0C-7E8B-4047-B0C0-780F2CD549D3",
  "response": {
    "requestId": "T05992D0C-7E8B-4047-B0C0-780F2CD549D3"
  }
}
```
{% endtab %}
{% endtabs %}

## 5. 开发者工具

Zenlayer Cloud API 2.0 提供了配套的[开发工具集（SDK）](../../api-introduction/toolkit)，未来会陆续支持更多开发语言，方便快速接入和使用Zenlayer的产品和服务。

## 6. 错误码

下面包含业务逻辑中遇到的错误码，其他错误码见[公共错误码](../../api-introduction/instruction/commonerrorcode)

| HTTP状态码 | 错误码                                         | 说明                     |
| ------- | ------------------------------------------- | ---------------------- |
| 404     | INVALID\_LB\_LISTENER\_NOT\_FOUND           | 监听器不存在。                |
| 400     | INVALID\_INSTANCE\_IP\_ADDRESS              | 实例的内网IP不合法。            |
| 404     | INVALID\_INSTANCE\_NOT\_FOUND               | 后端服务器实例不存在。            |
| 409     | INVALID\_BACKEND\_INSTANCE\_LISTENER\_EXIST | 后端服务器已存在。              |
| 409     | INVALID\_BACKEND\_INSTANCE\_MULTIPLE        | 后端服务器重复。               |
| 400     | INVALID\_BACKEND\_IP\_ADDRESS               | 后端服务器的内网IP未找到相关实例。     |
| 409     | INVALID\_BACKEND\_IP\_ZBG\_REQUIRED         | 加入的后端服务器IP需要VPC建立边界网关。 |
| 400     | INVALID\_BACKEND\_SERVER\_IP\_INVALID       | 后端服务器IP不合法，必须为内网IP地址。  |
| 409     | INVALID\_BACKEND\_SERVER\_IP\_REPEAT        | 后端服务器IP重复。             |
| 400     | INVALID\_BACKEND\_SERVER\_PORT              | 监听多个端口无法在指定端口。         |
| 400     | INVALID\_LB\_STATUS                         | 当前负载均衡器状态无法进行操作。       |
| 404     | INVALID\_BACKEND\_ROUTE\_NOT\_FOUND         | 后端服务器IP路由未找到。          |
