全部產品
Search
文件中心

Server Load Balancer:添加HTTP監聽

更新時間:Mar 08, 2025

當您使用HTTP協議開發應用而無需加密通訊時,例如內部網路通訊、測試和開發環境或者非敏感資訊傳輸等情境,您可以為CLB執行個體添加HTTP監聽來轉寄來自HTTP協議的請求。

前提條件

您已經建立傳統型負載平衡CLB執行個體。具體操作,請參見建立和管理CLB執行個體

操作步驟

步驟一:配置監聽

  1. 登入傳統型負載平衡CLB控制台

  2. 選擇執行個體的地區。

  3. 選擇以下一種方法,開啟監聽設定精靈。

    • 執行個體管理頁面,找到目標執行個體,然後在操作列單擊監聽設定精靈

    • 執行個體管理頁面,單擊目標執行個體ID,然後在監聽頁簽單擊添加監聽

  4. 協議&監聽設定精靈,完成以下配置,然後單擊下一步

    監聽配置

    說明

    選擇監聽協議

    選擇監聽的協議類型。

    本文選擇HTTP

    後端協議

    當本文選擇的是HTTP協議時,後端協議HTTP

    監聽連接埠

    用來接收請求並向後端伺服器進行請求轉寄的監聽連接埠。連接埠範圍為1~65535。

    HTTP協議預設使用80連接埠。

    標籤

    選擇或輸入標籤鍵標籤值

    進階配置

    單擊修改展開進階配置。

    調度演算法

    支援選擇以下調度演算法,預設選擇輪詢 (RR)

    • 加權輪詢(WRR):權重值越高的後端伺服器,被輪詢到的次數(機率)也越高。

    • 輪詢(RR):按照訪問順序依次將外部請求分發到後端伺服器。

    調度演算法的詳細介紹及適用情境,請參見負載平衡調度演算法介紹

    監聽轉寄

    選擇是否將HTTP監聽的流量轉寄到HTTPS監聽。開啟後需要選擇目的HTTPS監聽。

    說明
    • 已建立的HTTP監聽不支援開啟監聽轉寄,您需要重新建立HTTP監聽並開啟監聽轉寄。

    • 如果開啟監聽轉寄,確保您已經建立了HTTPS監聽。具體操作,請參見教程使用CLB將HTTP訪問重新導向至HTTPS

    開啟會話保持

    預設關閉會話保持。

    開啟會話保持功能後,CLB會把來自同一用戶端的訪問請求分發到同一台後端伺服器上進行處理。HTTP協議會話保持基於Cookie。

    Cookie處理方式

    • 植入Cookie:您只需要指定Cookie的到期時間。

      用戶端第一次訪問時,負載平衡會在返回請求中植入Cookie(即在HTTP或HTTPS響應報文中插入ServerId),下次用戶端攜帶此Cookie訪問,負載平衡服務會將請求定向轉寄給之前記錄到的後端伺服器上。

      會話保持逾時時間:選擇植入Cookie時,輸入會話保持的逾時時間,

    • 重寫Cookie:可以根據需要指定HTTPS或HTTP響應中插入的Cookie。您需要在後端伺服器上維護該Cookie的到期時間和存留時間。

      負載平衡服務發現使用者自訂了Cookie,將會對原來的Cookie進行重寫,下次用戶端攜帶新的Cookie訪問,負載平衡服務會將請求定向轉寄給之前記錄到的後端伺服器。

      Cookie名稱:選擇重寫Cookie時,輸入Cookie名稱。

    啟用存取控制

    預設關閉存取控制。

    開啟存取控制後,選擇一種存取控制方式,並設定存取控制策略組,作為該監聽的白名單或黑名單。

    • 白名單:允許特定IP訪問Server Load Balancer,僅轉寄來自所選存取控制策略組中設定的IP地址或位址區段的請求,白名單適用於只允許特定IP訪問的情境。設定白名單存在一定業務風險。一旦設定白名單,就只有白名單中的IP可以訪問負載平衡監聽。

      如果開啟了白名單訪問,但存取原則組中沒有添加任何IP,則負載平衡監聽會轉寄全部請求。

    • 黑名單:禁止特定IP訪問Server Load Balancer,不會轉寄來自所選存取控制策略組中設定的IP地址或位址區段,黑名單適用於只限制某些特定IP訪問的情境。

      如果開啟了黑名單訪問,但存取原則組中沒有添加任何IP,則負載平衡監聽會轉寄全部請求。

    說明

    IPv6執行個體只能綁定IPv6存取控制策略組,IPv4執行個體只能綁定IPv4存取控制策略組。詳情參見建立存取控制策略組

    開啟監聽頻寬限速

    對於按頻寬計費的Server Load Balancer執行個體,您可以針對不同監聽設定不同的頻寬峰值來限定監聽的流量。執行個體下所有監聽的頻寬峰值總和不能超過該執行個體的頻寬。

    預設不開啟,各監聽共用執行個體的總頻寬,如何共用總頻寬,請參見CLB監聽共用執行個體頻寬

    重要
    • 如果公網CLB整體公網頻寬為5 Mbps,配置兩個監聽, 其中A監聽分配頻寬5 Mbps, B監聽沒有分配頻寬,則會出現B監聽連接埠訪問不通的情況,請謹慎分配頻寬。

    • 如果私網CLB配置三個監聽,A、B監聽共分配頻寬5120 Mbps,則剩下的C監聽會出現連接埠訪問不通的情況,請謹慎分配頻寬。

    • 使用流量計費方式的執行個體預設不限制頻寬峰值。

    串連空閑逾時時間

    CLB執行個體和用戶端之間的TCP串連在沒有資料轉送的情況下保持串連開啟的最長時間。預設取值範圍:1~60秒。

    在逾時時間內一直沒有訪問請求,負載平衡會暫時中斷當前串連,直到下一次請求來臨時重建立立新的串連。

    說明

    設定連線逾時時間後,該設定將應用於整個監聽,若需要為某個後端伺服器設定連線逾時時間,則應為此後端伺服器單獨配置監聽,並在新的監聽中設定連線逾時時間。

    串連請求逾時時間

    在逾時時間內後端伺服器一直沒有響應,負載平衡將放棄等待,給用戶端返回HTTP 504錯誤碼。

    預設取值範圍為1~180秒。

    Gzip資料壓縮

    開啟該配置對特定檔案類型進行壓縮,關閉該配置則不會對任何檔案類型進行壓縮。預設開啟Gzip資料壓縮。

    目前Gzip支援壓縮的類型包括:text/xmltext/plaintext/cssapplication/javascriptapplication/x-javascriptapplication/rss+xmlapplication/atom+xmlapplication/xml

    附加HTTP頭欄位

    選擇您要添加的自訂HTTP頭欄位:

    • 添加X-Forwarded-For頭欄位擷取用戶端真實IP。

      說明

      CLB七層監聽預設開啟通過X-Forwarded-For頭欄位擷取用戶端真實IP功能,不支援關閉,若通過此欄位擷取了多個IP地址,擷取的第一個地址就是用戶端真實IP。具體操作,請參見通過CLB七層監聽擷取用戶端真實IP

    • 添加SLB-ID頭欄位擷取Server Load Balancer執行個體的ID。

    • 添加SLB-IP頭欄位擷取Server Load Balancer執行個體IP地址。

    • 添加X-Forwarded-Proto頭欄位擷取負載平衡的監聽協議。

    擷取用戶端真實IP

    擷取來訪者的真實IP地址,預設開啟。

    建立完畢自動啟動監聽

    是否在監聽配置完成後啟動負載平衡監聽,預設開啟。

