This content has been machine translated dynamically.
Dieser Inhalt ist eine maschinelle Übersetzung, die dynamisch erstellt wurde. (Haftungsausschluss)
Cet article a été traduit automatiquement de manière dynamique. (Clause de non responsabilité)
Este artículo lo ha traducido una máquina de forma dinámica. (Aviso legal)
此内容已经过机器动态翻译。 放弃
このコンテンツは動的に機械翻訳されています。免責事項
이 콘텐츠는 동적으로 기계 번역되었습니다. 책임 부인
Este texto foi traduzido automaticamente. (Aviso legal)
Questo contenuto è stato tradotto dinamicamente con traduzione automatica.(Esclusione di responsabilità))
This article has been machine translated.
Dieser Artikel wurde maschinell übersetzt. (Haftungsausschluss)
Ce article a été traduit automatiquement. (Clause de non responsabilité)
Este artículo ha sido traducido automáticamente. (Aviso legal)
この記事は機械翻訳されています.免責事項
이 기사는 기계 번역되었습니다.책임 부인
Este artigo foi traduzido automaticamente.(Aviso legal)
这篇文章已经过机器翻译.放弃
Questo articolo è stato tradotto automaticamente.(Esclusione di responsabilità))
Translation failed!
gRPC 桥接
当客户机通过 HTTP/1.1 协议发送请求时,Citrix ADC 设备支持通过 HTTP/1.1 协议桥接 gRPC 请求,该协议符合 gRPC 服务器通过 HTTP/2 协议进行桥接。同样,在反向桥接中,设备通过 HTTP/2 协议接收客户端 gRPC 请求,并根据 HTTP/1.1 协议的 gRPC 服务器对 gRPC 请求执行反向桥接。
gRPC 桥接的工作原理
在这种情况下,Citrix ADC 设备无缝桥接通过 HTTP/1.1 连接接收到的 gRPC 内容,并通过 HTTP/2 将其转发到后端 gRPC 服务器。
下图显示了组件在 gRPC 桥接配置中如何相互交互。
- 发送 gRPC 请求时,Citrix ADC 设备会检查连接是否为 HTTP/1.1 且内容类型是否为 application/grpc。HTTP/1.1 请求转换为以下伪标头。
- 在 HTTP/1.1 连接上接收 gRPC 请求时(如内容类型标头所示),ADC 设备通过 HTTP/2 将请求转换为 gRPC,如下所示:
:method: Method-name in HTTP/1.1 request
:path: Path is HTTP/1.1 request
content-type: application/grpc
<!--NeedCopy-->
- 根据策略评估,负载平衡虚拟服务器(将 gRPC 服务绑定到该服务器)终止请求或通过 HTTP/2 帧将其转发到后端 gRPC 服务器。
- 收到来自 gRPC 服务器的 HTTP/2 连接的响应时,设备会缓冲直到收到 HTTP/2 预告片,然后检查 GRPC 状态代码。如果是非零 gRPC 错误状态,则设备会查找映射 HTTP 状态代码并发送合适的 HTTP/1.1 错误响应。
使用 CLI 配置 gRPC 桥接
要配置 gRPC 桥接,必须完成以下步骤:
- 添加直接启用 HTTP/2 和 HTTP/2 的 HTTP 配置文件
- 在 HTTP 参数中启用全局后端 HTTP/2 支持
- 添加 SSL/HTTP 类型的负载平衡虚拟服务器并设置 HTTP 配置文件
- 为 gRPC 端点添加服务并设置 HTTP 配置文件
- 将 gRPC 端点服务绑定到负载平衡虚拟服务器
- 将 gRPC 状态代码映射到非零 gRPC 状态的 HTTP 响应
- 按时间和/或大小配置 gRPC 缓冲
添加直接启用 HTTP/2 和 HTTP/2 的 HTTP 配置文件
要开始配置,必须在 HTTP 配置文件中启用 HTTP/2 功能。如果客户端发送 HTTP 1.1 请求,则设备会桥接请求并将其转发到后端服务器。
在命令提示符下,键入:
add ns httpProfile <name> - http2 ( ENABLED | DISABLED ) [-http2Direct ( ENABLED | DISABLED )]
示例:
add ns httpProfile http2gRPC -http2Direct ENABLED -http2 ENABLED
在 HTTP 参数中启用全局后端 HTTP/2 支持
使用 Citrix ADC 命令行在服务器端全局启用 HTTP/2 支持。
在命令提示符下,键入:
set ns httpParam -http2ServerSide( ON | OFF )
示例:
set ns httpParam -http2ServerSide ON
添加 SSL/HTTP 类型的负载平衡虚拟服务器并设置 HTTP 配置文件
使用 Citrix ADC 命令界面添加负载平衡虚拟服务器
在命令提示符下,键入:
add lb vserver <name> <service type> [(<IP address>@ <port>)] [-httpProfileName <string>]
示例:
add lb vserver lb-grpc HTTP 10.10.10.10 80 -httpProfileName http2gRPC
注意:
如果您使用的是 SSL 类型的负载平衡虚拟服务器,则必须绑定服务器证书。有关详细信息,请参阅 绑定服务器证书 主
为 gRPC 端点添加服务并设置 HTTP 配置文件
使用 Citrix AD C 命令界面添加带有 HTTP 配置文件的 gRPC 服务。
在命令提示符下,键入:
add service <name> (<IP> | <serverName> ) <serviceType> <port> [-httpProfileName <string>]
示例:
add service svc-grpc 10.10.10.10 HTTP 80 -httpProfileName http2gRPC
将 gRPC 端点服务绑定到负载平衡虚拟服务器
使用 CLI 将 gRPC 端点服务绑定到负载平衡虚拟服务器。
在命令界面中,键入:
bind lb vserver <name> <serviceName>
示例:
bind lb vserver lb-grpc svc-grpc
在 HTTP/1.1 响应中将 gRPC 状态码映射到 HTTP 状态码
在 gRPC 桥接场景中,gRPC 服务使用 gRPC 状态代码响应请求。设备将 gRPC 状态代码映射到相应的 HTTP 响应代码和原因短语。映射是根据下表完成的。Citrix ADC 设备在向客户端发送 HTTP/1.1 响应时会发送 HTTP 状态码和原因短语。
gRPC 状态码 | HTTP 响应状态码 | HTTP 响应原因短语 |
---|---|---|
OK = 0 | 200 | 正常 |
CANCELLED = 1 | 499 | * |
未知 = 2 | 500 | 内部服务器错误 |
INVALID_ARGUMENT = 3 | 400 | 请求错误 |
DEADLINE_EXCEEDED = 4 | 504 | 网关超时 |
NOT_FOUND = 5 | 404 | * |
ALREADY_EXISTS = 6 | 409 | 冲突 |
PERMISSION_DENIED = 7 | 403 | 禁止 |
UNAUTHENTICATED = 16 | 401 | 未授权 |
RESOURCE_EXHAUSTED = 8 | 429 | * |
FAILED_PRECONDITION = 9 | 400 | 请求错误 |
ABORTED = 10 | 409 | 冲突 |
OUT_OF_RANGE = 11 | 400 | 请求错误 |
UNIMPLEMENTED = 12 | 501 | 未实施 |
内部 = 13 | 500 | 内部服务器错误 |
UNAVAILABLE = 14 | 503 | 服务不可用 |
DATA_LOSS = 15 | 500 | 内部服务器错误 |
按时间和/或大小配置 gRPC 缓冲
Citrix ADC 设备会缓冲来自后端服务器的 gRPC 响应,直到收到响应尾声。这会中断双向 gRPC 调用。此外,如果 gRPC 响应很大,它会消耗大量内存来完全缓冲响应。为了解决此问题,gRPC 桥接配置经过增强,可以按时间和/或大小限制缓冲。如果缓冲区大小或时间限制超过阈值,则设备会停止缓冲并将响应转发给客户端,即使触发了任一限制(要么未在配置的缓冲区大小内收到预告片,要么出现配置的超时)。因此,配置的策略及其表达式(基于 grpc-status 代码)无法按预期运行。
要通过 CLI 按时间和/或大小限制 gRPC 缓冲,您可以配置何时添加新的 HTTP 配置文件或在修改现有配置文件时进行配置。
在命令提示符下,键入:
add ns httpProfile http2gRPC [-grpcHoldLimit <positive_integer>] [-grpcHoldTimeout <positive_integer>]
或
set ns httpProfile http2gRPC [-grpcHoldLimit <positive_integer>] [-grpcHoldTimeout <positive_integer>]
其中,
grpcholdlimit
。在收到预告片之前允许缓冲 gRPC 数据包的最大大小(以字节为单位)。您可以配置参数和任何参数。
默认值:131072 最小值:0 最大值:33554432
grpcholdtimeout
。在收到预告之前允许缓冲 gRPC 数据包的最大时间(以毫秒为单位)。该值应为 100 的倍数。
默认值:1000
最小值:0
最大值:180000
示例:
add httpprofile http2gRPC -grpcholdlimit 1048576 -grpcholdtimeout 5000
set httpprofile http2gRPC -grpcholdlimit 1048576 -grpcholdtimeout 5000
使用 GUI 配置 gRPC 桥接
完成以下步骤,使用 Citrix ADC GUI 配置 gRPC 桥接。
添加直接启用 HTTP/2 和 HTTP/2 的 HTTP 配置文件
- 导航到系统 > 配置文件,然后单击 HTTP 配置文件。
- 在 HTTP 配置文件中选择 HTTP/2。
在 HTTP 参数中启用全局后端 HTTP/2 支持
- 导航到“系统”>“设置”>“HTTP 参数”。
- 在“配置 HTTP 参数”页面中,选择“服务器端的 HTTP/2”选项。
- 单击确定。
添加 SSL/HTTP 类型的负载平衡虚拟服务器并设置 HTTP 配置文件
- 导航到流量管理 > 负载平衡 > 虚拟服务器。
- 单击 “ 添加 ” 为 gRPC 流量创建负载平衡虚拟服务器。
- 在“负载平衡虚拟服务器”页中,单击 概要文件。
- 在 配置文件 部分中,选择配置文件类型为 HTTP。
- 单击“确定”,然后单击“完成”。
为 gRPC 端点添加服务并设置 HTTP 配置文件
- 导航到 Traffic Management(流量管理)> Load Balancing(负载平衡)> Services(服务)。
- 单击 “ 添加 ” 为 gRPC 流量创建应用程序服务器。
- 在 负载平衡服务 页面中,转到 配置文件 部分。
- 在 配置文件下,为 gRPC 端点添加 HTTP 配置文件 。
- 单击“确定”,然后单击“完成”。
将 gRPC 端点的服务绑定到负载平衡虚拟服务器
- 导航到流量管理 > 负载平衡 > 虚拟服务器。
- 单击 “ 添加 ” 为 gRPC 流量创建负载平衡虚拟服务器。
- 在 “ 负载平衡虚拟服务器 ” 页面中,单击 “ 服务和服务组 ” 部分。
- 在 负载平衡虚拟服务器服务绑定 页面中,选择要绑定的 gRPC 服务。
- 单击“关闭”,然后单击“完成”。
使用 GUI 按时间和大小配置 gRPC 缓冲
- 导航到系统 > 配置文件,然后单击 HTTP 配置文件。
- 在 HTTP 配置文件中选择 HTTP/2。
-
在 配置 HTTP 配置文件 页面中,设置以下参数:
- grpcHoldTimeout。输入在收到预告片之前缓冲 gRPC 数据包的时间(以毫秒为单位)。
- grpcHoldLimit。 输入在收到预告片之前缓冲 gRPC 数据包的最大大小(以字节为单位)。
- 单击“确定”和关闭。
有关绑定服务和负载平衡虚拟服务器的详细 GUI 过程,请参阅 负载平衡 主题。
共享
共享
This Preview product documentation is Cloud Software Group Confidential.
You agree to hold this documentation confidential pursuant to the terms of your Cloud Software Group Beta/Tech Preview Agreement.
The development, release and timing of any features or functionality described in the Preview documentation remains at our sole discretion and are subject to change without notice or consultation.
The documentation is for informational purposes only and is not a commitment, promise or legal obligation to deliver any material, code or functionality and should not be relied upon in making Cloud Software Group product purchase decisions.
If you do not agree, select I DO NOT AGREE to exit.