使用Terraform可以快速完成等候室配置,通过流量排队机制保护源站免受突发流量冲击。
安装Terraform并配置权限
在本地安装和配置Terraform
您可以参考安装和配置Terraform,在本地使用Terraform。
由于阿里云账号(主账号)拥有资源的所有权限,其AccessKey一旦泄露风险巨大,所以建议您使用满足最小化权限需求的RAM用户的AccessKey。具体操作方式请参见创建AccessKey。
创建环境变量,用于存放身份认证信息。
在AccessKey管理页面上创建和查看您的AccessKey。
若无对应环境变量,在执行terraform模板时无法确认身份信息,将会导致调用失败。
使用在线服务(免安装和权限配置)
如果您不想安装Terraform,可以直接使用在线服务Cloud Shell。
阿里云Cloud Shell是一款帮助您运维的免费产品,预装了Terraform的组件,并配置好身份凭证(Credentials)。因此您可直接在Cloud Shell中运行Terraform的命令。更多信息,请参见使用Terraform快速创建资源。
通过Cloud Shell使用Terraform时,由于其销毁特性会导致数据丢失,因此建议您使用Cloud Shell做简单、快速的操作,例如调试。更多使用限制,请参见使用限制。
涉及的资源
创建站点:alicloud_esa_site
查询ESA实例:alicloud_esa_sites
配置等候室
创建一个名为
main.tf的配置文件,然后将以下代码复制到配置文件中,用于配置等候室。# 1. 查询企业版 ESA 实例 data "alicloud_esa_sites" "default" { plan_subscribe_type = "enterpriseplan" # 筛选企业版实例 } # 2. 创建站点 resource "alicloud_esa_site" "resource_Site_example" { site_name = "{{DOMAIN}}" # 替换为实际域名,如 example.com instance_id = data.alicloud_esa_sites.default.sites.0.instance_id coverage = "overseas" # 海外加速 access_type = "NS" # NS 接入方式 } # 3. 创建等候室 resource "alicloud_esa_waiting_room" "default" { site_id = alicloud_esa_site.resource_Site_example.id waiting_room_name = "waitingroom_example" # 等候室名称 description = "example" status = "off" # 创建后默认关闭,需手动开启 waiting_room_type = "default" # 排队策略配置 queuing_method = "fifo" # 先进先出排队算法 session_duration = "5" # 会话时长(分钟) total_active_users = "300" # 最大并发用户数 new_users_per_minute = "200" # 每分钟放行人数 # 匹配规则:触发排队的条件 host_name_and_path { domain = "sub_domain.com" # 主域名 path = "/example" # 路径匹配 subdomain = "example_sub_domain.com." # 子域名 } # 页面显示配置 language = "zhcn" # 排队页面语言:简体中文 custom_page_html = "" # 空表示使用默认排队页面 queuing_status_code = "200" # 排队时返回的HTTP状态码 cookie_name = "__aliwaitingroom_example" # Cookie名称 # 高级选项 queue_all_enable = "off" # 是否全员排队 disable_session_renewal_enable = "off" # 是否禁用会话续期 json_response_enable = "off" # 是否返回JSON响应 }说明请根据实际情况修改代码中的占位符:将
DOMAIN替换为您的实际域名,将host_name_and_path中的域名和路径替换为实际触发排队的条件。关键参数说明请参见本文末尾的相关参考章节。进入配置文件所在目录,执行如下命令,初始化Terraform环境。
terraform init执行如下命令,验证Terraform语法与配置。
terraform validate执行如下命令,预览执行结果。
terraform plan执行如下命令,执行Terraform脚本。
terraform apply依据提示输入
yes确认执行即可。
验证结果
执行terraform show命令
在 terraform apply 成功后、清理资源前,可在工作目录执行以下命令核对资源状态。
terraform show登录控制台查看
在ESA控制台选择站点管理,在站点列单击目标站点。
在左侧导航栏,选择。
在等候室页面可以看到新创建的等候室规则,包括等候室名称、状态、排队策略、会话时长、并发限制等配置信息。
相关参考
本文代码示例中关键参数的说明如下:
参数名称 | 示例值 | 说明 |
|
| 筛选企业版ESA实例,用于获取可用的实例ID。 |
|
| 站点域名。替换为您的实际域名,如 |
|
| 等候室名称,在控制台显示的标识名称。 |
|
| 等候室运行状态。 |
|
| 排队算法。 |
|
| 会话时长(分钟)。用户获得通行资格后的有效时间,在此期间刷新页面无需重新排队。 |
|
| 总活跃用户上限。系统允许的最大并发数(包含正在排队和已放行的用户),超过此数新用户进入队列。 |
|
| 每分钟放行人数。流量整型速率,每分钟最多允许该数量的新用户从队列进入源站,防止源站瞬间过载。 |
|
| 匹配的主域名。只有访问该域名的请求才会触发排队。 |
|
| 匹配的路径。只有访问该路径的请求才会触发排队。 |
|
| 匹配的子域名。可选配置,用于更精确的匹配条件。 |
|
| 排队页面语言。 |
|
| 自定义排队页面HTML代码。为空表示使用默认排队页面模板,可填入HTML代码展示品牌化排队页。 |
|
| 用户处于排队状态时返回的HTTP状态码。设为 |
|
| 用于标识用户排队位置和会话状态的Cookie名称。 |
|
| 全员排队开关。 |
|
| 禁用会话续期开关。 |
|
| JSON响应模式。 |
更多参数说明,请参见alicloud_esa_waiting_room。
不同套餐的支持情况
目前等候室功能仅高级版和企业版套餐支持。部分功能需要您在企业版基础上联系我们开通等候室Pro版进行升级或使用。
功能项 | 高级版 | 企业版 |
等候室基础功能 | ||
等候室数量 | 1个 | 默认支持1个,开通等候室Pro版以后可以支持最大10个。 |
配置多个主机名和路径 | 默认支持1个,开通等候室Pro版以后可以支持最大50个。 | |
自定义模板 | 开通等候室Pro版以后可以支持。 | |
禁用会话续订 | 开通等候室Pro版以后可以支持。 | |
JSON友好响应 | 开通等候室Pro版以后可以支持。 | |
自定义队列状态代码 | ||
排队方法 | 仅支持FIFO方式 | 默认支持FIFO模式,开通等候室Pro版以后支持所有排队方式。 |
等候室规则 | 开通等候室Pro版以后可以支持最大5条。 | |
等候室事件 | 开通等候室Pro版以后可以支持最大5个。 | |
SEO爬虫旁路 |