Статьи

Запуск эластичного стека лампы на AWS

В этой статье рассказывается о том, что, вероятно, является одним из самых простых способов настройки и запуска эластичного стека LAMP в облаке — с использованием Zend Server в AWS.

Zend Server Splash Screen

Примечание: быть ясно, что эластик не относится к ElasticSearch здесь.

В частности, описанный здесь рабочий процесс включает в себя запуск предварительно сконфигурированного шаблона AWS CloudFormation, который устанавливает все компоненты стека LAMP: сертифицированный стек Zend Server PHP плюс все дополнительные функции Zend Server (включая Z-Ray), MySQL база данных, эластичная группа Zend Server, состоящая из дополнительных экземпляров Zend Server, эластичного балансировщика нагрузки и других предварительно настроенных определений безопасности.

Эта статья идеально подходит для тех, кто планирует перенести свою производственную среду в облачную среду, или для тех, кто уже настроил ее на AWS.

Основные понятия

Zend Server — это платформа приложений для веб-приложений и мобильных приложений PHP, которая поставляется с расширенным стеком PHP и набором инструментов для разработки, отладки, развертывания и мониторинга приложений. Если вы не знакомы с Zend Server, ознакомьтесь со статьей Бруно Скворца.

CloudFormation позволяет создавать и предоставлять развертывания AWS с помощью Amazon EC2, балансировки нагрузки, автоматического масштабирования и других продуктов AWS для создания приложений в облаке. Используя файл шаблона для создания совокупности ресурсов в виде единого стека, CloudFormation позволяет быстро развертывать приложения PHP, не беспокоясь о создании и настройке базовой инфраструктуры.

Чтобы выполнить описанные здесь шаги, вам нужна только действующая учетная запись AWS и 30 минут свободного времени.

Шаг 1: Запуск стека

Мы начнем с открытия и входа на рынок AWS .

Ввод Zend Server в поле поиска в верхней части страницы дает нам список всех доступных AMI Zend Server (инстансы Amazon Machine). Список включает в себя широкий спектр версий и версий, каждая из которых поддерживает различные версии PHP и дистрибутивы Linux. Существует даже экземпляр PHP 5.3 LTS.

Список AMI Zend Server

В этом случае мы выберем экземпляр «PHP 5.6 — Zend Server Professional Edition (Ubuntu)».

Стоит отметить, что кластеризацию поддерживают только выпуски Zend Server Professional и Enterprise, поэтому, если вы заинтересованы в настройке среды разработки, редакция Developer идеально подойдет для ваших нужд.

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

Zend Server PHP 5.6 Professional Edition

В разделе «Методы доставки» отображается параметр «Кластер Zend Server», и нажатие « Просмотр» дает нам описание того, как выглядит кластер Zend Server, вместе с подробной диаграммой шаблона CloudFormation.

Мы сейчас столкнулись с двумя вариантами. Мы можем либо загрузить файл шаблона и впоследствии вручную загрузить его в отдельный мастер AWS CloudFormation, либо — мы можем более подробно рассмотреть шаблон в CloudFormation Designer.

CloudFormation Designer — это относительно новый визуальный инструмент, который позволяет легко создавать и изменять шаблоны CloudFormation с помощью очень простого в использовании интерфейса.

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

CloudFormation Designer

CloudFormation Designer открывается с нашим предварительно настроенным шаблоном. Диаграмма в центре конструктора отображает все различные части стека: Zend Server, базу данных MySQL, эластичный балансировщик нагрузки, облачные аварийные сигналы, группу безопасности VPC и группу автоматического масштабирования, состоящую из дополнительных экземпляров Zend Server.

При необходимости вы можете легко перетащить дополнительные компоненты в шаблон. Или вы можете изменить настройки любого из существующих компонентов, просто выбрав его на диаграмме и отредактировав текстовый файл, показанный ниже. Стоит отметить, что играть с шаблоном следует с осторожностью и только в том случае, если вы точно знаете, что делаете.

В нашем случае мы будем использовать настройки шаблона по умолчанию и продолжим работу.

Следующим шагом является создание стека. Чтобы сделать это, мы собираемся щелкнуть значок Create Stack вверху страницы.

Теперь нас отправили в мастер создания нового стека AWS, и мы видим, что на первой странице наш шаблон CloudFormation уже выбран.

Мастер создания стека

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

