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服务。
前提条件
-
已创建ALB实例。具体操作,请参见创建应用型负载均衡。
-
已准备后端服务器,并在服务器中部署了gRPC服务。关于gRPC服务部署方法,可参考gRPC官方文档。
-
已购买证书或者上传第三方证书到SSL证书服务并绑定域名。关于创建证书,请参见SSL证书快速上手。
步骤一:创建服务器组并添加后端服务器
-
在顶部菜单栏处,选择所属的地域。
-
在左侧导航栏,选择应用型负载均衡 ALB > 服务器组。
-
在服务器组 页面,单击创建服务器组。
-
在创建服务器组 对话框中,完成以下配置。完成后单击创建。
此处仅列出和本文强相关的配置项,其他未列出的配置项可使用默认值或自行配置。
|------------|-------------------------------------------------------------------------------------------------------------------------------------|
| 配置 | 说明 |
| 服务器组类型 | 选择一种服务器组类型。本文选择服务器类型。 |
| 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服务器组。 | -
在配置审核 页面,检查配置参数是否有误,无误的话单击提交,等待监听创建完成。
步骤三:配置域名解析
实际业务场景中,建议您使用自有域名,通过CNAME解析的方式将自有域名指向ALB实例域名。
-
在左侧导航栏,选择应用型负载均衡 ALB > 实例
-
在实例页面,复制已创建的ALB实例的DNS名称。
-
执行以下步骤添加CNAME解析记录。
说明
对于非阿里云注册域名,需先将域名添加到云解析控制台,才可以进行域名解析设置。具体操作,请参见域名管理。如果您是阿里云注册的域名,请直接执行以下步骤。
-
登录域名解析控制台。
-
在权威域名解析 页面,找到目标域名,在操作 列单击解析设置。
-
在解析设置 页面,单击添加记录。
-
在添加记录 面板,配置以下信息完成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。