ALIYUN::GWLB::ServerGroup

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

语法

{
  "Type": "ALIYUN::GWLB::ServerGroup",
  "Properties": {
    "VpcId": String,
    "ConnectionDrainConfig": Map,
    "HealthCheckConfig": Map,
    "Protocol": String,
    "ResourceGroupId": String,
    "Scheduler": String,
    "Servers": List,
    "ServerGroupType": String,
    "ServerGroupName": String,
    "Tags": List
  }
}

属性

属性名称

类型

必须

允许更新

描述

约束

VpcId

String

VPC 实例 ID。

说明

如果 ServerGroupType 取值为 Instance 时,只有该 VPC 下的服务器可以加入到该服务器组。

ConnectionDrainConfig

Map

连接优雅中断相关配置。

更多信息,请参考ConnectionDrainConfig属性

HealthCheckConfig

Map

健康检查相关配置。

更多信息,请参考HealthCheckConfig属性

Protocol

String

后端转发协议。

取值:

  • GENEVE(默认值)。

ResourceGroupId

String

资源组 ID。

Scheduler

String

调度算法。

取值:

  • 5TCH(默认值):五元组哈希,基于五元组(源 IP、目的 IP、源端口、目的端口和协议)的一致性哈希,相同的流会调度到相同的后端服务器。

  • 3TCH:三元组哈希,基于三元组(源 IP、目的 IP 和协议)的一致性哈希,相同的流会调度到相同的后端服务器。

  • 2TCH:二元组哈希,基于二元组(源 IP 和目的 IP)的一致性哈希,相同的流会调度到相同的后端服务器。

Servers

List

后端服务器列表。

更多信息,请参考Servers属性

ServerGroupType

String

服务器组类型。

取值:

  • Instance(默认值):服务器类型,该类型服务器组支持添加 EcsEniEci 类型实例。

  • Ip:IP 地址类型,该类型服务器组支持直接添加 IP 地址类型的后端服务器。

ServerGroupName

String

服务器组名称。

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

Tags

List

自定义标签。

更多信息,请参考Tags属性

ConnectionDrainConfig语法

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

ConnectionDrainConfig属性

属性名称

类型

必须

允许更新

描述

约束

ConnectionDrainEnabled

Boolean

是否开启连接优雅中断。

取值:

  • true:开启。

  • false(默认值):关闭。

ConnectionDrainTimeout

Integer

连接优雅中断超时时间。

单位:秒。

取值范围:1~3600

默认值:300

HealthCheckConfig语法

"HealthCheckConfig": {
  "HealthCheckInterval": Integer,
  "HealthCheckConnectPort": Integer,
  "UnhealthyThreshold": Integer,
  "HealthyThreshold": Integer,
  "HealthCheckPath": String,
  "HealthCheckProtocol": String,
  "HealthCheckConnectTimeout": Integer,
  "HealthCheckDomain": String,
  "HealthCheckEnabled": Boolean,
  "HealthCheckHttpCode": List
}

HealthCheckConfig属性

属性名称

类型

必须

允许更新

描述

约束

HealthCheckInterval

Integer

健康检查的时间间隔。

单位:秒。

取值范围:1~50

默认值:10

HealthCheckConnectPort

Integer

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

取值范围: 1~65535

默认值:80

HealthyThreshold

Integer

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

取值范围:2~10

默认值:2

HealthCheckPath

String

健康检查路径。

