ALIYUN::ALB::ServerGroup

ALIYUN::ALB::ServerGroup类型用于创建服务器组。

语法

{
  "Type": "ALIYUN::ALB::ServerGroup",
  "Properties": {
    "VpcId": String,
    "ResourceGroupId": String,
    "Scheduler": String,
    "StickySessionConfig": Map,
    "HealthCheckConfig": Map,
    "Protocol": String,
    "ServerGroupType": String,
    "ServerGroupName": String,
    "Tags": List,
    "ServiceName": String,
    "UpstreamKeepaliveEnabled": Boolean,
    "SlowStartConfig": Map,
    "ConnectionDrainConfig": Map,
    "UchConfig": Map
  }
}

属性

属性名称

类型

必须

允许更新

描述

约束

HealthCheckConfig

Map

健康检查相关配置结构。

更多信息,请参见HealthCheckConfig属性

ServerGroupName

String

服务器组名称。

长度为2~128个字符,必须以英文字母或汉字开头,可包含数字、半角句点(.)、下划线(_)和短划线(-)。

VpcId

String

专有网络ID。

只有该VPC下的服务器可以加入服务器组。

Protocol

String

后端协议。

取值:

  • HTTP(默认值):支持关联HTTPS、HTTP和QUIC监听。

  • HTTPS:支持关联HTTPS监听。

  • gRPC:关联 HTTPS 和 QUIC 监听。

说明

ServerGroupType取值为Fc时,仅支持HTTP协议。

ResourceGroupId

String

资源组ID。

Scheduler

String

调度算法。

取值:

  • Wrr(默认值):权重值越高的后端服务器,被轮询到的概率也越高。

  • Wlc:除了根据每台后端服务器设定的权重值来进行轮询,同时还考虑后端服务器的实际负载(即连接数)。当权重值相同时,当前连接数越小的后端服务器被轮询到的概率也越高。

  • Sch:源IP一致性Hash。

ServerGroupType

String

服务器组类型。

取值:

  • Instance(默认值):服务器类型。

  • Ip:IP地址类型。

  • Fc:函数计算类型,该类型支持添加函数计算类型的后端服务器。

ServiceName

String

服务器组对应的Kubernetes服务名称。

说明

本参数仅适用于应用路由场景。

StickySessionConfig

Map

会话保持配置结构体。

更多信息,请参见StickySessionConfig属性

Tags

List

标签。

最多添加20个标签。

更多信息,请参见Tags属性

UpstreamKeepaliveEnabled

Boolean

是否开启后端长链接。

  • true:开启

  • false(默认值):不开启。

SlowStartConfig

Map

慢启动相关配置。

开启慢启动后,将会在设定的时间段内对新添加到后端服务器组的后端服务器进行预热,转发到该服务器的请求数量线性增加。

更多信息,请参见SlowStartConfig属性。

说明
  • 基础版实例不支持开启慢启动,仅标准版、WAF 增强版实例支持。

  • 服务器类型、IP 类型服务器组支持配置慢启动,函数计算类型不支持。

  • 慢启动仅在后端调度算法是加权轮询算法时可开启。

ConnectionDrainConfig

Map

连接优雅中断相关配置。

开启连接优雅中断,在移除后端服务器或者健康检查失败后,负载均衡使现有连接在一定时间内正常传输。

说明

基础版实例不支持开启连接优雅中断,仅标准版、WAF 增强版实例支持。

服务器类型、IP 类型服务器组支持连接优雅中断,函数计算类型不支持。

UchConfig

Map

URL一致性 hash 参数配置。

更多信息,请参见UchConfig属性。

UchConfig语法

"UchConfig": {
  "Type": String,
  "Value": String
}

UchConfig属性

属性名称

类型

必须

允许更新

描述

约束

Type

String

参数类型。

只能填 QueryString。

Value

String

一致性 hash 参数值。

ConnectionDrainConfig语法

"ConnectionDrainConfig": {
  "ConnectionDrainTimeout": Integer,
  "ConnectionDrainEnabled": Boolean
}

ConnectionDrainConfig属性

属性名称

类型

必须

允许更新

描述

约束

ConnectionDrainTimeout

Integer

连接优雅中断超时时间。

取值范围:0~900

默认值:300

ConnectionDrainEnabled

Boolean

是否开启连接优雅中断。

取值:

  • true:启用。

  • false:禁用。

SlowStartConfig语法

"SlowStartConfig": {
  "SlowStartDuration": Integer,
  "SlowStartEnabled": Boolean
}

SlowStartConfig属性

属性名称

类型

必须

允许更新

描述

约束

SlowStartDuration

Integer

慢启动持续时间。

取值范围:30~900

默认值:30

SlowStartEnabled

Boolean

是否开启慢启动。

取值:

  • true:启用。

  • false:禁用。

StickySessionConfig语法

"StickySessionConfig": {
  "Cookie": String,
  "CookieTimeout": Integer,
  "StickySessionType": String,
  "StickySessionEnabled": Boolean
}

StickySessionConfig属性

属性名称

类型

必须

允许更新

描述

约束

Cookie

String

服务器上配置的Cookie。

长度为1~200个字符,不能以美元符号($)开头,可包含英文字母和数字,不能包含半角逗号(,)、半角分号(;)或空格。

说明

当StickySessionEnabled取值为true且StickySessionType取值为Server时,必须指定该参数。

CookieTimeout

Integer

Cookie超时时间。

取值范围:1~86,400。

默认值:1000。

单位:秒。

说明

当StickySessionEnabled取值为true且StickySessionType取值为Insert时,必须指定该参数。

StickySessionEnabled

Boolean

是否启用会话保持。

取值:

  • true:启用。

  • false:禁用。

说明

当ServerGroupType取值为InstanceIp时,必须指定该参数。

StickySessionType

String

Cookie的处理方式。

取值:

  • Insert(默认值):植入Cookie。客户端第一次访问时,负载均衡会在返回请求中植入Cookie(即在HTTP或HTTPS响应报文中插入SERVERID),下次客户端携带此Cookie访问,负载均衡服务会将请求定向转发给之前记录到的后端服务器上。

  • Server:重写Cookie。负载均衡发现用户自定义了Cookie,将会对原来的Cookie进行重写,下次客户端携带新的Cookie访问,负载均衡服务会将请求定向转发给之前记录到的后端服务器。

说明

当StickySessionEnabled取值为true时,必须指定该参数。

HealthCheckConfig语法

"HealthCheckConfig": {
  "HealthCheckInterval": Integer,
  "HealthCheckConnectPort": Integer,
  "HealthCheckCodes": List,
  "UnhealthyThreshold": Integer,
  "HealthCheckMethod": String,
  "HealthCheckPath": String,
  "HealthCheckHost": String,
  "HealthyThreshold": Integer,
  "HealthCheckProtocol": String,
  "HealthCheckHttpVersion": String,
  "HealthCheckEnabled": Boolean,
  "HealthCheckTimeout": Integer
}

HealthCheckConfig属性

属性名称

类型

必须

允许更新

描述

约束

HealthCheckEnabled

Boolean

是否启用健康检查。

取值:

  • true:启用。

  • false:禁用。

HealthCheckCodes

List

健康检查的状态码列表。

取值:

  • http_2xx(默认值)

  • http_3xx

  • http_4xx

  • http_5xx

  • HealthCheckProtocol取值为gRPC时,HealthCheckCodes状态码范围:0~99,默认值:0。支持范围输入,最多支持 20 个范围值。多个范围值使用半角逗号(,)隔开。

说明

HealthCheckProtocolHTTPHTTPSgRPC,该参数生效。

HealthCheckConnectPort

Integer

健康检查的后端服务器的端口。

取值范围: 0~65,535。

默认值:0,表示使用后端服务器的端口进行健康检查。

HealthCheckHost

String

健康检查域名。

长度为1~80个字符。可包含小写英文字母、数字、短划线(-)和半角句号(.)。

取值示例:www.example.com

说明

当HealthCheckProtocol取值为HTTP时,该参数有效。

HealthCheckHttpVersion

String

健康检查HTTP协议版本。

取值:

  • HTTP1.0

  • HTTP1.1(默认值)

说明

当HealthCheckProtocol取值为HTTP时,该参数有效。

HealthCheckInterval

Integer

健康检查的时间间隔。

取值范围:1~50。

默认值:2。

单位:秒。

HealthCheckMethod

String

健康检查方式。

取值:

  • GET

  • HEAD(默认值)

  • POST:gRPC 监听健康检查默认采用 POST 方法。

说明

只有HealthCheckProtocol设置为HTTPHTTPSgRPC时,该参数生效。

HealthCheckPath

String

健康检查的路径。

长度为1~80,必须以正斜线(/)开头。可包含英文字母、数字和特殊字符-/.%?#&=_;~!()*[]@$^:',+

说明

当HealthCheckProtocol取值为HTTP时,该参数有效。

HealthCheckProtocol

String

健康检查协议。

