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服务。
前提条件
步骤一:创建服务器组并添加后端服务器
在顶部菜单栏处,选择所属的地域。
在左侧导航栏,选择
。在服务器组页面,单击创建服务器组。
在创建服务器组对话框中,完成以下配置。完成后单击创建。
此处仅列出和本文强相关的配置项,其他未列出的配置项可使用默认值或自行配置。
配置
说明
服务器组类型
选择一种服务器组类型。本文选择服务器类型。
VPC
从VPC下拉列表中选择ALB所属的VPC,只有该VPC下的服务器可以加入到该服务器组。
选择后端协议
本文选择gRPC。
开启健康检查
本文选择开启健康检查。
健康检查配置
单击编辑,修改健康检查配置信息:
健康检查协议:本文选择gRPC。
健康检查方法:本文选择POST。
健康状态返回码:选择健康检查正常的状态码,需要与后端gRPC服务配置一致。本文示例为
12
。
在服务器组页面找到目标服务器组,单击其实例ID。
单击后端服务器页签,然后单击添加后端服务器。
在添加后端服务器面板,选择已创建的ECS实例,然后单击下一步。
在配置端口和权重配置向导,设置ECS的端口和权重,然后单击确定。
说明此处ECS配置的端口必须要与实际部署的gRPC服务设置的端口保持一致。同时注意安全组规则需要放行相关端口。
步骤二:配置HTTPS监听
在顶部菜单栏,选择实例所属的地域。
在左侧导航栏,选择实例。
在实例页面,找到目标实例,然后在操作列单击创建监听。
在配置监听页面配置以下信息,其他参数可保持默认值或根据实际情况修改。完成后单击下一步。
配置
说明
选择监听协议
选择HTTPS。
监听端口
本文配置端口443。
说明服务器组设置后端协议为gRPC时,监听协议类型只支持HTTPS。
gRPC基于HTTP/2协议进行通信,服务器组设置后端协议为gRPC时,HTTPS监听必须开启HTTP2.0。ALB默认启用该功能,需要确保启用HTTP2.0功能为已开启,请勿关闭。
在配置SSL证书页面配置以下信息,其他参数可保持默认值或根据实际情况修改。完成后单击下一步。
配置
说明
选择服务器证书
选择准备的SSL证书。
在选择服务器组页面配置以下信息,其他参数可保持默认值或根据实际情况修改。完成后单击下一步。
配置
说明
选择服务器组
选择此前已创建好的gRPC服务器组。
在配置审核页面,检查配置参数是否有误,无误的话单击提交,等待监听创建完成。
步骤三:配置域名解析
在顶部菜单栏选择地域。
选择要进行域名解析的ALB实例,复制其对应的DNS名称。
完成以下步骤来添加CNAME解析记录。
登录域名解析控制台。
在域名解析页面单击添加域名。
在添加域名对话框中输入您的主机域名,然后单击确认。
重要您的主机域名需已完成TXT记录验证。
在目标域名的操作列单击解析设置。
在解析设置页面单击添加记录。
在添加记录面板配置以下信息完成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。