ALB添加函数计算FC作为后端服务

如果您使用阿里云函数计算(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函数计算类型服务器组仅支持添加一个函数作为后端服务器。

步骤一:创建函数计算服务

  1. 登录函数计算控制台

    重要

    如果您的控制台当前处于函数计算3.0版本页面,您可单击右上角返回函数计算2.0,返回函数计算2.0页面进行操作。

  2. 在左侧导航栏,单击服务及函数

  3. 在顶部菜单栏,选择所属地域。本文选择华东1(杭州)

  4. 服务列表页面,单击创建服务

  5. 创建服务面板,部分配置可参考以下信息,其余参数可保持默认,然后单击确定

    参数

    说明

    名称

    输入函数计算服务名称。

    长度为1~128个字符,只能包含字母、数字、下划线(_)和中划线(-),不能以数字、中划线(-)开头。

    描述

    输入函数计算服务描述。

    日志功能

    是否启用阿里云日志服务。本文选择启用

    • 启用:启用后,函数计算会自动为您在日志服务创建对应的Project(日志项目)和Logstore(日志仓库),并自动把函数日志投递到相应的Logstore。

      此时,函数计算为您的服务授予基于最小权限原则创建的AliyunFCDefaultRole,以访问日志服务。关于服务角色的更多信息,请参见授予函数计算访问其他云服务的权限

    • 禁用:函数的执行日志将无法通过日志服务存储和查询。

    说明

    请确保您已开通日志服务。否则,无法启用日志功能。

步骤二:创建函数

  1. 服务列表页面,在目标服务操作列单击函数管理

  2. 函数管理页面,单击创建函数

  3. 创建函数页面,按需选择创建函数的方式。

    本文选择使用内置运行时创建

  4. 基本设置函数代码触发器配置区域,配置以下参数信息,然后单击创建

    此处仅列出和本文强相关的配置项,其余未列出的参数保持默认值。

    参数

    操作

    基本设置

    函数名称

    填写自定义的函数名称。

    请求处理程序类型

    选择请求处理程序类型。本文选择处理 HTTP 请求

    请求处理程序类型:用于处理HTTP请求或Websocket请求的函数。

    说明

    负载均衡ALB仅支持通过HTTP请求触发函数。

    函数代码

    运行环境

    选择运行环境。本文选择Node.js 14

    关于函数计算支持的运行环境,请参见管理函数

    代码上传方式

    选择上传函数代码到函数计算的方式。

    本文选择使用示例代码

    触发器配置

    触发器类型

    显示当前选择的触发器类型:HTTP触发器

    触发器是触发函数执行的方式。

    名称

    输入触发器的名称。

    请求方法

    选择触发该HTTP触发器的方法。本文选择GETPOST

    认证方式

    本文选择签名认证。更多信息,请参见签名认证

  5. 函数代码页签,在代码编辑器中修改代码。

    代码修改示例如下。

    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!"), 
    }
  6. 函数代码页签,在左上角单击部署代码,然后单击测试函数

    执行完成后,您可以在返回结果区域查看函数运行结果。更多操作,请参见快速创建函数

步骤三:创建函数计算类型的服务器组

  1. 登录应用型负载均衡ALB控制台
  2. 在顶部菜单栏选择所属地域。本文选择华东1(杭州)

  3. 在左侧导航栏,选择应用型负载均衡 ALB > 服务器组

  4. 服务器组页面,单击创建服务器组,完成以下配置,然后单击创建

    参数

    说明

    服务器组类型

    选择服务器组类型。本文选择函数计算类型

    服务器组名称

    输入服务器组名称。

    配置健康检查

    健康检查

    开启或关闭健康检查。本文保持默认配置,即关闭健康检查。

  5. 服务器组页面,找到目标服务器组,然后在操作列单击编辑后端服务器

  6. 后端服务器页签,单击设置函数计算

  7. 添加后端服务器面板,选择以下任意一种方式完成参数配置,然后单击确定

    • 通过选择资源

      参数

      描述

      配置方式

      在下拉列表中选择通过选择资源

      服务

      选择步骤一中创建的函数计算服务。

      版本

      选择LATEST。新创建的服务,默认只有一个LATEST版本。

      函数

      在下拉列表中选择您已创建的函数。如果没有可用的函数,请单击创建新函数,然后按照页面提示新建函数。具体操作,请参见管理函数

      描述

      输入描述信息。

    • 通过ARN配置

      参数

      描述

      配置方式

      在下拉列表中选择通过ARN配置

      ARN

      输入目标函数的ARN。

      您可以在函数计算控制台的函数详情页面,复制函数ARN。具体操作, 请参见获取函数ARN

      描述

      输入描述信息。

步骤四:创建ALB实例并配置监听

  1. 登录应用型负载均衡ALB控制台
  2. 在顶部菜单栏选择所属地域。本文选择华东1(杭州)

  3. 实例页面,单击创建应用型负载均衡

  4. 应用型负载均衡(按量付费)购买页面,完成参数配置。

    此处仅列出和本文强相关的配置项。关于其余参数的配置,请参见创建应用型负载均衡

    • 地域:本文选择华东1(杭州)

    • 实例网络类型:本文选择公网

  5. 实例页面,找到已创建的ALB实例,在目标实例操作列下单击创建监听,然后打开监听配置向导。

  6. 配置监听配置向导,完成以下配置,然后单击下一步

    监听配置

    说明

    选择监听协议

    选择监听的协议类型。 本文选择HTTP

    监听端口

    输入用来接收请求并向后端服务器进行请求转发的监听端口,端口范围为1~65535。本文输入80

    监听名称

    自定义监听的名称。

    高级配置

    本文使用默认配置。

  7. 选择服务器组配置向导,在选择服务器组的下拉框选择函数计算类型,并选择步骤三创建的后端服务器组,然后单击下一步

  8. 配置审核配置向导,确认配置信息,单击提交

步骤五:设置域名解析

实际业务场景中,建议您使用自有域名,通过CNAME解析的方式将自有域名指向ALB实例域名。

  1. 在左侧导航栏,选择应用型负载均衡 ALB > 实例

  2. 实例页面,复制已创建的ALB实例的DNS名称。

  3. 执行以下步骤添加CNAME解析记录。

    说明

    对于非阿里云注册域名,需先将域名添加到云解析控制台,才可以进行域名解析设置。具体操作,请参见域名管理。如果您是阿里云注册的域名,请直接执行以下步骤。

    1. 登录域名解析控制台

    2. 权威域名解析页面,找到目标域名,在操作列单击解析设置

    3. 解析设置页面,单击添加记录

    4. 添加记录面板,配置以下信息完成CNAME解析配置,然后单击确定

      配置

      说明

      记录类型

      在下拉列表中选择CNAME

      主机记录

      您的域名的前缀。本文输入@

      说明

      创建域名为根域名时,主机记录为@

      解析请求来源

      选择默认。

      记录值

      输入域名对应的CNAME地址,即您复制的ALB实例的DNS名称。

      TTL

      全称Time To Live,表示DNS记录在DNS服务器上的缓存时间,本文使用默认值。

步骤六:连通性测试

完成上述操作后,ALB和函数计算已经建立了连接,您可以通过以下操作,测试ALB和函数计算的连通性。

  1. 打开命令行窗口,执行curl -v <域名>命令获取Date头域。

    函数计算要求HTTP访问请求头中包含Date头域。

    image

  2. 执行curl -H "Date头域" <域名>命令。

    如下图所示,收到如下所示的回复报文,则表示ALB可以将请求转发至函数计算并调用函数。image

相关文档

函数计算2.0相关:

ALB相关: