在Google App Engine上托管多个客户网站

时间:2019-03-27 21:37:16

标签: google-app-engine

我们目前在Kubernetes中托管大量容器化网站,我们正在探索使用Google App Engine托管这些网站,但是我们无法弄清楚如何在一个Google App Engine帐户中托管大量(数百个)网站。

乍看之下,似乎每个网站都是一个单独的项目,但后来很明显,有20个项目的软限制(而且我们最终可能托管数百个网站),因此这似乎是不正确的方法。然后,我们使用带有dispatch.yaml的单个项目探索了站点之间的路由。 Dispatch.yaml仅允许十个条目,这意味着它将不起作用。我们还缺少其他方法吗?我们的dispatch.yaml路由如下所示:

  - url: "example2.com/*"
    service: my-second-website

我们探索的所有选项均未提供可扩展或可行的解决方案。任何帮助或建议将不胜感激。

2 个答案:

答案 0 :(得分:0)

您是否尝试过请求增加项目限制?我认为这是完成这项工作的唯一好方法。

  

如果您尝试超出项目限制,控制台将提示您填写请求表。当您尝试创建项目但已经达到配额时,就会发生这种情况。该表格将要求您指定所需的其他项目数,以及它们相应的电子邮件帐户,账单帐户和预期用途。

https://support.google.com/cloud/answer/6330231?hl=en

如果您对每个网站的网址都同意,则可以使用单个项目和单个service / app.yaml进行操作。

  1. www.website1.com/website1 /
  2. www.website2.com/website2 /
  3. www.website3.com/website3 /

然后,您可以使用handlers中的app.yaml进行路由(如果有人尝试访问www.website1.com/website2/,还可以使用一些轻型服务器代码进行重定向)。这样做的最大问题是,每次部署时,都会部署所有100个站点。

答案 1 :(得分:0)

您需要的是一个App Engine实例,该实例具有多个服务(每个网站一个)和每个服务中的多个版本(如果需要)。

例如:

App Engine instance
    ├── website01-service
    │   ├── website01-version01
    │   ├── website01-version02
    │   └── website01-version03
    │
    └── website02-service
        ├── website02-version01
        ├── website02-version02
        └── website02-version03

这是Quickstart for Python 3 in the App Engine Standard Environment文档中的示例设置。

  1. 按照Download the Hello World app部分所述从git存储库下载文件。
  2. hello_world示例文件复制到两个不同的目录中。例如 website01 website02
  3. 您应该有这样的东西:
├── website01
│   ├── app.yaml
│   ├── main.py
│   ├── main_test.py
│   └── requirements.txt
└── website02
    ├── app.yaml
    ├── main.py
    ├── main_test.py
    └── requirements.txt
  1. website01/app.yaml中添加service: website01,在website02/app.yaml中添加service: website02。这样会将每个应用程序部署到不同的App Engine服务中。
  2. website01/main.py中更改return 'First website!',在website02/main.py中更改return 'Second website!'(这只是在部署后确认正在运行2个不同的网站)。
  3. /website01目录中执行$ gcloud app deploy --version website01-version01,在/website02目录中执行$ gcloud app deploy --version website02-version01
  4. 成功部署后,您应该在 Google云控制台> App Engine>服务页面中看到两个不同的版本。
  5. 在单击两个链接时,将打开新标签,您将看到两个不同的网站在同一个App Engine实例中运行,并且具有两个不同的链接。链接应如下所示:
website01 -> https://website01-dot-[PROJECT_ID].appspot.com/
website02 -> https://website02-dot-[PROJECT_ID].appspot.com/