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

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服务。

前提条件

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

  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. 配置审核 页面,检查配置参数是否有误,无误的话单击提交,等待监听创建完成。

步骤三:配置域名解析

实际业务场景中,建议您使用自有域名,通过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访问部署了gRPC服务的后端服务器,以下内容为您展示如何测试客户端和gRPC服务之间的连通性。

说明

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

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

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

相关推荐
网络安全Jack24 分钟前
网络安全概论——身份认证
网络·数据库·web安全
易我数据恢复大师26 分钟前
如何彻底删除电脑数据以防止隐私泄露
网络·电脑·数据删除·擦除
学习溢出1 小时前
【网络安全】逆向工程 练习示例
网络·安全·网络安全·渗透测试·逆向工程
_微风轻起2 小时前
linux下网络编程socket&select&epoll的底层实现原理
linux·网络
vortex53 小时前
Burp与其他安全工具联动及代理设置教程
网络·安全
xserver24 小时前
ensp 基于端口安全的财务部网络组建
网络·安全
从后端到QT5 小时前
boost asio 异步服务器
服务器·网络·tcp/ip
Blankspace学5 小时前
Wireshark软件下载安装及基础
网络·学习·测试工具·网络安全·wireshark
墨水\\6 小时前
Ansible部署及基础模块
服务器·网络·ansible