如果您使用阿里雲Function Compute(Function Compute,簡稱FC),並需要將Function Compute作為ALB後端服務來處理請求,您可以為ALB執行個體添加Function Compute類型的伺服器組。通過ALB和Function Compute的配置,實現ALB轉寄請求至Function Compute並調用函數,函數在運行完成後,Function Compute將運行結果作為響應返回給請求方。
當前ALBFunction Compute類型伺服器組僅支援Function Compute2.0版本,暫不支援Function Compute3.0版本。
本文所有涉及Function Compute的描述,均指代Function Compute2.0版本。
背景資訊
阿里雲Function Compute是事件驅動的全託管計算服務。通過Function Compute,您無需管理伺服器等基礎設施,只需編寫代碼並上傳。Function Compute會為您準備好計算資源,以彈性、可靠的方式運行您的代碼,並提供日誌查詢、效能監控、警示等功能。Function Compute是Serverless架構的一種形態,面向函數編程,基於事件驅動提供阿里雲雲端服務之間端到端的解決方案。藉助Function Compute,您可以快速構建任何類型的應用和服務,並且只需為任務實際消耗的資源付費。
建立完函數後,您可以通過ALB伺服器組和監聽的配置,將函數作為ALB的後端伺服器。當接收到訪問請求時,ALB會將請求內容轉寄給Function Compute並觸發函數調用,函數運行完成後,Function Compute將運行結果作為響應返回給請求方。
使用Function Compute服務前需要先開通Function Compute服務。
使用限制
ALB執行個體和函數屬於同一個地區。
Function Compute作為ALB後端伺服器時的使用限制:
僅支援建立處理HTTP請求的函數。
Function Compute要求用戶端在訪問函數時,HTTP要求標頭中包含Date頭域。Date頭域表示訊息發送的時間。
ALB使用Function Compute時的使用限制:一個ALBFunction Compute類型伺服器組僅支援添加一個函數作為後端伺服器。
步驟一:建立Function Compute服務
- 重要
如果您的控制台當前處於Function Compute3.0版本頁面,您可單擊右上方返回Function Compute2.0,返回Function Compute2.0頁面進行操作。
在左側導覽列,單擊服務及函數。
在頂部功能表列,選擇所屬地區。本文選擇華東1(杭州)。
在服務列表頁面,單擊建立服務。
在建立服務面板,部分配置可參考以下資訊,其餘參數可保持預設,然後單擊確定。
參數
說明
名稱
輸入Function Compute服務名稱。
長度為1~128個字元,只能包含字母、數字、底線(_)和中劃線(-),不能以數字、中劃線(-)開頭。
描述
輸入Function Compute服務描述。
日誌功能
是否啟用阿里雲Log Service。本文選擇啟用。
啟用:啟用後,Function Compute會自動為您在Log Service建立對應的Project(記錄項目)和Logstore(日誌倉庫),並自動把函數日誌投遞到相應的Logstore。
此時,Function Compute為您的服務授予基於最小許可權原則建立的
AliyunFCDefaultRole
,以訪問Log Service。關於服務角色的更多資訊,請參見授予Function Compute訪問其他雲端服務的許可權。禁用:函數的執行日誌將無法通過Log Service儲存和查詢。
說明請確保您已開通Log Service。否則,無法啟用日誌功能。
步驟二:建立函數
在服務列表頁面,在目標服務操作列單擊函數管理。
在函數管理頁面,單擊建立函數。
在建立函數頁面,按需選擇建立函數的方式。
本文選擇使用內建運行時建立。
在基本設定、函數代碼和觸發器配置地區,配置以下參數資訊,然後單擊建立。
此處僅列出和本文強相關的配置項,其餘未列出的參數保持預設值。
參數
操作
基本設定
函數名稱
填寫自訂的函數名稱。
請求處理常式類型
選擇請求處理常式類型。本文選擇處理 HTTP 要求。
請求處理常式類型:用於處理HTTP請求或Websocket請求的函數。
說明負載平衡ALB僅支援通過HTTP請求觸發函數。
函數代碼
運行環境
選擇運行環境。本文選擇Node.js 14。
關於Function Compute支援的運行環境,請參見管理函數。
代碼上傳方式
選擇上傳函數代碼到Function Compute的方式。
本文選擇使用範例程式碼。
觸發器配置
觸發器類型
顯示當前選擇的觸發器類型:HTTP觸發器。
觸發器是觸發函數執行的方式。
名稱
輸入觸發器的名稱。
要求方法
選擇觸發該HTTP觸發器的方法。本文選擇GET和POST。
認證方式
本文選擇簽名認證。更多資訊,請參見簽名認證。
在函數代碼頁簽,在代碼編輯器中修改代碼。
代碼修改樣本如下。
varparams={ path : req.path, queries : req.queries, headers : req.headers, method : req.method, requestURI : req.url, clientIP : req.clientIP, log : ("Hello World.This is FC!"), }
在函數代碼頁簽,在左上方單擊部署代碼,然後單擊測試函數。
執行完成後,您可以在返回結果地區查看函數運行結果。更多操作,請參見快速建立函數。
步驟三:建立Function Compute類型的伺服器組
- 登入應用型負載平衡ALB控制台。
在頂部功能表列選擇所屬地區。本文選擇華東1(杭州)。
在左側導覽列,選擇 。
在伺服器組頁面,單擊建立伺服器組,完成以下配置,然後單擊建立。
參數
說明
伺服器群組類型
選擇伺服器群組類型。本文選擇Function Compute類型。
伺服器組名稱
輸入伺服器組名稱。
配置健全狀態檢查
健全狀態檢查
開啟或關閉健全狀態檢查。本文保持預設配置,即關閉健全狀態檢查。
在伺服器組頁面,找到目標伺服器組,然後在操作列單擊編輯後端伺服器。
在後端伺服器頁簽,單擊設定Function Compute。
在添加後端伺服器面板,選擇以下任意一種方式完成參數配置,然後單擊確定。
步驟四:建立ALB執行個體並配置監聽
- 登入應用型負載平衡ALB控制台。
在頂部功能表列選擇所屬地區。本文選擇華東1(杭州)。
在執行個體頁面,單擊建立應用型負載平衡。
在應用型負載平衡(隨用隨付)國際站購買頁面,完成參數配置。
此處僅列出和本文強相關的配置項。關於其餘參數的配置,請參見建立應用型負載平衡。
地區:本文選擇華東1(杭州)。
執行個體網路類型:本文選擇公網。
在執行個體頁面,找到已建立的ALB執行個體,在目標執行個體操作列下單擊建立監聽,然後開啟監聽設定精靈。
在配置監聽設定精靈,完成以下配置,然後單擊下一步。
監聽配置
說明
選擇監聽協議
選擇監聽的協議類型。 本文選擇HTTP。
監聽連接埠
輸入用來接收請求並向後端伺服器進行請求轉寄的監聽連接埠,連接埠範圍為1~65535。本文輸入80。
監聽名稱
自訂監聽的名稱。
進階配置
本文使用預設配置。
在選擇伺服器組設定精靈,在選擇伺服器組的下拉框選擇Function Compute類型,並選擇步驟三建立的後端伺服器組,然後單擊下一步。
在組態稽核設定精靈,確認配置資訊,單擊提交。
步驟五:設定網域名稱解析
實際業務情境中,建議您使用自有網域名稱,通過CNAME解析的方式將自有網域名稱指向ALB執行個體網域名稱。
在左側導覽列,選擇
在執行個體頁面,複製已建立的ALB執行個體的DNS名稱。
執行以下步驟添加CNAME解析記錄。
說明對於非阿里雲註冊網域名稱,需先將網域名稱添加到雲解析控制台,才可以進行網域名稱解析設定。具體操作,請參見網域名稱管理。如果您是阿里雲註冊的網域名稱,請直接執行以下步驟。
登入網域名稱解析控制台。
在權威網域名稱解析頁面,找到目標網域名稱,在操作列單擊解析設定。
在解析設定頁面,單擊添加記錄。
在添加記錄面板,配置以下資訊完成CNAME解析配置,然後單擊確定。
配置
說明
記錄類型
在下拉式清單中選擇CNAME。
主機記錄
您的網域名稱的首碼。本文輸入@。
說明建立網域名稱為根網域名稱時,主機記錄為
@
。解析請求來源
選擇預設。
記錄值
輸入欄位名對應的CNAME地址,即您複製的ALB執行個體的DNS名稱。
TTL
全稱Time To Live,表示DNS記錄在DNS伺服器上的緩衝時間,本文使用預設值。
步驟六:連通性測試
完成上述操作後,ALB和Function Compute已經建立了串連,您可以通過以下操作,測試ALB和Function Compute的連通性。
開啟命令列視窗,執行
curl -v <網域名稱>
命令擷取Date頭域。Function Compute要求HTTP訪問要求標頭中包含Date頭域。
執行
curl -H "Date頭域" <網域名稱>
命令。如下圖所示,收到如下所示的回複報文,則表示ALB可以將請求轉寄至Function Compute並調用函數。
相關文檔
Function Compute2.0相關:
關於Function Compute的更多資訊,請參見什麼是Function Compute。
關於更新函數,請參見管理函數。
關於刪除函數,請參見管理函數。
關於更新Function Compute服務,請參見更新服務。
關於刪除Function Compute服務,請參見管理服務。