Руководство по настройке App Engine

В этом руководстве объясняется:

  • как вручную инициализировать сервер тегов на платформе App Engine в Google Cloud Platform;
  • как подготовить автоматически инициализированный сервер тегов к обработке реального трафика;
  • как добавлять и убирать серверы, на которых работает серверный контейнер.

Вам понадобится:

  1. создать проект в Google Cloud Platform или открыть готовый проект на Google Cloud Console;
  2. запустить сценарий командной оболочки с пошаговыми инструкциями по созданию сервера тегов или изменению его конфигурации.

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

Как правило, с тестовой конфигурацией можно работать бесплатно. Такая конфигурация в стандартной среде относится к экземплярам App Engine класса F1.

После перехода на рабочую конфигурацию один сервер будет стоить приблизительно 40 долларов США в месяц. Каждый такой сервер – это экземпляр App Engine в гибкой среде, располагающий 1 ВЦП, 0,5 ГБ ОЗУ и 10 ГБ памяти. Мы рекомендуем использовать для каждого контейнера как минимум по три сервера, чтобы сократить риск потери данных в случае сбоя одного из них. Но это исключительно ваше решение: вы можете использовать и меньше серверов, и больше. Ориентировочно автомасштабирование до 3–6 серверов (настройка по умолчанию) позволяет обрабатывать по 50–200 запросов в секунду, однако этот показатель зависит от количества и функций тегов.

Узнайте, как контролировать расходы на App Engine и настраивать оповещения о превышении бюджета. Мы настоятельно рекомендуем использовать такие оповещения.

Создание проекта Google Cloud Platform (GCP)

Если вы автоматически инициализировали сервер GCP, то у вас уже есть проект GCP. Вы найдете его в списке доступных проектов на сайте console.cloud.google.com. Идентификатор проекта будет состоять из идентификатора контейнера и суффикса – последовательности случайных символов.
Скриншот селектора проектов GCP с идентификатором образца проекта в Менеджере тегов

Если вы не использовали автоматическую инициализацию сервера GCP, создайте проект самостоятельно.

Если вы ещё не пользуетесь GCP, зарегистрируйтесь и создайте платежный аккаунт.

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

Создание сервера тегов и изменение его конфигурации

  1. Откройте Google Cloud Platform и запустите оболочку Cloud Shell.
  2. Настройте проект Cloud Platform. Фрагмент <PROJECT_ID> замените на скопированный ранее идентификатор проекта GCP:

    gcloud config set project <PROJECT_ID>
    
  3. Выполните команду ниже, а затем следуйте инструкциям в сценарии.

    bash -c "$(curl -fsSL https://googletagmanager.com/static/serverjs/setup.sh)"
    

    В сценарии командной оболочки можно:

    1. создавать серверы тегов;
    2. добавлять серверы для перехода на рабочую конфигурацию;
    3. менять настройки серверов тегов.

Настройка URL серверного контейнера

Если вы инициализировали сервер автоматически, пропустите этот пункт.

Приложение будет развернуто в субдомене App Engine. Чтобы узнать его URL, выполните такую команду:

gcloud app browse

Скопируйте этот URL и перейдите к серверному контейнеру Менеджера тегов (Администратор > Настройки контейнера). Вставьте скопированную ссылку в поле "URL серверного контейнера", нажмите "Сохранить" и вернитесь обратно.

Проверка

Включите в Менеджере тегов предварительный просмотр контейнера. Если страница загрузится, все работает правильно.

Сопоставление пользовательского домена

Создав сервер тегов, пропишите в его настройках субдомен вашего сайта.

Отключение ведения журналов запросов App Engine (необязательно)

App Engine по умолчанию регистрирует полученную информацию о каждом запросе (его путь, параметры и т. д.). Если сервер тегов обрабатывает много запросов в месяц (например, больше миллиона), их регистрация может быть довольно затратной. Чтобы сократить расходы на ведение журналов или вовсе избежать их, отключите регистрацию запросов App Engine. Для этого выполните следующие действия:

  1. Нажмите Журналы -> Маршрутизатор журналов. Убедитесь, что выбранный проект соответствует идентификатору контейнера:
    Скриншот селектора проектов GCP с идентификатором образца контейнера в Менеджере тегов
  2. В строке Тип: Сегмент Cloud Logging, Название: _Default выберите дополнительное меню и нажмите Изменить приемник.
  3. В разделе Место назначения выберите сегмент для журналов _Default.
  4. В разделе Выберите журналы, которые нужно добавить в приемник в новой строке для фильтра "Включить" добавьте этот текст: NOT LOG_ID("appengine.googleapis.com/nginx.request") AND NOT LOG_ID("appengine.googleapis.com/request_log") Скриншот указанной конфигурации, показанной с помощью фильтра "Включить" для журналов GCP.
  5. Чтобы отключить ведение журналов для балансировщика нагрузки, добавьте следующий текст в новую строку существующего фильтра "Включить": NOT LOG_ID("requests"). Примечание. Будут отключены все журналы для балансировщика нагрузки, в том числе для запросов, которые не отправляются в серверный контейнер.
  6. Внизу нажмите кнопку Обновить приемник.

Теперь запросы App Engine не будут регистрироваться. Нажмите Журналы -> Журналы и убедитесь, что нет записей о новых запросах.

Устранение неполадок: превышение времени ожидания при рабочем развертывании

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

  1. Неправильные разрешения у сервисных аккаунтов. Compute Engine и App Engine – это сервисные аккаунты, предназначенные для развертывания и поддержки рабочего развертывания. У них есть определенные разрешения, заданные по умолчанию. Однако эти разрешения могут быть неправильными из-за политики организации.

    1. Откройте Google Cloud Console и выберите IAM и администрирование на левой панели навигации.
    2. Найдите сервисные аккаунты Compute Engine <project_number>-compute@developer.gserviceaccount.com и App Engine <project_name>@appspot.gserviceaccount.com.
    3. Убедитесь, что им назначена роль Editor. Если у любого из этих аккаунтов нет роли Editor, добавьте ее. Для этого нажмите на значок карандаша справа от аккаунта, откройте раскрывающееся меню существующей функции и перейдите в его верхнюю часть. Выберите Проект > Редактор.
  2. Недостаточная квота. При выполнении рабочего развертывания используется квота Compute Engine. Если проекту не хватает ресурсов, система пытается получить их. Это может привести к превышению времени ожидания развертывания.

    1. Откройте Google Cloud Console и выберите IAM и администрирование на левой панели навигации. Затем перейдите на вкладку Квоты.
    2. В верхней части страницы нажмите на текстовое поле Введите фильтр и введите Compute Engine API. Нажмите на единственный результат.
    3. Убедитесь, что статусы квот не превышают ограничений и отмечены зеленой галочкой.
    4. Выберите ЦП. Убедитесь, что текущие проекты и развертываемые экземпляры не превышают ограничений для региона развертывания.