Во-первых, мы собираемся ввести имя для стека для общей идентификации и отображения.

Во-вторых, нам нужно настроить сетевые конфигурации. Мы должны выбрать VPC для запуска кластера и две подсети.

Мастер создания стека

Следующим шагом является настройка доступа к нашему кластеру.

Сначала нам нужно выбрать существующую пару ключей EC2, которая будет использоваться для доступа к кластеру. Если у вас его еще нет, сделайте это с помощью консоли EC2. Затем мы собираемся ввести пароль для доступа к пользовательскому интерфейсу кластера Zend Server (пожалуйста, запомните этот кластер, так как он понадобится нам в следующих шагах учебника), а также имя пользователя и пароль для доступа к базе данных кластера. У нас также есть возможность ввести электронное письмо для получения уведомлений от AWS по операционным вопросам.

Мастер создания стека

Последний шаг на этой странице мастера — выбор типов экземпляров для узлов Zend Server, создающих кластер, и базы данных кластера. Эти параметры определяют аппаратные конфигурации для этих компонентов (ЦП, память, хранилище и т. Д.), И настройки по умолчанию (m3.large и db.m3.medium соответственно) должны быть достаточными для запуска кластера из нескольких узлов (до 5) со средней нагрузкой (50-60 запросов в секунду). Каждый тип экземпляра имеет свою цену, поэтому вы должны принять это во внимание.

На этом этапе нам также необходимо определить минимальный и максимальный размер нашей группы автоматического масштабирования, или, другими словами, — количество серверов, с которых мы хотим, чтобы кластер запускался, и максимальное количество серверов, которые может масштабировать наш кластер в случае увеличение транспортной нагрузки.

Нажав Далее, вы попадете на страницу параметров.

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

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

Мы собираемся запустить со значением по умолчанию и перейти к последней и последней странице мастера — странице обзора.

Мастер создания стека

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

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

Так как с текущей настройкой у нас все в порядке, мы собираемся нажать кнопку « Создать» в нижней части страницы.

Отобразится консоль управления CloudFormation, и через минуту или две только что запущенный стек отобразится в списке стеков.

Список стеков

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

Это может занять несколько минут. В то же время мы можем выбрать вкладку «Ресурсы» и просмотреть все различные компоненты стека.

Список стеков

Через некоторое время состояние стека изменится на завершенное, и процесс развертывания кластера будет завершен.

Список стеков

Шаг 2: Управление стеком

Всего за несколько щелчков мыши нам удалось настроить гибкий и автоматически масштабируемый PHP-кластер в облаке, который включает в себя все компоненты стека LAMP промышленного уровня.

Наш следующий шаг — понять, как управлять основными компонентами, составляющими стек: Zend Server, PHP и нашей базой данных RDS MySQL.

Во-первых, давайте подробнее рассмотрим наш кластер узлов Zend Server. Один из способов сделать это — открыть список экземпляров в консоли EC2 .

Консоль EC2

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

Консоль EC2 также является местом для управления нашим балансировщиком нагрузки. Просто нажмите « Балансировщики нагрузки» в меню слева.

Во-вторых, мы собираемся открыть консоль RDS, где мы можем просматривать и управлять нашим экземпляром MySQL.

Консоль RDS

И последнее, но не менее важное: теперь мы собираемся получить доступ к Zend Server. Для этого вернитесь в консоль CloudFormation .

Консоль CloudFormation

Выберите вкладку Outputs и щелкните URL-адрес кластера Zend Server.

Затем откроется страница входа в Zend Server, и для доступа к Zend Server все, что нам нужно сделать, это ввести пароль, который мы определили ранее в мастере для доступа к пользовательскому интерфейсу кластера, и нажать кнопку « Войти» .

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

Страница расширений ( PHP | Extensions ) позволяет нам легко настраивать и управлять нашим PHP для всего кластера. Мы можем включать и отключать расширения PHP и настраивать директивы. Лучший способ сделать это — использовать поле поиска в верхнем правом углу страницы, чтобы найти определенную директиву или расширение.

Расширения PHP

После сохранения новые конфигурации распространяются по всему кластеру. Это важное преимущество, которое следует понимать, поскольку обычно задача синхронизации файла .ini PHP в кластере и перезапуска Apache — не простая задача, если не сказать больше.

Шаг 3. Развертывание приложения

Пришло время испачкать руки и развернуть некоторый код в кластере.

