应用负载均衡器对于在 Google Cloud 上可靠地交付 Web 应用程序至关重要。尽管 Google Cloud 的负载均衡器提供了广泛的自定义功能,客户在某些情况下仍需要更高的可编程性。

我们最近发布了负载均衡器服务扩展插件预览功能。客户可以在完全托管的 Google 环境中以最佳延迟,在请求/响应路径中部署运行自定义代码,客户可以自定义负载均衡器以满足其的业务需求。客户只需提供代码即可——让 Google Cloud 来管理其余部分。如果客户需要自己管理更多重量级操作的计算,您可以查看服务扩展调用,这些调用目前已经面向应用负载均衡器正式发布。

服务扩展插件支持以下用例:

  • 添加 HTTP Header:创建与应用程序或特定客户相关的 HTTP Header,或为请求和响应插入新 HTTP Header。

  • 改写 HTTP Header:在传输到后端或响应客户端的过程中重写现有的请求和响应 Header 或覆盖客户端 Header。

  • 安全性:根据客户端请求或响应标头编写高级安全政策(如自定义令牌身份验证),并在插件内做出执行决策。

  • 自定义日志记录:将用户定义的标头或自定义数据记录到 Cloud Logging 中。

  • 异常处理:将客户端重定向到某些响应类的自定义错误页面。

  • HTML 重写:从来源重写 HTML 以便于集成 Google reCAPTCHA 或 Google Analytics 标记。

您可以在何处运行代码

服务扩展在 Google 全球分布式网络边缘节点的请求和响应路径中运行。服务扩展插件现在可作为全球外部应用负载均衡器现有流量扩展的一部分使用。服务扩展插件在 Cloud CDN 和 Cloud Armor 之后运行,在流量到达后端之前运行。Cloud CDN 对服务扩展的支持将在未来版本中推出。此外,服务扩展插件作为路由和流量扩展的一部分在跨区域内部负载均衡器上同样支持。

服务扩展插件架构

服务扩展插件专为作为应用负载均衡器请求/响应路径的一部分运行的轻量级计算操作而设计。插件基于 WebAssembly (Wasm) 构建,具有以下几个优点:

1. 近乎原生的执行速度,启动时间仅需几毫秒

2. 支持多种编程语言,如 Rust 和 C++

3. 跨平台可移植性,因此您可以在各种部署中运行相同的插件,或在本地进行测试

4. 安全保护,例如在沙盒环境中执行插件逻辑

服务扩展插件利用 Proxy-Wasm,这是一个 Google 支持的开源项目,它为 Wasm 模块提供了与网络代理交互的标准 API。

为了运行服务扩展插件,我们构建了一个大规模多租户(如负载均衡器)且规模灵活的计算平台。插件是完全托管的,并提供动态分片和自动扩展以满足流量需求。此架构允许:

1. 可扩缩性:我们可以根据流量模式的变化按需扩展到许多 Wasm 主机。

2. 低延迟:负载均衡器和 Wasm 主机之间没有额外的代理;这种无代理无服务器架构允许更多延迟优化路径。

下一步

要开始使用服务扩展插件,请查看我们不断增长的示例存储库以及本地测试工具包,并按照文档中的快速入门指南进行操作。

相关推荐