Разворачивание сервиса NGINX Cluster в D2C.io

Это руководство поможет вам развернуть сервис NGINX Cluster в Docker контейнере. NGINX Cluster используется для обслуживания PHP-FPM на нескольких серверах. Пример использования описан в Схеме масштабируемого WordPress стэка. Данное руководство может быть полезно как начинающим, так и продвинутым разработчикам. 

Denis Zaripov

Product manager

Почему Docker?

Докер — это открытая платформа для разработки, доставки и эксплуатации приложений. Docker разработан для более быстрого выкладывания ваших приложений. С помощью docker вы можете отделить ваше приложение от вашей инфраструктуры и обращаться с инфраструктурой как управляемым приложением. Docker помогает выкладывать ваш код быстрее, быстрее тестировать, быстрее выкладывать приложения и уменьшить время между написанием кода и запуска кода. Docker делает это с помощью легковесной платформы контейнерной виртуализации, используя процессы и утилиты, которые помогают управлять и выкладывать ваши приложения.

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

Ознакомиться с технологией и преимуществами можно в оригинальной статье Docker, либо с переводом на русский язык вступительной статьи документации.

Подготовка

Руководство основано на проекте, в котором уже развернут PHP-FPM на трёх серверах. Возможно вам также потребуется руководство по разворачиванию PHP приложений на случай, если вы его пропустили.

Создание сервиса NGINX Cluster

Для начала, потребуется открыть или создать любой проект и нажать «+Создать сервис». Вы увидите список нативно поддерживаемых сервисов, которые можно развернуть с помощью D2C. Нажимаем на плитку NGINX Cluster

Создание сервиса NGINX Cluster. Настройки сервиса

Name

Имя должно начинаться с буквы и содержать не более 16 символов (допускаются латинские символы и цифры).

У каждого сервиса есть своё уникальное имя. Сервисы могут обращаться друг к другу по имени контейнера (например, winnie-1). или по alias-именам (например,  winnie).

Version

Вы можете выбрать версию для вашего приложения из списка:

Создание сервиса NGINX Cluster. Обслуживание сервисов

Как и было сказано выше, NGINX Cluster подходит для обслуживания PHP-FPM сервисов. Вы можете выбрать PHP-FPM сервис из любого проекта, но он должен находится на том же сервере, что и NGINX Cluster.

Вы можете выбрать сервис, который требуется обслуживать, нажав на кнопку «+Add service config«.

Давайте начнем с PHP-FPM приложением с названием Mimi. После клика вы увидите стандартные настройки для PHP-FPM. Режим FastCGI выбран по умолчанию.

Config

Нажав на кнопку «Generate config» вы можете увидеть автоматически сгенерированный конфиг для выбранного сервиса:

Конфиг можно редактировать. Для этого нажмите на кнопку «Edit«. Для того, чтобы вернутся к исходному содержимому конфига нажмите на кнопку»Generate new config«. 

Static

Вы можете включить режим обслуживания статических файлов. Этот режим является обязательным для PHP-FPM сервисов. NGINX может обслуживать статические файлы только на одном сервере с PHP-FPM.

Создание сервиса NGINX Cluster. Выбор серверов

В большинстве случаев достаточно выбрать имя сервиса, версию и выбрать какой сервис NGINX будет обслуживать. Теперь вы можете выбрать сервер и нажать «Create service». 

У сервиса NGINX также есть дополнительные настройкиalso has advanced settings. Мы покажем их ниже.

Я выбрал сервера, которые были использованы для сервиса PHP-FPM.

После успешного разворачивания проект должен выглядеть следующим образом:

После этого вы можете обслуживать этот NGINX Cluster с помощью NGINX, который может работать в режимах HTTP/HTTPS и получать ссылку для вашего приложения. Руководство по разворачиванию NGINX в D2C.io.

Создание сервиса NGINX Cluster. Дополнительные настройки.

Нажмите на кнопку «Show advanced settings«.

Ports

Первый блок в этой секции — Порты.

Доступ из Интернета (Access from the Internet) в NGINX Cluster выключен по умолчанию. Вы можете отлючить доступ во время создания или последующего редактирования сервиса.

Persistent data volumes

D2C разделяет приложение от данных приложения. Docker volumes используются для хранения постоянных данных. 

Configs

В D2C для NGINX создается стандартный конфиг nginx.conf. Вы можете его изменить используя кнопку «Edit«.

Нажмите на кнопку “Generate new config” если требуется восстановить конфиг до стандартного.

Global dependencies 

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

Initial commands

Команды, которые выполняются только один раз после первого разворачивания сервиса.

Environment variables
Переменные окружения для вашего приложения. Могут редактироваться после создания сервиса.

Что дальше?

В следующей статье мы поговорим о:

  • обслуживании edge сервисов: проверка логов и метрик, обновление версии