Размещение сайтов с несколькими клиентами в Google App Engine - PullRequest
0 голосов
/ 28 марта 2019

В настоящее время мы размещаем большое количество контейнерных веб-сайтов в Kubernetes, и мы изучаем возможность использования Google App Engine для размещения этих сайтов, но мы не можем понять, как разместить большое количество (сотни) веб-сайтов в одной учетной записи Google App Engine.

На первый взгляд казалось, что каждый веб-сайт будет отдельным проектом, но затем стало ясно, что существует мягкое ограничение в двадцать проектов (и мы могли бы в конечном итоге разместить сотни сайтов), так что это не было правильным подход. Затем мы исследовали использование одного проекта с dispatch.yaml для маршрутизации между сайтами. Dispatch.yaml допускает только десять записей, что означает, что он не будет работать. Есть ли какой-то другой подход, который нам не хватает? Наша маршрутизация dispatch.yaml выглядела так:

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

Ни один из рассмотренных нами вариантов не предоставил масштабируемого или жизнеспособного решения. Любая помощь или совет будут высоко оценены.

Ответы [ 2 ]

0 голосов
/ 29 марта 2019

Вам нужен один экземпляр App Engine с несколькими службами (по одной для каждого веб-сайта) и несколькими версиями в каждой службе (при необходимости).

например:

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

Это пример настройки из Быстрый старт для Python 3 в документации по стандартному окружению App Engine .

  1. Загрузите файлы из репозитория git, как указано в Загрузите раздел приложения Hello World.
  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
В website01/app.yaml добавить service: website01 и в website02/app.yaml добавить service: website02.Это приведет к развертыванию каждого приложения в разных службах App Engine. В website01/main.py изменить return 'First website!' и в website02/main.py изменить return 'Second website!' (Это просто для подтверждения после развертывания, что работают 2 разных сайта). В каталоге /website01 выполните $ gcloud app deploy --version website01-version01 и в каталоге /website02 выполните $ gcloud app deploy --version website02-version01 После успешного развертывания вы увидите 2 разные версии, запущенные в Google CloudКонсоль> App Engine> Службы страница. При нажатии на обе ссылки откроются новые вкладки, и вы увидите, что два разных сайта работают в одном экземпляре App Engine с двумя разными ссылками.Ссылки должны выглядеть следующим образом:
website01 -> https://website01-dot-[PROJECT_ID].appspot.com/
website02 -> https://website02-dot-[PROJECT_ID].appspot.com/
0 голосов
/ 28 марта 2019

Вы пытались запросить увеличение лимита вашего проекта? Я думаю, что это единственный хороший способ сделать эту работу.

Если вы попытаетесь превысить лимит вашего проекта, консоль предложит вам заполнить форму запроса. Это происходит, когда вы пытаетесь создать проект, но вы уже достигли своей квоты. В форме вам потребуется указать количество дополнительных проектов, которые вам нужны, а также соответствующие учетные записи электронной почты, платежные учетные записи и предполагаемое использование.

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

Вы можете сделать это с помощью одного проекта и одного service / app.yaml, если вы согласны с URL-адресом для каждого веб-сайта, например:

  1. www.website1.com / website1 /
  2. www.website2.com / website2 /
  3. www.website3.com / WEBSITE3 /
  4. и т.д. * * тысяча двадцать-одна

Тогда вы можете использовать handlers в app.yaml для маршрутизации (вместе с небольшим легким кодом сервера для перенаправления, если кто-то попытается посетить www.website1.com/website2/). Самая большая проблема при этом заключается в том, что при каждом развертывании вы будете развертывать все 100 своих сайтов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...