Dri*_*sha 5 docker google-cloud-platform gcloud docker-compose google-cloud-run
我需要在需要部署在谷歌云运行中的 nodejs 应用程序前面设置反向代理 nginx。
用例 - 需要提供通过 nginx 压缩的资产(我不想为 gzip 压缩开销节点) - 阻止小型 DDOS 攻击
我没有找到任何在云运行中设置 nginx 和节点的教程。
我还需要为节点安装 PM2。
如何在 docker 中进行此设置?在部署之前如何配置 nginx?
提前致谢
我需要在需要部署在谷歌云运行中的 nodejs 应用程序前面设置反向代理 nginx。
Cloud Run 已经提供了一个反向代理 - Cloud Run Proxy。这是为 Cloud Run 进行负载平衡、提供自定义域、身份验证等的服务。但是,Cloud Run 的设计中没有任何内容可以阻止您在容器内使用 Nginx 作为反向代理。Cloud Run 的设计中没有任何内容可以阻止您将 Nginx 用作另一个 Cloud Run 服务的单独容器前端。请注意,在最后一种情况下,您需要支付的费用是您需要两个 Cloud Run 服务的两倍,一个用于 Nginx 服务 URL,另一个用于节点应用程序。
用例 - 需要提供通过 nginx 压缩的资产(我不想为 gzip 压缩开销节点) - 阻止小型 DDOS 攻击
您可以在节点应用程序或 Nginx 中执行压缩。结果是一样的。性能影响是一样的。Nginx 不提供任何开销节省。在某些情况下,Nginx 可能更方便。
您对阻止小型 DDOS 攻击的评论。Cloud Run 自动缩放,这意味着每个 Cloud Run 实例对 DOS 的暴露有限。随着 DDOS 流量的增加,Cloud Run 将启动更多容器实例。如果没有您的事先请求,Cloud Run 将停止扩展到 1,000 个实例。Nginx 不会提供任何我能想到的减轻 DDOS 攻击的好处。
我没有找到任何在云运行中设置 nginx 和节点的教程。
我不知道涵盖 Nginx 和 Cloud Run 的特定文档。但是,您不需要一个。任何涵盖 Nginx 和 Docker 的文档都可以。如果您想在与 node 应用程序相同的容器中运行 Nginx,您将需要编写一个自定义脚本来启动 Nginx 和 Node。
我还需要为节点安装 PM2。
不可能。PM2 具有用户界面和 GUI。Cloud Run 仅从 Cloud Run 实例通过 HTTP 公开 $PORT。
如何在 docker 中进行此设置?在部署之前如何配置 nginx?
互联网上有很多关于设置 Nginx 和 Docker 的教程。
下面两个例子。互联网上有数百个例子。
我已经回答了你的每一个问题。现在给一些建议:
只要您遵循 Node.js 应用程序的设计标准和目的,Cloud Run 就可以轻松处理 Node.js 应用程序,并具有出色的性能和可扩展性。
要记住的关键因素:
成本低,您只需为请求付费。重叠请求的成本与一个请求相同。
无国籍。容器在不需要时关闭,这意味着您必须设计重新启动。将状态存储在其他地方,例如数据库。
仅在端口 $PORT(今天是 8080)上提供流量。
公共流量可以是 HTTP 或 HTTPS。从 Cloud Run 代理到容器的流量是 HTTP。
自定义域名。Cloud Run 使 URL 的 HTTPS 变得非常简单。
更新:公共端点(公共流量)现在仅支持 HTTPS。
我认为你应该考虑使用不同的方法。
在单个容器中运行多个进程并不是最佳实践。正如您所描述的,代理的更常见实现是使用 2 个容器(代理通常称为 sidecar),但这对于 Cloud Run 来说是不可能的。
Google App Engine 可能更合适。
App Engine Flexible 允许部署由 Nginx 代理(在幕后)的容器。您可以将静态内容与Flexible 结合使用,并且可以合并CDN。App Engine Standard 也能满足您的需求。
https://cloud.google.com/appengine/docs/flexible/nodejs/serving-static-files https://cloud.google.com/appengine/docs/standard/nodejs/runtime
与 Cloud Run 一样,App Engine 是无服务器的,但提供了更大的灵活性,并且是一项更成熟的服务。App Engine 还与更多(全部?)GCP 服务集成,而 Cloud Run 仅限于一个子集。
或者,您可以考虑 Kubernetes(引擎)。这提供了几乎无限的灵活性,但需要更多的操作。您可能知道,有一个 Cloud Run 实现在 Kubernetes、Istio 和 Knative 之上运行。
Cloud Run 是一项引人注目的服务,但只有当您能够满足其(当前)受限的要求时,它才合适。
归档时间: |
|
查看次数: |
2121 次 |
最近记录: |