ALIYUN::SLB::Listener

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,
    "Gzip": String,
    "TLSCipherPolicy": String,
    "AclIds": List,
    "ProxyProtocolV2Enabled": Boolean,
    "ConnectionDrainTimeout": Integer,
    "Tags": List,
    "ConnectionDrain": String
  }
}

属性

属性名称

类型

必须

允许更新

描述

约束

MasterSlaveServerGroupId

String

主备服务器组ID。

AclStatus

String

是否开启访问控制功能。

取值:

  • on(默认值):开启访问控制功能。

  • off:关闭访问控制功能。

EnableHttp2

String

是否开启HTTP2特性。

取值:

  • on:开启HTTP2特性。

  • off :不开启HTTP2特性。

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:不启动监听器。

Gzip

String

指定是否启用Gzip压缩,以压缩特定类型的文件。

取值:

  • true(默认值):启动。

  • false:不启动。

TLSCipherPolicy

String

TLS安全策略。

每个安全策略包含可用于HTTPS的TLS协议版本和密码套件。 

说明

当Protocol为https时,本参数生效。

AclIds

List

与要创建的侦听器关联的访问控制的ID列表。

如果AclStatus参数的值为on,则该参数必填。 AclIds的优先级高于AclId。 

ProxyProtocolV2Enabled

Boolean

是否支持通过Proxy Protocol协议携带客户端源地址到后端服务器。

取值:

  • true:是。

  • false:否。

ConnectionDrainTimeout

Integer

设置连接优雅中断超时时间。

单位:秒。

取值范围:10~900

Tags

List

标签列表

更多信息,请参见Tags属性

ConnectionDrain

String

是否开启连接优雅中断。

取值:

  • on:是。

  • off:否。

HealthCheck 语法

"HealthCheck": {
  "Domain": String,
  "Interval": Integer,
  "URI": String,
  "HttpCode": String,
  "HealthyThreshold": Integer,
  "HealthCheckType": String,
  "Timeout": Integer,
  "UnhealthyThreshold": Integer,
  "Port": Integer,
  "Switch": String,
  "HealthCheckMethod": String,
  "Req": String,
  "Exp": 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取值为httpshttp,且Switch取值为on时,该参数有效。

Req

String

UDP监听健康检查的请求字符串仅限于字母和数字

最大长度为64个字符。

Exp

String

UDP监听健康检查的响应字符串仅限于字母和数字。

最大长度为64个字符。

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:关闭会话保持。

    说明

    仅对HTTPHTTPS协议生效。

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

服务器上配置的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

是否通过X-Forwarded-Port头字段获取负载均衡实例的监听端口。

取值:

  • on:通过X-Forwarded-Port头字段获取SLB实例使用的监听协议。

  • off(默认值):不通过X-Forwarded-Port头字段获取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。

Tags语法

"Tags": [
  {
    "Key": String,
    "Value": String
  }
]

Tags属性

属性名称

类型

必须

允许更新

描述

约束

Key

String

标签键。

Value

String

标签值。

返回值

Fn::GetAtt

  • LoadBalancerId:负载均衡实例的唯一标识。

  • ListenerPortsAndProtocol:负载均衡实例前端使用的端口和协议。

示例

YAML格式

ROSTemplateFormatVersion: '2015-09-01'
Description: Test SLB Listener
Parameters:
  SlbInstanceId:
    AssociationProperty: ALIYUN::SLB::Instance::InstanceId
    Type: String
Resources:
  Listener:
    Type: ALIYUN::SLB::Listener
    Properties:
      BackendServerPort: 8080
      Bandwidth: 50
      ListenerPort: 80
      LoadBalancerId:
        Ref: SlbInstanceId
      Protocol: https
      Scheduler: wrr
Outputs: {}

JSON格式

{
  "ROSTemplateFormatVersion": "2015-09-01",
  "Description": "Test SLB Listener",
  "Parameters": {
    "SlbInstanceId": {
      "AssociationProperty": "ALIYUN::SLB::Instance::InstanceId",
      "Type": "String"
    }
  },
  "Resources": {
    "Listener": {
      "Type": "ALIYUN::SLB::Listener",
      "Properties": {
        "BackendServerPort": 8080,
        "Bandwidth": 50,
        "ListenerPort": 80,
        "LoadBalancerId": {
          "Ref": "SlbInstanceId"
        },
        "Protocol": "https",
        "Scheduler": "wrr"
      }
    }
  },
  "Outputs": {
  }
}