Для этого мы будем использовать пример приложения WordPress, которое доступно на странице «Начало работы». Как упоминалось ранее, страница «Приступая к работе» — это отличное место для начала изучения различных функций, доступных в Zend Server, и рекомендуется для начинающих пользователей.

Щелкнув значок WordPress на странице «Образцы приложений для развертывания», Zend Server загружает готовый файл .ZPK для WordPress и загружает его в мастер развертывания приложений.

Мастер развертывания

Несколько слов о развертывании Zend, прежде чем мы продолжим. Файл .ZPK (Zend Deployment Package) — это стандартизированный пакет приложения, который включает весь исходный код приложения, а также метаданные, которые определяют параметры и предварительные условия, необходимые для развертывания приложения (например, учетные данные базы данных, необходимые расширения PHP) и любые дополнительные хуки. сценарии, которые вы хотели бы использовать на различных этапах развертывания.

Эта функция является огромной помощью в стандартизации и автоматизации процесса развертывания и используется для создания непрерывного непрерывного конвейера доставки.

Давай продолжим. Продвигаясь в мастере, мы представляем файл readme для WordPress, который мы можем посмотреть и продолжить.

На странице «Сведения о приложении» нам необходимо указать путь к нашему приложению. Если бы мы определили новый виртуальный хост, это было бы место для его выбора, но мы можем пока обойтись хостом по умолчанию.

Мастер развертывания

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

Далее нам нужно ввести все пользовательские параметры, необходимые для развертывания приложения. Опять же, они были определены в пакете приложения. Чтобы заполнить поля здесь, нам нужно получить доступ к нашему экземпляру RDS (из консоли RDS ) и ввести хост базы данных, имя пользователя и пароль. Нам также нужно будет ввести учетные данные для доступа к панели администратора WordPress.

Обратите внимание , что для реальных приложений рекомендуется использовать второй и отдельный экземпляр RDS, а не ту же базу данных, которая используется для кластера Zend Server. Это обеспечивает оптимизированную производительность и высокую доступность.

Мастер развертывания

Затем все, что нам нужно сделать, это нажать кнопку «Развернуть» на странице «Сводка», и приложение WordPress будет развернуто в кластере.

Развернутое приложение

Чтобы взглянуть на приложение, выберите его в списке «Приложения» и щелкните URL.

Совет: Z-Ray по умолчанию отключен. Чтобы включить его, перейдите в Z-Ray | Получите доступ и включите его.

Шаг 4: Мониторинг стека

Наш последний шаг — понять некоторые из функций мониторинга приложений и серверов, доступных в Zend Server.

На уровне сервера и PHP Zend Server упрощает анализ журналов в кластерном сценарии, позволяя вам централизованно проверять файлы журналов для всех узлов в кластере. Вместо того, чтобы вручную просматривать каждый файл журнала на каждом сервере, вы можете получить доступ к журналам через пользовательский интерфейс.

Для этого перейдите в Мониторинг | Журналы . Выберите сервер, который вы хотите отслеживать, и конкретный файл журнала.

Страница журналов

На уровне приложений Zend Server предлагает набор расширенных возможностей мониторинга, которые уведомят нас, если что-то пошло не так во время выполнения.

Например, Zend Monitoring запускает и отображает события, когда определенные нами пороги пересекаются. Например, если выполнение запроса заняло слишком много времени, запускается событие, и мы можем получить уведомление по электронной почте о событии.

Zend мониторинг событий

URL Insight — еще один полезный инструмент, который отображает отчеты по критическим URL-адресам. Например, мы можем просмотреть список десяти самых посещаемых URL-адресов или — десять самых медленных URL-адресов.

Вывод

Запуск PHP-кластеров в облаке — огромная задача, которая обычно включает в себя длинный список проблем. От выполнения политики масштабирования до обработки базы данных, анализа журналов, совместного использования сеансов и синхронизации PHP. Хотя существует множество существующих решений для решения этих задач, большинство из них включают ручной труд и ручное удержание. Написание и управление сценариями для выполнения всего вышеперечисленного, конечно, является допустимым вариантом, но также требует много времени и ресурсов.

Эластичный стек LAMP, предоставляемый Zend Server на AWS, представляет собой весьма убедительную альтернативу. Упрощенное управление кластером, это решение обеспечивает простой ответ на большинство общих задач, связанных с запуском кластера PHP.

Надеюсь, вам понравилось чтение!