google-cloud-platform - Google Cloud Run(完全托管) - 容器可以重定向到另一个容器吗?
问题描述
背景:尝试在 Google Cloud Run(完全托管)中运行Vault,并尝试确定是否可以设置 HA。Vault 需要单个活动节点(容器),并且需要转发或重定向到备用节点(容器)的入站请求。
转发意味着另一个端口上的侧连接(即 tcp/8200 上的客户端和 tcp/8201 上的 pod-to-pod)。这可能吗,我在文档中看不到任何关于此的内容。
重定向意味着备用节点(容器)需要 307 重定向到活动节点的地址。这可以是 Cloud Run url 或 pod 特定的 url。如果是 Cloud Run url,那么负载均衡器可以直接将其发送回备用节点(循环);不好。它需要是 pod url。Cloud Run“代理”(不知道该怎么称呼它)是否能够接受客户端请求,但会从 pod 到 pod 进行内部重定向以到达活动 pod?
解决方案
您似乎对 Cloud Run 的编程和流量服务模型不熟悉。我建议查看文档和https://github.com/ahmetb/cloud-run-faq以获得一些答案。
简要回答您的一些观点:
- Cloud Run 上运行的容器只能向外界公开 1 个端口号
- Cloud Run 应用只能通过 HTTPS(包括 gRPC)协议通过端口 :443 访问。
- 您无法确保在 Cloud Run 上一次运行 2 个容器(这不是它的设计目的,这是 Kubernetes 或 VM 更适合的东西)。
- 根据定义,Cloud Run 用于运行无状态 HA 应用
- Cloud Run 中没有“pod URL”之类的东西。一个应用程序的多个副本将具有相同的地址。
- 正如您所说,Cloud Run 无法区分同一应用的多个实例。如果容器将请求转发到它自己的 URL,它最终可能会再次收到请求。
最好的办法是将这两个容器作为单独的应用程序部署到 Cloud Run,因此它们具有不同的 URL 和不同的生命周期。您可以将“最大实例数”设置为 1,以确保这些 VaultService1 和 VaultService2 永远不会获得额外的副本。
推荐阅读
- architecture - API 是无服务器功能的正确用例吗?
- google-apps-script - 当多个同时提交到电子表格时由 OnFormSubmit 触发的函数问题
- smartcard - 是否可以“冻结” GlobalPlatform 智能卡?
- javascript - 使用 aws-sdk 时如何在 AWS Lambda 中创建 async/await 函数
- node.js - 如何取消 requestjs 下载
- templates - 无法在 Grapesjs 中加载保存的模板
- arduino - 为什么这个使用端口操作的 arduino 代码不起作用?
- html - 将变量从 bash 脚本传递到 HTML
- python-3.x - python aws s3:根据大小下载文件
- css - 如何通过css更改一些文本