步驟二:添加後端伺服器

添加處理前端請求的後端伺服器。您可以使用執行個體配置的預設伺服器組,也可以為監聽配置一個虛擬伺服器組。更多資訊請參見CLB伺服器組。本文以預設後端伺服器組為例進行配置說明。

重要

HTTP監聽不支援添加主備伺服器組。

  1. 後端伺服器設定精靈,選擇預設伺服器組,單擊繼續添加

  2. 選擇伺服器設定精靈,選擇要添加的後端伺服器,單擊下一步

  3. 配置連接埠和權重設定精靈,設定權重,單擊添加

    說明
    • 權重預設為100,權重越高的後端伺服器將被分配到更多的訪問請求。

    • 權重設定為0的伺服器不會接受新請求。

  4. 配置後端伺服器(ECS執行個體)接收請求的連接埠,單擊下一步。連接埠範圍為1~65535。

    說明

    同一個Server Load Balancer執行個體內,後端伺服器連接埠可以相同。

步驟三:配置健全狀態檢查

CLB通過健全狀態檢查判斷後端伺服器的可用性,提升前端業務整體可用性,避免後端伺服器異常影響服務。

  1. 可選:健全狀態檢查設定精靈,單擊修改更改健全狀態檢查配置,單擊下一步具體請參見配置和管理CLB健全狀態檢查

  2. 組態稽核設定精靈中檢查監聽配置,單擊修改更改配置。

  3. 確認無誤後,單擊提交,配置成功後,單擊知道了

    配置成功後,您可以在頁面查看已建立的監聽。

常見問題

為什麼請求經過七層負載平衡轉寄後,後端伺服器的回應標頭中的某些參數會被刪除?

為了實現會話保持,負載平衡會修改後端伺服器回應標頭中的Date、Server、X-Pad和X-Accel-Redirect等參數值。

解決方案:

  • 在後端伺服器回應標頭中添加自訂報文頭部時,可以加入一個首碼(如xl-server或xl-date),以避開負載平衡的處理。

  • 將七層HTTP監聽改為四層TCP監聽。

為什麼在HTTP請求的頭部增加了Transfer-Encoding: chunked欄位?

現象:

將網域名稱解析到七層負載平衡的服務地址後,從本地主機訪問網域名稱時發現HTTP請求的頭部增加了一個Transfer-Encoding: chunked欄位,但是從本地主機直接存取後端伺服器時是沒有這個欄位的。

原因:

這是由於七層負載平衡基於Tengine反向 Proxy實現。Transfer-Encoding欄位表示Web伺服器如何對響應訊息體編碼,例如Transfer-Encoding: chunked表示Web伺服器對響應訊息體做了分塊傳輸。

說明

在四層負載平衡服務中,負載平衡僅轉寄流量,不存在該欄位。

怎麼配置CLB監聽以支援WebSocket協議?

CLB的HTTP監聽預設支援WebSocket協議。更多資訊,請參見CLB使用WebSocket協議實現資訊即時推送