取值:

  • HTTP:通过发送 HEAD 或 GET 请求模拟浏览器的访问行为来检查服务器应用是否健康。

  • HTTPS:通过发送 HEAD 或 GET 请求模拟浏览器的访问行为来检查服务器应用是否健康。(数据加密,相比 HTTP 更安全。)

  • TCP:通过发送 SYN 握手报文来检测服务器端口是否存活。

  • gRPC:通过发送 POST 或 GET 请求来检查服务器应用是否健康。

HealthCheckTimeout

Integer

接收来自运行状况检查的响应需要等待的时间。

如果后端ECS在指定的时间内没有正确响应,则判定为健康检查失败。

取值范围:1~300。

默认值:5。

单位:秒。

说明

如果HealthCheckTimeout的值小于HealthCheckInterval的值,则HealthCheckTimeout无效,超时时间为HealthCheckInterval的值。

HealthyThreshold

Integer

健康检查连续成功多少次后,将后端服务器的健康检查状态由失败判定为成功。

取值范围:2~10。

默认值:3。

UnhealthyThreshold

Integer

健康检查连续失败多少次后,将后端服务器的健康检查状态由成功判定为失败。

取值范围:2~10。

默认值:3。

Tags语法

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

Tags属性

属性名称

类型

必须

允许更新

描述

约束

Key

String

标签键。

长度为1~128个字符,不能以aliyunacs:开头,不能包含http://或https:// 。

Value

String

标签值。

长度为0~128个字符,不能以aliyunacs:开头,不能包含http://或https:// 。

返回值

Fn::GetAtt

ServerGroupId:服务器组ID。

示例

说明

请您根据实际情况更改脱敏的参数取值。

YAML格式

ROSTemplateFormatVersion: '2015-09-01'
Parameters:
  VpcId:
    AssociationProperty: ALIYUN::ECS::VPC::VPCId
    Type: String
    Label:
      zh-cn: 现有VPC的实例ID
      en: Existing VPC Instance ID
Resources:
  ServerGroup:
    Type: ALIYUN::ALB::ServerGroup
    Properties:
      VpcId:
        Ref: VpcId
      StickySessionConfig:
        Cookie: B490B5EBF6F3CD402E515D22****
        CookieTimeout: 1000
        StickySessionEnabled: true
        StickySessionType: Insert
      HealthCheckConfig:
        HealthCheckConnectPort: 80
        HealthCheckEnabled: true
        HealthCheckHost: www.example.com
        HealthCheckCodes:
          - http_2xx
        HealthCheckHttpVersion: HTTP1.0
        HealthCheckInterval: 5
        HealthCheckMethod: HEAD
        HealthCheckPath: /test/index.html
        HealthCheckProtocol: HTTP
        HealthCheckTimeout: 3
        HealthyThreshold: 4
        UnhealthyThreshold: 4
      ServerGroupName: TestServerGroup
Outputs:
  ServerGroupId:
    Description: The ID of the server group.
    Value:
      Fn::GetAtt:
        - ServerGroup
        - ServerGroupId                  

JSON格式

{
  "ROSTemplateFormatVersion": "2015-09-01",
  "Parameters": {
    "VpcId": {
      "AssociationProperty": "ALIYUN::ECS::VPC::VPCId",
      "Type": "String",
      "Label": {
        "zh-cn": "现有VPC的实例ID",
        "en": "Existing VPC Instance ID"
      }
    }
  },
  "Resources": {
    "ServerGroup": {
      "Type": "ALIYUN::ALB::ServerGroup",
      "Properties": {
        "VpcId": {
          "Ref": "VpcId"
        },
        "StickySessionConfig": {
          "Cookie": "B490B5EBF6F3CD402E515D22****",
          "CookieTimeout": 1000,
          "StickySessionEnabled": true,
          "StickySessionType": "Insert"
        },
        "HealthCheckConfig": {
          "HealthCheckConnectPort": 80,
          "HealthCheckEnabled": true,
          "HealthCheckHost": "www.example.com",
          "HealthCheckCodes": [
            "http_2xx"
          ],
          "HealthCheckHttpVersion": "HTTP1.0",
          "HealthCheckInterval": 5,
          "HealthCheckMethod": "HEAD",
          "HealthCheckPath": "/test/index.html",
          "HealthCheckProtocol": "HTTP",
          "HealthCheckTimeout": 3,
          "HealthyThreshold": 4,
          "UnhealthyThreshold": 4
        },
        "ServerGroupName": "TestServerGroup"
      }
    }
  },
  "Outputs": {
    "ServerGroupId": {
      "Description": "The ID of the server group.",
      "Value": {
        "Fn::GetAtt": [
          "ServerGroup",
          "ServerGroupId"
        ]
      }
    }
  }
}