使用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。
不同套餐的支援情況
目前等候室功能僅Premium和Enterprise套餐支援。部分功能需要您在企業版基礎上聯絡我們開通等候室Pro版進行升級或使用。
功能項 | Entrance | Pro | Premium | Enterprise |
等候室基礎功能 | ||||
等候室數量 | 1個 | 預設支援1個,開通等候室Pro版以後可以支援最大10個。 | ||
配置多個主機名稱和路徑 | 預設支援1個,開通等候室Pro版以後可以支援最大50個。 | |||
自訂模板 | 開通等候室Pro版以後可以支援。 | |||
禁用會話續訂 | 開通等候室Pro版以後可以支援。 | |||
JSON友好響應 | 開通等候室Pro版以後可以支援。 | |||
自訂隊列狀態碼 | ||||
排隊方法 | 僅支援FIFO方式 | 預設支援FIFO模式,開通等候室Pro版以後支援所有排隊方式。 | ||
等候室規則 | 開通等候室Pro版以後可以支援最大5條。 | |||
等候室事件 | 開通等候室Pro版以後可以支援最大5個。 | |||
SEO爬蟲旁路 |