长度为 1~80 个字符,只能使用大小写英文字母、数字和短划线(-)、正斜线(/)、半角句号(.)、百分号(%)、半角问号(?)、井号(#)和 and(&)以及扩展字符集_;~!()*[]@$^:',+=

必须以正斜线(/)开头。

说明

仅 HealthCheckProtocol 为 HTTP 时,该参数生效。

HealthCheckProtocol

String

健康检查协议。

取值:

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

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

HealthCheckConnectTimeout

Integer

健康检查响应的最大超时时间。

单位:秒。

取值范围:1~300

默认值:5

HealthCheckDomain

String

用于健康检查的域名。

取值:

  • $SERVER_IP(默认值):使用后端服务器内网 IP。

  • domain:指定特定域名。长度限制 1~80 个字符,只能使用大小写字母、数字、短划线(-)、半角句号(.)。

说明

仅 HealthCheckProtocol 为 HTTP 时,该参数生效。

HealthCheckEnabled

Boolean

是否开启健康检查。

取值:

  • true(默认值):开启。

  • false:关闭。

HealthCheckHttpCode

List

健康状态返回码列表。

健康状态返回码, 取值:

  • http_2xx

  • http_3xx

  • http_4xx

  • http_5xx

说明

仅 HealthCheckProtocol 为 HTTP 时,该参数生效。

UnhealthyThreshold

Integer

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

取值范围:2~10

默认值:2

Servers语法

"Servers": [
  {
    "ServerType": String,
    "ServerId": String,
    "Port": Integer,
    "ServerIp": String
  }
]

Servers属性

属性名称

类型

必须

允许更新

描述

约束

ServerType

String

后端服务器类型。

取值:

  • Ecs:ECS 实例。

  • Eni:ENI 弹性网卡实例。

  • Eci:ECI 弹性容器。

  • Ip:Ip 地址。

ServerId

String

后端服务器 ID。

Port

Integer

后端服务器使用的端口。

取值:

  • 6081。

ServerIp

String

后端服务器 IP 地址。

Tags语法

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

Tags属性

属性名称

类型

必须

允许更新

描述

约束

Key

String

标签键。

Value

String

标签值。

返回值

Fn::GetAtt

  • ConnectionDrainConfig:连接优雅中断相关配置。

  • VpcId:专有网络 ID。

  • ResourceGroupId:资源组 ID。

  • Scheduler:调度算法。

  • CreateTime:资源创建时间

  • ServerGroupId:服务器组 ID。

  • HealthCheckConfig:健康检查相关配置。

  • Protocol:后端转发协议。

  • Servers:后端服务器列表。

  • ServerGroupType:服务器组类型。

  • Tags:自定义标签列表。

  • ServerGroupName:服务器组名称。

示例

ROSTemplateFormatVersion: '2015-09-01'
Parameters:
  VpcId:
    AssociationProperty: ALIYUN::ECS::VPC::VPCId
    Type: String
    Description:
      en: |-
        The VPC instance ID.
        > If the value of ServerGroupType is Instance, only servers in the VPC can be added to the server group.
    Required: true
Resources:
  ExtensionResource:
    Type: ALIYUN::GWLB::ServerGroup
    Properties:
      VpcId:
        Ref: VpcId
Outputs:
  ConnectionDrainConfig:
    Description: Connected graceful interrupt configuration.
    Value:
      Fn::GetAtt:
        - ExtensionResource
        - ConnectionDrainConfig
  VpcId:
    Description: The VPC instance ID.
    Value:
      Fn::GetAtt:
        - ExtensionResource
        - VpcId
  ResourceGroupId:
    Description: The ID of the resource group.
    Value:
      Fn::GetAtt:
        - ExtensionResource
        - ResourceGroupId
  Scheduler:
    Description: Scheduling algorithm.
    Value:
      Fn::GetAtt:
        - ExtensionResource
        - Scheduler
  CreateTime:
    Description: The creation time of the server group.
    Value:
      Fn::GetAtt:
        - ExtensionResource
        - CreateTime
  ServerGroupId:
    Description: The server group ID.
    Value:
      Fn::GetAtt:
        - ExtensionResource
        - ServerGroupId
  HealthCheckConfig:
    Description: Health check configurations.
    Value:
      Fn::GetAtt:
        - ExtensionResource
        - HealthCheckConfig
  Protocol:
    Description: Backend Protocol.
    Value:
      Fn::GetAtt:
        - ExtensionResource
        - Protocol
  Servers:
    Description: List of servers.
    Value:
      Fn::GetAtt:
        - ExtensionResource
        - Servers
  ServerGroupType:
    Description: The server group type.
    Value:
      Fn::GetAtt:
        - ExtensionResource
        - ServerGroupType
  Tags:
    Description: List of resource tags.
    Value:
      Fn::GetAtt:
        - ExtensionResource
        - Tags
  ServerGroupName:
    Description: The server group name.
    Value:
      Fn::GetAtt:
        - ExtensionResource
        - ServerGroupName
{
  "ROSTemplateFormatVersion": "2015-09-01",
  "Parameters": {
    "VpcId": {
      "AssociationProperty": "ALIYUN::ECS::VPC::VPCId",
      "Type": "String",
      "Description": {
        "en": "The VPC instance ID.\n> If the value of ServerGroupType is Instance, only servers in the VPC can be added to the server group."
      },
      "Required": true
    }
  },
  "Resources": {
    "ExtensionResource": {
      "Type": "ALIYUN::GWLB::ServerGroup",
      "Properties": {
        "VpcId": {
          "Ref": "VpcId"
        }
      }
    }
  },
  "Outputs": {
    "ConnectionDrainConfig": {
      "Description": "Connected graceful interrupt configuration.",
      "Value": {
        "Fn::GetAtt": [
          "ExtensionResource",
          "ConnectionDrainConfig"
        ]
      }
    },
    "VpcId": {
      "Description": "The VPC instance ID.",
      "Value": {
        "Fn::GetAtt": [
          "ExtensionResource",
          "VpcId"
        ]
      }
    },
    "ResourceGroupId": {
      "Description": "The ID of the resource group.",
      "Value": {
        "Fn::GetAtt": [
          "ExtensionResource",
          "ResourceGroupId"
        ]
      }
    },
    "Scheduler": {
      "Description": "Scheduling algorithm.",
      "Value": {
        "Fn::GetAtt": [
          "ExtensionResource",
          "Scheduler"
        ]
      }
    },
    "CreateTime": {
      "Description": "The creation time of the server group.",
      "Value": {
        "Fn::GetAtt": [
          "ExtensionResource",
          "CreateTime"
        ]
      }
    },
    "ServerGroupId": {
      "Description": "The server group ID.",
      "Value": {
        "Fn::GetAtt": [
          "ExtensionResource",
          "ServerGroupId"
        ]
      }
    },
    "HealthCheckConfig": {
      "Description": "Health check configurations.",
      "Value": {
        "Fn::GetAtt": [
          "ExtensionResource",
          "HealthCheckConfig"
        ]
      }
    },
    "Protocol": {
      "Description": "Backend Protocol.",
      "Value": {
        "Fn::GetAtt": [
          "ExtensionResource",
          "Protocol"
        ]
      }
    },
    "Servers": {
      "Description": "List of servers.",
      "Value": {
        "Fn::GetAtt": [
          "ExtensionResource",
          "Servers"
        ]
      }
    },
    "ServerGroupType": {
      "Description": "The server group type.",
      "Value": {
        "Fn::GetAtt": [
          "ExtensionResource",
          "ServerGroupType"
        ]
      }
    },
    "Tags": {
      "Description": "List of resource tags.",
      "Value": {
        "Fn::GetAtt": [
          "ExtensionResource",
          "Tags"
        ]
      }
    },
    "ServerGroupName": {
      "Description": "The server group name.",
      "Value": {
        "Fn::GetAtt": [
          "ExtensionResource",
          "ServerGroupName"
        ]
      }
    }
  }
}