# CreateListener

## 1. 接口描述

调用本接口用于在网络型负载均衡实例中创建TCP、UDP或TCPSSL监听。

## 2. 请求参数

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

<table><thead><tr><th width="181">参数名称</th><th width="71">必选</th><th width="166">类型</th><th>描述</th></tr></thead><tbody><tr><td>loadBalancerId</td><td>是</td><td>String</td><td>负载均衡实例 ID。</td></tr><tr><td>listenerName</td><td>是</td><td>String</td><td>监听器名称。<br>不得超过64个字符。仅支持输入字母、数字、-和英文句点(.)。</td></tr><tr><td>portList</td><td>是</td><td>Array of Integer</td><td>监听端口。取值范围：<strong>0</strong>~<strong>65535</strong>。<br>示例值：["6569"]</td></tr><tr><td>clientToken</td><td>是</td><td>String</td><td>用于保证请求的幂等性。</td></tr><tr><td>protocol</td><td>是</td><td>String</td><td><p>监听协议。取值：</p><ul><li><strong>TCP</strong></li><li><strong>UDP</strong></li></ul></td></tr><tr><td>backendProtocol</td><td>是</td><td>String</td><td><p>后端转发协议。取值：</p><ul><li><strong>TCP</strong></li><li><strong>UDP</strong></li></ul></td></tr><tr><td>scheduler</td><td>否</td><td>String</td><td><p>调度算法。取值：</p><ul><li><strong>wrr</strong>（默认值）：加权轮询，权重值越高的后端服务器，被轮询到的概率也越高。</li><li><strong>rr</strong>：轮询，按照访问顺序依次将外部请求分发到后端服务器。</li></ul></td></tr><tr><td>kind</td><td>否</td><td>String</td><td><p>工作模式。取值：</p><ul><li>FNAT(全局网络地址转换)</li><li>DR(直接路由)</li></ul></td></tr><tr><td>healthCheck</td><td>否</td><td><a href="../../datastructure#healthcheck">HealthCheck</a></td><td>健康检查的信息。</td></tr><tr><td>notify</td><td>否</td><td><a href="../../datastructure#notify">Notify</a></td><td>警报。</td></tr></tbody></table>

## 3. 响应结果

| 参数名称       | 类型     | 描述                                         |
| ---------- | ------ | ------------------------------------------ |
| requestId  | String | 唯一请求 ID，每次请求都会返回。定位问题时需要提供该次请求的 requestId。 |
| listenerId | String | 监听器的ID。                                    |

## 4. 代码示例

{% tabs %}
{% tab title="示例" %}

1. **创建Listener**

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

Request:
{
  "loadBalancerId": "xxxx",
  "name": "xxxx",
  "portList": [80],
  "clientToken": "xxxx",
  "protocol": "TCP",
  "backendProtocol": "TCP"
}

Response:
{
  "requestId": "TEEFDCA5B-76FB-4E91-A18E-DF7F5D2CE41F",
  "response": {
    "requestId": "TEEFDCA5B-76FB-4E91-A18E-DF7F5D2CE41F",
    "listenerId": "xxxx"
  }
}
```

{% endtab %}
{% endtabs %}

## 5. 开发者工具

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

## 6. 错误码

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