使用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。

相关推荐
我不会插花弄玉12 小时前
6.传输层协议UDP【由浅入深-网络】
网络·网络协议·udp
火云代理12 小时前
更换网络后为什么会退出登录?分清 IP、Cookie 与会话的关系
服务器·网络·网络协议·tcp/ip·php·ip
xbzb15 小时前
容器 IP 每次重建都变?docker network 五种模式与自定义网桥固定地址
网络·docker·容器·ip·network·固定
火云代理16 小时前
同一个网站,有的网络能打开、有的打不开?认识 IPv4 与 IPv6 的访问差异
服务器·网络·网络协议·tcp/ip·测试工具·php·状态模式
坤坤子吖16 小时前
Linux网络编程:TCP 粘包与半包问题,如何正确处理 TCP 流式数据?
linux·服务器·网络·笔记·网络协议·学习
火云代理19 小时前
Python 使用代理 IP 前,先弄清 Requests 的配置来源与验证方法
网络·python·网络协议·tcp/ip·ip
如夏倾城19 小时前
QUIC——HTTP/3 的唯一底层传输协议 及 0-RTT恢复
网络·网络协议·tcp/ip·安全·http
科研邪修法21 小时前
培训PDF保护配置:把需求转换成可验收权限
linux·服务器·网络
略懂而已2 天前
安装SSL后网站速度变慢?
网络·网络协议·ssl