应用型负载均衡ALB(Application Load Balancer)支持添加函数计算类型的后端服务器。本文指导您如何通过ALB和函数计算(Function Compute,简称FC)的配置,实现ALB转发请求至函数计算并调用函数,函数运行完成后,函数计算将运行结果作为响应返回给请求方。

背景信息

阿里云函数计算是事件驱动的全托管计算服务。使用函数计算,您无需购买和管理服务器等基础设施,便可运行函数代码。创建完函数后,您可以通过ALB服务器组和监听的配置,将函数作为ALB的后端服务器。当接收到HTTP访问请求时,ALB会将请求内容转发给函数计算并触发函数调用,函数运行完成后,函数计算将运行结果作为响应返回给请求方。关于函数计算的更多信息,请参见什么是函数计算

使用限制

  • ALB实例和函数计算服务属于同一个地域。
  • 函数计算作为ALB后端服务器的使用限制:
    • 仅支持创建通过HTTP请求触发的函数。
    • 函数计算要求客户端在访问函数时,HTTP请求头中包含Date头域。Date头域表示消息发送的时间。
  • ALB使用函数计算的使用限制:
    • ALB中服务器组类型选择函数计算类型,且后端服务器组和监听仅支持HTTP协议。
    • ALB仅支持添加一个函数计算作为后端服务器。

前提条件

您已开通函数计算服务。具体操作,请参见开通函数计算服务

配置流程

配置流程

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

  1. 登录函数计算控制台
  2. 在左侧导航栏,单击服务及函数
  3. 在顶部菜单栏,选择所属地域。本文选择华东1(杭州)
  4. 服务列表页面,单击创建服务
  5. 创建服务面板,配置以下参数信息,然后单击确定
    参数 说明
    名称 输入函数计算服务名称。

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

    描述 输入函数计算服务描述。
    日志功能 是否启用阿里云日志服务。本文选择启用
    • 启用:启用后,函数计算会自动为您在日志服务创建对应的Project(日志项目)和Logstore(日志仓库),并自动把函数日志投递到相应的Logstore。

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

    • 禁用:函数的执行日志将无法通过日志服务存储和查询。
    说明 请确保您已开通日志服务。否则,无法启用日志功能。具体操作,请参见开通日志服务
    链路追踪功能 是否启用阿里云链路追踪功能。本文选择禁用
    • 启用:启用后,您可以使用分布式追踪系统Jaeger上传链路信息,使您能够跟踪函数的执行,帮助您快速分析和诊断Serverless架构下的性能瓶颈。更多信息,请参见链路追踪简介
    • 禁用:不启用链路追踪功能。

步骤二:创建函数

  1. 服务列表页面,在目标服务操作列单击函数管理
  2. 函数管理页面,单击创建函数
  3. 创建函数页面,按需选择创建函数的方式。
    本文选择从零开始创建
  4. 基本设置配置触发器区域,配置以下参数信息,然后单击创建
    参数 操作
    基本设置
    函数名称 填写自定义的函数名称。
    运行环境 选择运行环境。本文选择Node.js 12

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

    函数触发方式 选择函数触发方式。本文选择通过 HTTP 请求触发

    通过 HTTP 请求触发:通过发送HTTP请求触发函数执行,适用于快速构建Web服务等场景。

    说明 负载均衡ALB仅支持通过HTTP请求触发函数。
    实例类型 选择适合您的实例类型。本文选择弹性实例
    • 弹性实例
    • 性能实例
    更多信息,请参见实例类型及使用模式
    内存规格 设置函数执行内存。
    配置触发器
    触发器类型 显示当前选择的触发器类型:HTTP触发

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

    名称 输入触发器的名称。
    是否需要认证 是否需要身份验证及是否支持匿名访问。本文修改为
    • :需要身份验证,不支持匿名访问,ALB会对请求做身份验证,安全性较高。更多信息,请参见签名认证
    • :无需身份验证,支持匿名访问,安全性较低。支持任何用户发送HTTP请求调用函数。
    请求方法 选择触发该HTTP触发器的方法。本文选择GETPOST
  5. 单击函数代码页签,在代码编辑器中修改代码。
    代码修改示例如下。
    var params = {
        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. 服务器组页面,单击创建服务器组,完成以下配置,然后单击创建
    函数计算类型服务器组
    参数 说明
    服务器组类型 选择服务器组类型。本文选择函数计算类型
    服务器组名称 输入服务器组名称。长度为2~128个字符,必须以大小写字母或中文开头,可包含数字、半角句号(.)、下划线(_)和短划线(-)。
    选择后端协议 选择一种后端协议。本文选择HTTP
    选择资源组 选择归属的资源组。
    配置健康检查
    开启健康检查 开启或关闭健康检查。本文保持默认配置,即关闭健康检查。
    高级配置 如果您需要开启健康检查,请按需修改高级配置中的参数。更多信息,请参见管理服务器组
  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. 配置审核配置向导,确认配置信息,单击提交

步骤五:连通性测试

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

  1. 打开命令行窗口,执行curl - v命令获取Date头域。
    函数计算要求HTTP访问请求头中包含Date头域。
    curl -v <ALB实例域名>
    获取时间
  2. 执行curl - H命令,尝试访问ALB实例的域名。
    curl -H "Date头域" <ALB实例域名>
    如下图所示,收到如下所示的回复报文,则表示ALB可以将请求转发至函数计算并调用函数。ALB支持函数计算验证结果

更多操作

函数计算更多操作:
ALB更多操作: