如果您使用阿里云函數計算(Function Compute,簡稱FC),并需要將函數計算作為ALB后端服務來處理請求,您可以為ALB實例添加函數計算類型的服務器組。通過ALB和函數計算的配置,實現ALB轉發請求至函數計算并調用函數,函數在運行完成后,函數計算將運行結果作為響應返回給請求方。
當前ALB函數計算類型服務器組僅支持函數計算2.0版本,暫不支持函數計算3.0版本。
本文所有涉及函數計算的描述,均指代函數計算2.0版本。
背景信息
阿里云函數計算是事件驅動的全托管計算服務。通過函數計算,您無需管理服務器等基礎設施,只需編寫代碼并上傳。函數計算會為您準備好計算資源,以彈性、可靠的方式運行您的代碼,并提供日志查詢、性能監控、報警等功能。函數計算是Serverless架構的一種形態,面向函數編程,基于事件驅動提供阿里云云服務之間端到端的解決方案。借助函數計算,您可以快速構建任何類型的應用和服務,并且只需為任務實際消耗的資源付費。
創建完函數后,您可以通過ALB服務器組和監聽的配置,將函數作為ALB的后端服務器。當接收到訪問請求時,ALB會將請求內容轉發給函數計算并觸發函數調用,函數運行完成后,函數計算將運行結果作為響應返回給請求方。
使用函數計算服務前需要先開通函數計算服務。
使用限制
ALB實例和函數屬于同一個地域。
函數計算作為ALB后端服務器時的使用限制:
僅支持創建處理HTTP請求的函數。
函數計算要求客戶端在訪問函數時,HTTP請求頭中包含Date頭域。Date頭域表示消息發送的時間。
ALB使用函數計算時的使用限制:一個ALB函數計算類型服務器組僅支持添加一個函數作為后端服務器。
步驟一:創建函數計算服務
登錄函數計算控制臺。
重要如果您的控制臺當前處于函數計算3.0版本頁面,您可單擊右上角返回函數計算2.0,返回函數計算2.0頁面進行操作。
在左側導航欄,單擊服務及函數。
在頂部菜單欄,選擇所屬地域。本文選擇華東1(杭州)。
在服務列表頁面,單擊創建服務。
在創建服務面板,部分配置可參考以下信息,其余參數可保持默認,然后單擊確定。
參數
說明
名稱
輸入函數計算服務名稱。
長度為1~128個字符,只能包含字母、數字、下劃線(_)和中劃線(-),不能以數字、中劃線(-)開頭。
描述
輸入函數計算服務描述。
日志功能
是否啟用阿里云日志服務。本文選擇啟用。
啟用:啟用后,函數計算會自動為您在日志服務創建對應的Project(日志項目)和Logstore(日志倉庫),并自動把函數日志投遞到相應的Logstore。
此時,函數計算為您的服務授予基于最小權限原則創建的
AliyunFCDefaultRole
,以訪問日志服務。關于服務角色的更多信息,請參見授予函數計算訪問其他云服務的權限。禁用:函數的執行日志將無法通過日志服務存儲和查詢。
說明請確保您已開通日志服務。否則,無法啟用日志功能。
步驟二:創建函數
在服務列表頁面,在目標服務操作列單擊函數管理。
在函數管理頁面,單擊創建函數。
在創建函數頁面,按需選擇創建函數的方式。
本文選擇使用內置運行時創建。
在基本設置、函數代碼和觸發器配置區域,配置以下參數信息,然后單擊創建。
此處僅列出和本文強相關的配置項,其余未列出的參數保持默認值。
參數
操作
基本設置
函數名稱
填寫自定義的函數名稱。
請求處理程序類型
選擇請求處理程序類型。本文選擇處理 HTTP 請求。
請求處理程序類型:用于處理HTTP請求或Websocket請求的函數。
說明負載均衡ALB僅支持通過HTTP請求觸發函數。
函數代碼
運行環境
選擇運行環境。本文選擇Node.js 14。
關于函數計算支持的運行環境,請參見管理函數。
代碼上傳方式
選擇上傳函數代碼到函數計算的方式。
本文選擇使用示例代碼。
觸發器配置
觸發器類型
顯示當前選擇的觸發器類型: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!"), }
在函數代碼頁簽,在左上角單擊部署代碼,然后單擊測試函數。
執行完成后,您可以在返回結果區域查看函數運行結果。更多操作,請參見快速創建函數。
步驟三:創建函數計算類型的服務器組
- 登錄應用型負載均衡ALB控制臺。
在頂部菜單欄選擇所屬地域。本文選擇華東1(杭州)。
在左側導航欄,選擇 。
在服務器組頁面,單擊創建服務器組,完成以下配置,然后單擊創建。
參數
說明
服務器組類型
選擇服務器組類型。本文選擇函數計算類型。
服務器組名稱
輸入服務器組名稱。
配置健康檢查
健康檢查
開啟或關閉健康檢查。本文保持默認配置,即關閉健康檢查。
在服務器組頁面,找到目標服務器組,然后在操作列單擊編輯后端服務器。
在后端服務器頁簽,單擊設置函數計算。
在添加后端服務器面板,選擇以下任意一種方式完成參數配置,然后單擊確定。
步驟四:創建ALB實例并配置監聽
- 登錄應用型負載均衡ALB控制臺。
在頂部菜單欄選擇所屬地域。本文選擇華東1(杭州)。
在實例頁面,單擊創建應用型負載均衡。
在應用型負載均衡(按量付費)購買頁面,完成參數配置。
此處僅列出和本文強相關的配置項。關于其余參數的配置,請參見創建應用型負載均衡。
地域:本文選擇華東1(杭州)。
實例網絡類型:本文選擇公網。
在實例頁面,找到已創建的ALB實例,在目標實例操作列下單擊創建監聽,然后打開監聽配置向導。
在配置監聽配置向導,完成以下配置,然后單擊下一步。
監聽配置
說明
選擇監聽協議
選擇監聽的協議類型。 本文選擇HTTP。
監聽端口
輸入用來接收請求并向后端服務器進行請求轉發的監聽端口,端口范圍為1~65535。本文輸入80。
監聽名稱
自定義監聽的名稱。
高級配置
本文使用默認配置。
在選擇服務器組配置向導,在選擇服務器組的下拉框選擇函數計算類型,并選擇步驟三創建的后端服務器組,然后單擊下一步。
在配置審核配置向導,確認配置信息,單擊提交。
步驟五:設置域名解析
實際業務場景中,建議您使用自有域名,通過CNAME解析的方式將自有域名指向ALB實例域名。
在左側導航欄,選擇
在實例頁面,復制已創建的ALB實例的DNS名稱。
執行以下步驟添加CNAME解析記錄。
說明對于非阿里云注冊域名,需先將域名添加到云解析控制臺,才可以進行域名解析設置。具體操作,請參見域名管理。如果您是阿里云注冊的域名,請直接執行以下步驟。
登錄域名解析控制臺。
在權威域名解析頁面,找到目標域名,在操作列單擊解析設置。
在解析設置頁面,單擊添加記錄。
在添加記錄面板,配置以下信息完成CNAME解析配置,然后單擊確定。
配置
說明
記錄類型
在下拉列表中選擇CNAME。
主機記錄
您的域名的前綴。本文輸入@。
說明創建域名為根域名時,主機記錄為
@
。解析請求來源
選擇默認。
記錄值
輸入域名對應的CNAME地址,即您復制的ALB實例的DNS名稱。
TTL
全稱Time To Live,表示DNS記錄在DNS服務器上的緩存時間,本文使用默認值。
步驟六:連通性測試
完成上述操作后,ALB和函數計算已經建立了連接,您可以通過以下操作,測試ALB和函數計算的連通性。
打開命令行窗口,執行
curl -v <域名>
命令獲取Date頭域。函數計算要求HTTP訪問請求頭中包含Date頭域。
執行
curl -H "Date頭域" <域名>
命令。如下圖所示,收到如下所示的回復報文,則表示ALB可以將請求轉發至函數計算并調用函數。
相關文檔
函數計算2.0相關: