ALIYUN::SLB::Listener类型用于创建负载均衡监听。

语法

{
  "Type": "ALIYUN::SLB::Listener",
  "Properties": {
    "MasterSlaveServerGroupId": String,
    "AclStatus": String,
    "Protocol": String,
    "AclId": String,
    "ServerCertificateId": String,
    "HealthCheck": Map,
    "RequestTimeout": Integer,
    "IdleTimeout": Integer,
    "ListenerPort": Integer,
    "HttpConfig": Map,
    "Bandwidth": Integer,
    "AclType": String,
    "BackendServerPort": Integer,
    "Scheduler": String,
    "LoadBalancerId": String,
    "CACertificateId": String,
    "Persistence": Map,
    "VServerGroupId": String,
    "Description": String,
    "PortRange": List,
    "StartListener": Boolean,
    "EnableHttp2": String
  }
}

属性

属性名称 类型 必须 允许更新 描述 约束
MasterSlaveServerGroupId String 主备服务器组ID。
AclStatus String 是否开启访问控制功能。 取值:
  • on(默认值):开启。
  • off:关闭。
EnableHttp2 String 是否开启HTTP2特性。 取值:
  • on:开启。
  • off :不开启。
AclId String 监听绑定的访问策略组ID。 当AclStatus取值为on时,必须指定该参数。
AclType String 访问控制类型。 取值:
  • white:仅转发来自所选访问控制策略组中设置的IP地址或地址段的请求。白名单适用于应用只允许特定IP访问的场景。设置白名单存在一定业务风险。一旦设置白名单,只有白名单中的IP可以访问负载均衡监听。如果开启了白名单访问,但访问策略组中没有添加任何IP,则负载均衡监听不会转发请求。
  • black:来自所选访问控制策略组中设置的IP地址或地址段的所有请求都不会转发。黑名单适用于应用只限制某些特定IP访问的场景。如果开启了黑名单访问,但访问策略组中没有添加任何IP,则负载均衡监听会转发全部请求。当AclStatus参数取值为on时,必须指定该参数。
Protocol String 网络协议。 取值:
  • http
  • https
  • tcp
  • udp
ListenerPort Integer 负载均衡实例前端使用的端口。 取值范围:1~65,535。
Bandwidth Integer 监听的带宽峰值。 取值范围:-1或1~1000。

单位:Mbps。

取值说明:

  • 针对按固定带宽计费方式的公网类型实例,不同Listener上的Bandwidth的峰值总和不能超出在创建负载均衡实例时设定的Bandwidth值,且不能将Listener上的Bandwidth值设置为-1。
  • 针对按使用流量计费方式的公网类型实例,可以选择将Listener上的Bandwidth值设置为-1,表示不限制带宽峰值。
BackendServerPort Integer 负载均衡实例后端使用的端口。 取值范围:1~65,535。
LoadBalancerId String 负载均衡实例的ID。
HealthCheck Map 健康检查设置。 更多信息,请参见HealthCheck属性
Persistence Map 相关参数的持久化。 更多信息,请参见Persistence属性
Scheduler String 调度算法。 取值:
  • wrr(默认值):权重值越高的后端服务器,被轮询到的次数(概率)也越高。
  • wlc:按照访问顺序依次将外部请求分发到后端服务器。
CACertificateId String CA证书ID。 只对HTTPS协议有效。
ServerCertificateId String 服务器证书的ID。 只对HTTPS协议有效,且必须指定该参数。
VServerGroupId String 服务器组ID。
RequestTimeout Integer 请求超时时间。 取值范围:1~180。

单位:秒。

IdleTimeout Integer 连接空闲超时时间。 取值范围:1~60。

单位:秒。

HttpConfig Map 用于配置HTTP协议。 更多信息,请参见HttpConfig属性
Description String 监听的描述信息。 长度为1~80个字符。可包含英文字母、汉字、数字、短划线(-)、正斜线(/)、半角句号(.)和下划线(_)。
PortRange List 监听的端口范围。 目前仅支持开启全端口监听,即 StartPort=1,EndPort=65,535。

更多信息,请参见PortRange属性

