全部产品
Search
文档中心

负载均衡:使用ALB实现gRPC协议的负载均衡

更新时间:Feb 28, 2024

gRPC是一种高性能、开源的远程过程调用框架,当您使用gRPC进行后端服务通信时,您可使用应用型负载均衡ALB(Application Load Balancer)实现gRPC协议的负载均衡,统一流量入口。gRPC基于HTTP/2协议进行通信,目前ALB仅支持前端加密(通过HTTPS监听)和后端明文(服务器组后端协议为gRPC)的形态。

背景信息

gRPC是一种高性能、开源的远程过程调用框架,它使用Protocol Buffers作为接口定义语言(IDL)和基于HTTP/2协议进行通信。

gRPC用于构建分布式系统中的服务通信。它解决了不同服务之间的跨语言通信问题,并提供了强大的IDL和自动生成的代码,使得开发人员可以方便地定义和调用远程服务。同时,gRPC具有高性能、低延迟和高效的数据传输,通过采用二进制编码和HTTP/2的多路复用特性,提供了快速、可靠的远程调用体验。

gRPC适用于微服务架构、跨语言通信、大规模分布式系统等场景。特别是在需要高性能和低延迟的场景下,gRPC能够提供卓越的效能。它还支持多种调用方式,如简单调用、流式请求和响应、双向流等,可以灵活地满足不同业务需求。

关于gRPC的更多信息,可参考gRPC官方文档

场景示例

某公司在华东1(杭州)地域的专有网络VPC(Virtual Private Cloud)内部署了gRPC服务,在VPC中创建了ALB实例和支持gRPC协议的后端服务器组,ALB配置了HTTPS监听并打开HTTP2.0开关,同时后端服务器组配置了gRPC协议的健康检查。

客户端需要通过ALB实例来访问VPC中部署的gRPC服务。

image

前提条件

步骤一:创建服务器组并添加后端服务器

  1. 登录应用型负载均衡ALB控制台

  2. 在顶部菜单栏处,选择所属的地域。

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

  4. 服务器组页面,单击创建服务器组

  5. 创建服务器组对话框中,完成以下配置。完成后单击创建

    此处仅列出和本文强相关的配置项,其他未列出的配置项可使用默认值或自行配置。

    配置

    说明

    服务器组类型

    选择一种服务器组类型。本文选择服务器类型

    VPC

    从VPC下拉列表中选择ALB所属的VPC,只有该VPC下的服务器可以加入到该服务器组。

    选择后端协议

    本文选择gRPC

    开启健康检查

    本文选择开启健康检查。

    健康检查配置

    单击编辑,修改健康检查配置信息:

    • 健康检查协议:本文选择gRPC

    • 健康检查方法:本文选择POST

    • 健康状态返回码:选择健康检查正常的状态码,需要与后端gRPC服务配置一致。本文示例为12

  6. 服务器组页面找到目标服务器组,单击其实例ID。

  7. 单击后端服务器页签,然后单击添加后端服务器

  8. 添加后端服务器面板,选择已创建的ECS实例,然后单击下一步

  9. 配置端口和权重配置向导,设置ECS的端口和权重,然后单击确定

    说明

    此处ECS配置的端口必须要与实际部署的gRPC服务设置的端口保持一致。同时注意安全组规则需要放行相关端口。

步骤二:配置HTTPS监听

  1. 登录应用型负载均衡ALB控制台

  2. 在顶部菜单栏,选择实例所属的地域。

  3. 在左侧导航栏,选择实例

  4. 实例页面,找到目标实例,然后在操作列单击创建监听

  5. 配置监听页面配置以下信息,其他参数可保持默认值或根据实际情况修改。完成后单击下一步

    配置

    说明

    选择监听协议

    选择HTTPS

    监听端口

    本文配置端口443。

    说明
    • 服务器组设置后端协议为gRPC时,监听协议类型只支持HTTPS。

    • gRPC基于HTTP/2协议进行通信,服务器组设置后端协议为gRPC时,HTTPS监听必须开启HTTP2.0。ALB默认启用该功能,需要确保启用HTTP2.0功能为已开启,请勿关闭。

  6. 配置SSL证书页面配置以下信息,其他参数可保持默认值或根据实际情况修改。完成后单击下一步

    配置

    说明

    选择服务器证书

    选择准备的SSL证书。

  7. 选择服务器组页面配置以下信息,其他参数可保持默认值或根据实际情况修改。完成后单击下一步

    配置

    说明

    选择服务器组

    选择此前已创建好的gRPC服务器组。

  8. 配置审核页面,检查配置参数是否有误,无误的话单击提交,等待监听创建完成。

步骤三:配置域名解析

  1. 登录应用型负载均衡ALB控制台

  2. 在顶部菜单栏选择地域。

  3. 选择要进行域名解析的ALB实例,复制其对应的DNS名称。

  4. 完成以下步骤来添加CNAME解析记录。

    1. 登录域名解析控制台

    2. 域名解析页面单击添加域名

    3. 添加域名对话框中输入您的主机域名,然后单击确认

      重要

      您的主机域名需已完成TXT记录验证。

    4. 在目标域名的操作列单击解析设置

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

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

      配置

      说明

      记录类型

      在下拉列表中选择CNAME

      主机记录

      您的域名的前缀。

      解析请求来源

      选择默认。

      记录值

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

      TTL

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

步骤四:验证连通性

完成上述操作后,客户端可以通过ALB访问部署了gRPC服务的后端服务器,以下内容为您展示如何测试客户端和gRPC服务之间的连通性。

说明

浏览器无法直接访问gRPC服务。建议您通过grpcurl工具之类的测试工具验证访问。

在客户端中执行grpcurl -insecure -v <自定义域名或ALB域名>:<监听端口> <gRPC服务名称>/<方法>命令尝试访问ECS中的gRPC服务。

如果收到类似下图所示的回复报文,则表示客户端可以通过ALB访问部署了gRPC服务的后端服务器ECS。测试结果

相关文档