在 Azure 应用服务上配置 gRPC

本文介绍如何为 gRPC 配置 Web 应用,这是一种远程过程调用框架,可以简化客户端和服务器之间的消息(通过 HTTP/2)。 通过 HTTP/2 使用 gRPC 协议,可以使用以下功能:

  • 多路复用,用于通过同一连接发送多个并行请求。
  • 双向流式处理,用于同时发送请求和响应。

Azure 应用服务 for Linux 上提供了对 gRPC 的支持。 若要在 Web 应用中使用 gRPC,可以通过选择 HTTP 版本、代理和端口来配置应用。

有关每个受支持的语言的 gRPC 客户端和服务器示例,请参阅 GitHub 上的应用服务上的 gRPC

先决条件

  • 在 Azure 应用服务中使用您首选的运行时环境的 Linux Web 应用

配置 gRPC

创建 Web 应用后,在部署应用程序之前,配置以下详细信息以启用 gRPC。

注意

如果要使用 Visual Studio 将 .NET gRPC 应用部署到应用服务,请跳到 配置 HTTP/2 端口,因为 Visual Studio 会为你设置 HTTP 版本和 HTTP 2.0 代理配置。

配置 HTTP 版本和 HTTP 2.0 代理

使用 Web 应用的 Azure 门户页配置应用的 HTTP 版本和代理。

  1. 在 Web 应用页面的左侧导航菜单中,选择 “设置>配置”。
  2. “堆栈设置”页的“常规设置”选项卡上,配置以下设置:
    • 对于 HTTP 版本,请选择 2.0
    • 对于 HTTP 2.0 代理仅选择 gRPC
  3. 选择应用

HTTP 版本设置会重启应用程序,并将前端配置为允许客户端进行 HTTP/2 调用。 HTTP 2.0 代理设置将站点配置为接收 HTTP/2 请求。

配置 HTTP/2 端口

除了 HTTP/1.1 流量外,App Service 还需要一个专门用于侦听 HTTP/2 流量的应用程序设置。 使用 应用设置 定义 HTTP/2 端口。

  1. 在 Web 应用页面的左侧导航菜单中,选择 “设置>环境变量”。
  2. 在“环境变量”页的“应用设置”选项卡上,选择“添加”。
  3. “添加/编辑应用程序设置” 屏幕上,添加以下应用设置:
    • 对于 名称,请输入 HTTP20_ONLY_PORT
    • 对于 ,请输入 8585
  4. 选择 “应用”,并确认应用程序可能在必要时重启。

此设置用于配置您的应用程序中侦听 HTTP/2 请求的端口。

配置 HTTP 版本、端口和代理后,可以使用 gRPC 成功对 Web 应用进行 HTTP/2 调用。

提供启动命令

对于 Python 应用程序,必须提供自定义启动命令。 对于其他语言,启动命令是可选的。

  1. 在 Web 应用页面的左侧导航菜单中,选择 “设置>配置”。
  2. “堆栈设置 ”页上,选择 “堆栈设置 ”选项卡。
  3. “启动”命令下,输入 python app.py
  4. 选择应用

要求和限制

以下要求和限制适用于应用服务的 gRPC 使用情况。

  • 应用服务环境版本。 应用服务环境 v2 不支持 gRPC。 使用应用服务环境 v3。
  • OS 支持。 可以在 Linux 上使用 gRPC。 Windows 支持目前为预览版。
  • 客户端证书。 应用服务上的 HTTP/2 不支持客户端证书。 使用 gRPC 时,必须忽略客户端证书。
  • 安全调用。 gRPC 必须对应用服务进行安全的 HTTP 调用。 您无法进行不安全的调用。
  • 活动超时。 应用程序服务中的 gRPC 请求具有超时限制。 在处于非活动状态 20 分钟后,gRPC 请求超时。
  • 自定义容器。 HTTP/2 和 gRPC 支持是对 Azure 应用服务 HTTP/1.1 支持的补充。 支持 HTTP/2 的自定义容器也必须支持 HTTP/1.1。