StartListener Boolean 是否启动监听器。 取值:
  • true(默认值):启动。
  • false:不启动。

HealthCheck 语法

"HealthCheck": {
  "Domain": String,
  "Interval": Integer,
  "URI": String,
  "HttpCode": String,
  "HealthyThreshold": Integer,
  "HealthCheckType": String,
  "Timeout": Integer,
  "UnhealthyThreshold": Integer,
  "Port": Integer,
  "Switch": String,
  "HealthCheckMethod": String
}

HealthCheck属性

属性名称 类型 必须 允许更新 描述 约束
Domain String 用于健康检查的域名。 取值:
  • $_ip
  • 用户自定义字符串:长度为1~80个字符。可包含英文字母、数字、短划线(-)和半角句号(.)。
说明 用户设置此参数为$_ip或空时,负载均衡会使用各后端服务器的私网IP作为健康检查使用的域名。
Interval Integer 健康检查的时间间隔。 取值范围:1~5。

单位:秒。

URI String 用于健康检查的URI。 长度为1~80个字符。必须以正斜线(/)开头,可包含英文字母、数字、短划线(-)、正斜线(/)、半角句号(.)、百分号(%)、问号(?)、井号(#)和and(&)。
HttpCode String HTTP状态码。 取值:
  • http_2xx(默认值)
  • http_3xx
  • http_4xx
  • http_5xx

多个HTTP状态码之间用半角逗号(,)分隔。

HealthyThreshold Integer 判定健康检查结果为success的阈值。即,健康检查连续成功多少次后,将后端服务器的健康检查状态由fail改为success。 取值范围:1~10。
HealthCheckType String 健康检查类型。 取值:
  • tcp
  • http
Timeout Integer 每次健康检查响应的最大超时时间。

取值范围:1~50。

单位:秒。

说明 如果Timeout值小于Interval值,则Timeout无效,超时时间为Interval的值。
UnhealthyThreshold Integer 判定健康检查结果为fail的阈值。即,健康检查连续失败多少次后,将后端服务器的健康检查状态由success改为fail。 取值范围:1~10。
Port Integer 用于健康检查的端口。 取值范围:0~65,535。
Switch String 是否启用健康检查。 取值:
  • on:启用。
  • off:禁用。
说明 当前仅对HTTP或HTTPS协议有效。如果未设置Switch,默认将禁用健康检查,除非已经配置了健康检查项目。
HealthCheckMethod String 健康检查方法。 取值:
  • head
  • get
说明 当Protocol取值为https或http,且Switch取值为on时,该参数有效。

Persistence语法

"Persistence": {
  "PersistenceTimeout": Integer,
  "CookieTimeout": Integer,
  "XForwardedFor": String,
  "XForwardedFor_SLBID": String,
  "XForwardedFor_proto": String,
  "XForwardedFor_SLBIP": String,
  "Cookie": String,
  "StickySession": String,
  "StickySessionType": String,
  "XForwardedFor_ClientSrcPort": String,
  "XForwardedFor_SLBPORT": String
}

Persistence属性

属性名称 类型 必须 允许更新 描述 约束
StickySession String 是否开启会话保持。 取值:
  • on:开启。
  • off:关闭。
PersistenceTimeout Integer 连接持久化的超时时间。 取值范围:0~1000。

默认值:0。表示关闭。

单位:秒。

CookieTimeout Integer Cookie超时时间。

取值范围:1~86,400。

单位:秒。

说明 当StickySession为on且StickySessionType为insert时,该参数必选。
XForwardedFor String 是否通过X-Forwarded-Fort头字段获取来访者真实IP。 取值:
  • on:通过X-Forwarded-Fort头字段获取来访者真实IP。
  • off(默认值):不通过X-Forwarded-Fort头字段获取来访者真实IP。
XForwardedFor_proto String 是否通过X-Forwarded-Proto头字段获取负载均衡实例的监听协议。 取值:
  • on:通过X-Forwarded-Proto头字段获取负载均衡实例的监听协议。
  • off(默认值):不通过X-Forwarded-Proto头字段获取负载均衡实例的监听协议。
XForwardedFor_SLBID String 是否通过SLB-ID头字段获取负载均衡实例ID。 取值:
  • on:通过SLB-ID头字段获取负载均衡实例ID。
  • off(默认值):不通过SLB-ID头字段获取负载均衡实例ID。
XForwardedFor_SLBIP String 是否通过SLB-IP头字段获取客户端请求的真实IP。 取值:
  • on:通过SLB-IP头字段获取客户端请求的真实IP。
  • off(默认值):不通过SLB-IP头字段获取客户端请求的真实IP。
Cookie String 是否通过XForwardedFor_SLBPORT头字段获取负载均衡实例的监听端口。 服务器上配置的Cookie。 长度为1~200个字符,不能以美元符号($)开头。可包含英文字母和数字,不能包含半角逗号(,)、半角分号(;)和空格( )。
说明 当StickySession为on且StickySessionType为server时,该参数必选。
StickySessionType String Cookie的处理方式。 取值:
  • insert:植入Cookie。
  • server:重写Cookie。
说明 当StickySession的值为on时,必须指定该参数。
XForwardedFor_ClientSrcPort String 是否通过X-Forwarded-Client-srcport头字段获取客户端连接负载均衡实例所使用的端口。 取值:
  • on:通过X-Forwarded-Client-srcport头字段获取客户端连接负载均衡实例所使用的端口。
  • off(默认值):不通过X-Forwarded-Client-srcport头字段获取客户端连接负载均衡实例所使用的端口。
XForwardedFor_SLBPORT String 是否通过XForwardedFor_SLBPORT头字段获取负载均衡实例的监听端口。 取值:
  • on:通过X-Forwarded-Proto头字段获取SLB实例使用的监听协议。
  • off(默认值):不通过X-Forwarded-Proto头字段获取SLB实例使用的监听协议。

HttpConfig语法

"HttpConfig": {
  "ForwardPort": Integer,
  "ListenerForward": String
}

HttpConfig属性

属性名称 类型 必须 允许更新 描述 约束
ForwardPort Integer HTTP到HTTPS监听转发端口。 取值范围:1~65,535。

默认值:443。

ListenerForward String 是否将HTTP启用为HTTPS转发。 取值:
  • on:启用。
  • off(默认值):禁用。

PortRange语法

"PortRange": [
  {
    "StartPort": Integer,
    "EndPort": Integer
  }
]

PortRange属性

属性名称 类型 必须 允许更新 描述 约束
StartPort Integer 起始端口。 取值:1。
EndPort Integer 结束端口。 取值:65,535。

返回值

Fn::GetAtt

  • LoadBalancerId:负载均衡实例的唯一标识。
  • ListenerPortsAndProtocol:负载均衡实例前端使用的端口和协议。

示例

JSON格式

{
  "ROSTemplateFormatVersion": "2015-09-01",
  "Parameters": {
    "LoadBalancerId": {
      "Type": "String",
      "Label": "负载均衡实例的ID",
      "Default": "slb-*****"
    }
  },
  "Resources": {
    "SlbListener": {
      "Type": "ALIYUN::SLB::Listener",
      "Properties": {
        "Persistence": {
          "CookieTimeout": 60,
          "StickySession": "on",
          "PersistenceTimeout": 180,
          "XForwardedFor": "off",
          "StickySessionType": "insert"
        },
        "ListenerPort": 80,
        "Bandwidth": -1,
        "HealthCheck": {
          "HttpCode": "http_2xx,http_3xx,http_4xx,http_5xx",
          "HealthCheckType": "tcp",
          "UnhealthyThreshold": 3,
          "Timeout": 5,
          "HealthyThreshold": 3,
          "Port": 80,
          "URI": "/",
          "Interval": 2
        },
        "LoadBalancerId": {
          "Ref": "LoadBalancerId"
        },
        "BackendServerPort": 80,
        "Protocol": "tcp"
      }
    }
  },
  "Outputs": {
  }
}

更多示例,请参见创建负载均衡监听、克隆负载均衡实例、上传证书、创建扩展域名、创建服务器组并添加后端服务器到负载均衡实例、为HTTP或HTTPS监听添加转发规则和将后端服务器添加到服务器组的组合示例:JSON示例YAML示例