Статьи

Развертывание отказоустойчивых веб-приложений с балансировкой нагрузки в облаке Alibaba

Эта статья была первоначально опубликована на Alibaba Cloud . Спасибо за поддержку партнеров, которые делают возможным использование SitePoint.

Высокая доступность (HA), отказоустойчивость (FT) и поддержка горизонтального масштабирования (HSF) одинаково важны для функциональности веб-приложений для запуска и успеха сегодня. Существующие или новые веб-приложения должны быть разработаны и обеспечены такой базовой архитектурой. К счастью, вы можете легко и быстро развернуть вышеупомянутую архитектуру в эпоху облачных вычислений сегодня (по сравнению с эпохой локальных железных машин)!

Однако эта гибкость сопряжена с оговоркой — как выбрать правильного облачного провайдера? Мы избалованы выбором, и это может быть очень сложно (и беспокойно!) При оценке и выборе правильного.

Этот пост предназначен для обсуждения и предоставления пошагового руководства по развертыванию веб-приложений в Alibaba Cloud с нуля, включая HA, FT и HSF. В этом посте я кратко расскажу о нескольких сервисах и инструментах, предоставляемых в Alibaba Cloud. Да, кратко! Если вы хотите узнать больше о конкретных услугах или инструментах, посетите Центр документации . Кроме того, этот пост будет освещать проблемы и соображения при развертывании таких служб.

WordPress используется в качестве демонстрационного веб-приложения, которое будет развернуто в Alibaba Cloud в этом посте. Тот же принцип развертывания применяется ко многим другим веб-приложениям. Этот пост не предназначен для обсуждения конфигурации WordPress. Он не должен (и не может) служить ссылкой для конфигурации WordPress. Существует множество хороших ресурсов, касающихся лучших практик администрирования WordPress.

1. Архитектура высокого уровня

Как и многие другие веб-приложения, демонстрационное веб-приложение состоит из прикладного уровня (WordPress) и уровня базы данных (MySQL).

Цель : в конечном итоге, мы хотим, чтобы веб-приложение всегда было включено (WordPress)!

Для достижения такой «простой» цели демонстрационное веб-приложение должно быть развернуто с соблюдением следующих минимальных требований:

  1. Единый основной сайт.
  2. Минимум два физически отдельных экземпляра WordPress на каждом сайте для целей резервирования и распределения нагрузки.
  3. Автоматически порождает другой экземпляр WordPress, когда существующий экземпляр останавливается или испытывает сбой.
  4. Экземпляр базы данных (MySQL) также должен работать в режиме резервирования. При необходимости он должен автоматически переключаться на активный резервный экземпляр.
  5. Централизованное пространство данных. Общие ресурсы должны быть доступны и доступны всем работающим экземплярам WordPress. Например, документ, загруженный пользователем через WordPress, должен быть синхронизирован со всеми запущенными экземплярами WordPress.

К счастью, Alibaba Cloud предоставляет нам список услуг и инструментов для выполнения этих требований. В этом посте мы будем использовать облачный DNS (DNS) , группу автоматического масштабирования (ASG) , балансировщик нагрузки сервера (SLB) , службу эластичных вычислений (ECS) , систему реляционных баз данных (RDS) , службу хранения объектов (OSS) , и инструменты файловой системы хранения объектов (OSSFS) для достижения нашей цели. Диаграмма архитектуры высокого уровня для развернутого WordPress будет выглядеть следующим образом:

2. Процедуры развертывания

Мы кратко представим компоненты, показанные на рисунке 1.0, прежде чем углубляться в каждую отдельную конфигурацию. Как указывалось ранее, вам необходимо обратиться к другим источникам, таким как онлайн-документация Alibaba Cloud для получения подробных объяснений. В следующей таблице приведены описания и использование таких компонентов в соответствии с нашим контекстом развертывания:

Таблица 1: Облачные компоненты в демонстрационных развертываниях

Сайт / Регион Географическая зона датацентра 1. Сайт для развертывания
зона Физически изолированный дата-центр в регионе 2. Используется в целях резервирования для базы данных
Облачный DNS Служба разрешения и управления доменными именами 3. Купить новое доменное имя4. Направление трафика на экземпляр WordPress
VPC (виртуальное частное облако) Виртуальная изолированная сеть, построенная для частного использования 5. Группировать и разделять ресурсы6. Для настройки контроля безопасности7. Назначить диапазон IP-адресов сети
VRouter Таблица виртуальной маршрутизации 8. Настроить сетевой маршрут для выделенных ресурсов
VSwitch Сегментируйте виртуальные сети в подсети 9. Чтобы разделить ресурсы в группу внутри указанной зоны через подсеть
Балансировщик нагрузки сервера Распределить трафик по экземплярам в соответствии с настроенным профилем 10. Запрос баланса нагрузки (циклического перебора) между предоставленными экземплярами WordPress.
Авто Масштабирующая Группа Автоматическая настройка вычислительных ресурсов на основе конфигурации масштабирования 11. Служит сторожевым таймером для поддержания определенных исправных работающих экземпляров WordPress.
Elastics Computing Service (экземпляр WordPress) Вычислительно-технологический блок предоставлен Alibaba Cloud 12. Установить и запустить WordPress. Это прикладной уровень развертывания демо
Служба реляционной базы данных (MySQL) Служба управляемой базы данных по требованию 13. БД для приложения WordPress
Служба хранения объектов Высокая доступность и отказоустойчивость объектов хранения 14. Централизованное хранилище для файлов / объектов, загруженных пользователем через приложение WordPress

Приведенный ниже рабочий процесс описывает основные этапы развертывания веб-приложения в Alibaba Cloud .

2.1. Определить регион обслуживания

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

  1. Стоимость : мать всех соображений. Да, стоимость может варьироваться в зависимости от региона.
  2. Доступность услуги в регионе? Весьма распространено, что некоторые регионы предоставляют дополнительные услуги, которые недоступны в другом регионе — вы должны проверить, чтобы узнать!
  3. Географическое положение основных целевых пользователей . Определенно лучше для пользователя, если приложение физически ближе к клиенту, что приводит к меньшей задержке.
  4. Правила и положения . Законно ли нормально, что приложение будет размещено в выбранном регионе?
  5. Количество свободных зон . Иногда нам необходимо улучшить доступность приложений, развернув избыточные приложения в другой зоне. Поскольку я нахожусь в Юго-Восточной Азии, я буду искать центры обработки данных в Сингапуре и Куала-Лумпуре. На момент написания «Азиатско-Тихоокеанский регион 3 (Куала-Лумпур)» имел только одну зону, а «Азиатско-Тихоокеанский регион 1 (Сингапур)» — две зоны.

После рассмотрения мы решили, что «Asia Pacific SE 1 (Сингапур)» будет основным регионом для нашего демонстрационного развертывания.

2.2. Планирование конфигурации сети

I. VPC

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

В облаке Alibaba Cloud VPC есть три типа блоков CIDR: 10.0.0.0/8, 172.16.0.0/12, 192.168.0.0/16. Согласно документации Alibaba Cloud , первые и последние три IP-адреса блока CIDR будут зарезервированы для использования системой, и, следовательно, максимальное количество частных IP-адресов для каждого блока CIDR:

  • 10.0.0.0/8 = 16777212 (16777216 — 4)
  • 172.16.0.0/12 1048572 (1048576 — 4)
  • 192.168.0.0/16 = 65532 (65536 — 4)

Вы также можете спросить, почему бы нам просто не использовать самый большой блок CIDR, чтобы избежать потенциального исчерпания частного IP в будущем? Следующее может помочь вам пересмотреть эту мысль:

  1. Большой блок CIDR может увеличить сложность при работе с конфигурацией, связанной с IP, такой как создание подсети, конфигурация маршрута, конфигурация группы безопасности и т. Д.
  2. Если вышеупомянутое не является действительным ограничителем показа для вас, тогда рассмотрите это: « пиринг (межсоединение) VPC » с другими VPC не позволяет перекрывающемуся блоку CIDR. Другими словами, невозможно использовать другой VPC, если вы используете 10.0.0.0/8 в качестве блока CIDR!

После рассмотрения мы будем использовать «192.168.0.0/16» для нашего демонстрационного развертывания, поскольку в VPC будет только несколько работающих узлов.

II. Subnet

В Alibaba Cloud VSwitch можно использовать для дальнейшего сегментирования блока CIDR VPC в подсеть с меньшим блоком CIDR. Общее рассмотрение для сегментации подсетей включает следующее:

  1. Логическая группировка экземпляров по функциональности. Например, группировка приложения в одной группе и RDS в другой группе для удобства сопровождения. Например, отключение группы экземпляров путем удаления VSwitch, присоединенного к группе.
  2. Упростите настройку профиля группы безопасности . Правила безопасности, основанные на уровне блока CIDR подсети, а не на IP-адресе отдельного экземпляра, являются более чистыми.
  3. Включите автоматическое масштабирование и мониторинг балансировки нагрузки сервера и действия в определенной подсети.
  4. Избыточность ресурсов . Возможно аварийное переключение на другую подсеть, которая основана в другой зоне, когда в зоне существующей подсети происходит сбой.

После рассмотрения мы группируем WordPress в одной подсети (192.168.1.0/24) и экземпляр RDS в другой подсети (192.168.2.0/24).

2,3. Настроить брандмауэр (группа безопасности)

Доступ к сети на уровне экземпляра может быть ограничен через группу безопасности в Alibaba Cloud. Конфигурация правила группы безопасности может быть очень детальной, вплоть до уровня IP для каждого протокола, для каждого порта и для каждого клиента. Следовательно, чтобы избежать несанкционированного доступа к экземпляру, нам необходимо учесть следующее:

  1. Всегда соблюдайте минимальные привилегии . Ограничить доступ только к необходимому клиенту.
  2. Интранет и / или подключение к интернету . Вы можете использовать группу безопасности для создания «частной подсети» (без использования Интернета), разрешив доступ только для входящей интрасети. Кроме того, можно использовать шлюз NAT, чтобы разрешить экземпляру в частной сети доступ к исходящим интернет-службам.

Поскольку мы запускаем WordPress на экземплярах Linux, мы бы по крайней мере разрешили входящее правило для порта 80 (HTTP) и 22 (SSH) в группе безопасности. Кроме того, весь исходящий трафик будет разрешен, поскольку к этому нет особых требований.

2,4. Настройте прикладной уровень

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

  1. Всегда начинайте с модели Pay-As-You-Go, если у вас нет представления ни о производительности типа экземпляра, ни о фактических требованиях к емкости. Эта модель ценообразования позволяет вам свободно экспериментировать с различными типами экземпляров без периода блокировки.
  2. Вы должны понимать природу ограничения развертываемого приложения . Приложение привязано к процессору или к IO? Вы должны ответить на это, чтобы определить правильный тип экземпляра с наилучшей экономической эффективностью.
  3. Разверните один шаг вниз, если это возможно. Если требования к емкости приложения могут быть удовлетворены с помощью экземпляра «X» типа семейства экземпляров Y, было бы лучше, если бы мы развернули приложение с двумя экземплярами с одним понижением (например, X / 2) из ​​одного и того же типа семейства для одного и того же типа семейства. объем работы. Это увеличит доступность приложения. Например, мы все еще можем обработать 50% рабочей нагрузки, если какой-либо экземпляр X / 2 выйдет из строя, по сравнению с 100% -ным временем простоя, если экземпляр X не работает. Конечно, этот подход зависит от дизайна и использования приложения.
  4. Определите другие параметры использования, например, тип сети, пропускную способность сети, образ операционной системы и т. Д. Соответственно.

Поскольку это демонстрационное развертывание без реального использования в производственной среде, мы остановимся на самой низкой (самой дешевой) конфигурации экземпляра ECS . Например: Общее Тип n1: 1-ядерный, 1 ГБ, ОС Ubuntu 16.04, Ultra Cloud Disk 40 ГБ и пропускная способность сети 1 Мбит / с.

2.5. Настройте уровень базы данных

Как правило, нам приходится выбирать между использованием самостоятельно управляемых экземпляров БД (самостоятельная установка БД в экземпляре ECS), таких как то, что мы обычно делаем для локальных решений, или использованием полностью управляемых служб БД RDS, таких как ApsaraDB . Опять же, это выходит за рамки этого поста в сравнении или сравнении двух вариантов услуг баз данных. Эти рекомендации могут помочь в выборе вариантов базы данных в целом:

  1. Есть ли у вас доступные ресурсы для управления и эксплуатации экземпляров базы данных? Задачи управления и эксплуатации могут включать в себя резервное копирование файлов данных, исправление ОС / БД, контроль доступа на хост-машине и т. Д. Если ответ отрицательный, то, возможно, предпочтительнее полностью управляемая БД RDS.
  2. Вам нужен выделенный экземпляр базы данных? Если ваша база данных мала, а рабочая нагрузка минимальна и может сосуществовать с приложением (например, в среде разработки), возможно, вариант с самоуправлением предпочтительнее из-за экономической эффективности.
  3. Вам нужен доступ к базовому хосту для экземпляра базы данных? Например, если вам необходимо выполнить конкретную настройку ОС / БД в целях настройки производительности, тогда должен использоваться вариант с самоуправлением.
  4. Предоставляет ли полностью управляемая служба базы данных необходимый вам тип БД? Если нет, то ответ прост, перейдите к автономному варианту БД.
  5. Если вы обеспокоены возможной блокировкой поставщика облачного хранилища, вы можете избежать полностью управляемого варианта, поскольку некоторые реализации RDS могут зависеть от поставщика облачного хранилища.

Поскольку нет ни рабочей силы для поддержки демонстрационной базы данных, ни какой-либо конкретной конфигурации БД, мы развернем демонстрационную БД с помощью ApsaraDB RDS — MySQL. Кроме того, этот вариант позволяет нам легко создать резервную базу данных (активный резерв) (всего одним щелчком мыши!).

2.6. Определить централизованное хранилище

В конце концов, может быть несколько одновременных приложений WordPress, работающих на физически отдельных экземплярах ECS . Каждый экземпляр может генерировать и хранить определенные файлы / изображения / мультимедиа в результате действий пользователей. Очевидно, что объекты, генерируемые любым экземпляром, должны быть синхронизированы между всеми другими запущенными экземплярами приложения. Один из подходов для достижения этой упомянутой синхронизации — через централизованное хранилище. Сгенерированные объекты должны быть синхронизированы с централизованным хранилищем, а затем синхронизироваться между централизованными объектами и другими запущенными экземплярами. Кроме того, централизованное хранилище должно быть всегда доступно, и любой отказ любого экземпляра не должен влиять на доступность и долговечность централизованного хранилища.

Alibaba Cloud предоставляет несколько полностью управляемых сервисов, которые могут служить централизованным хранилищем:

  1. Служба хранения объектов для объектов. Идеально подходит для централизованного хранения объектов благодаря гарантированной высокой доступности (99,9%), масштабируемости и полностью управляемой природе. В частности, для этого демонстрационного развертывания каждый работающий экземпляр WordPress должен синхронизироваться с выделенной общей корзиной службы хранения объектов. Используя такой механизм синхронизации, все запущенные экземпляры WordPress будут иметь идентичный набор созданных объектов.
  2. Redis ApsaraDB для состояния приложения: Состояние совместного использования (например, общее значение, параметр) среди запущенных экземпляров возможно с помощью полностью управляемого Redis ApsaraDB.

Специальная корзина в службе хранения объектов будет создана и использована для хранения объектов, созданных в результате пользовательских операций. Все запущенные экземпляры WordPress должны синхронизироваться с соответствующей корзиной для списка созданных объектов.

2,7. План для HA, FT и HSF

Для достижения HA, FT и HSF в Alibaba Cloud веб-приложение должно быть изначально разработано как не имеющее состояния и масштабируемое по горизонтали. Состояние или данные любого зависимого приложения должны быть отделены от веб-приложения и перенесены в централизованное хранилище, как обсуждалось в предыдущем разделе.

Перечисленные ниже службы могут использоваться для развертывания веб-приложений HA, FT и HSF:

  1. Облачный DNS : можно настроить типы записей «А» для экземпляров, размещенных в разных регионах. Это действительно полезно в сценариях отработки отказа, когда запись «A» для резервного экземпляра может быть включена одним щелчком, что приводит к отвлечению сетевого трафика на резервный экземпляр.
  2. Автоматическое масштабирование : его можно использовать для автоматического вызова экземпляров в нужной зоне, когда запущенные экземпляры выключаются или становятся нездоровыми.
  3. Балансировщик нагрузки сервера : эта служба будет обеспечивать проверку работоспособности настроенных экземпляров и сообщать об их состоянии службе автоматического масштабирования для дальнейших действий. Кроме того, этот сервис также будет распределять рабочую нагрузку между запущенными экземплярами.
  4. ApsaraDB RDS : RDS MySQL предоставляет функцию доступности нескольких зон одним щелчком мыши. Это действительно облегчит усилия, необходимые для обеспечения HA и FT для базы данных.

Демонстрационное развертывание будет использовать DNS для маршрутизации трафика к экземплярам WordPress, автоматическое масштабирование для обеспечения как минимум двух работающих экземпляров в каждом регионе и серверный балансировщик нагрузки для проверки работоспособности, а также для балансировки рабочей нагрузки. Наконец, что не менее важно, функция доступности Multi-Zone в RDS MySQL позволяет предоставлять HA и FT для базы данных.

2,8. Тестирование и запуск

Чтобы проверить поведение HA и FT, мы можем вручную остановить ECS и наблюдать за триггерами действий с помощью службы автоматического масштабирования. Если автоматическое масштабирование настроено правильно, новый экземпляр будет создан автоматически. Кроме того, мы также можем вручную отключить экземпляр RDS DB, чтобы наблюдать за отказоустойчивостью при многозонном резервировании. Лучше всего то, что эти действия автоматически обрабатываются соответствующими службами без какого-либо ручного вмешательства. Ниже показан наш развернутый WordPress :

3. Возможные улучшения

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

  1. Автоматическое масштабирование / в соответствии с рабочей нагрузкой экземпляра. Например, порождает новый экземпляр, когда ЦП / память превышает определенный порог в течение определенного периода.
  2. Используйте CDN для кэширования и распространения контента, чтобы минимизировать географическую задержку и уменьшить трафик к экземпляру приложения. Кроме того, CDN также выступает в качестве защитного слоя для DDoS-атак на экземпляры приложений.
  3. Снимите нагрузку на чтение с базы данных, создав реплику чтения.
  4. Запланируйте регион аварийного восстановления и создайте стратегию восстановления после отказа.
  5. Настройте мониторинг облака, включите оповещение и включите подробный журнал, по крайней мере, для критических метрик и инцидентов, таких как сбой экземпляра, заполнение дискового пространства, срабатывание автоматического масштабирования и т. Д.

4. Приложение (пример конфигурации)

Следующие примеры шагов настройки основаны на результатах, описанных в разделе «Процедуры развертывания». Вам потребуется учетная запись Alibaba Cloud для запуска следующей конфигурации. Если вы еще не получили его, вы можете зарегистрироваться (используя бесплатный кредит на сумму 300 долларов США на момент написания этой статьи) по этой ссылке .

1. VPC и конфигурация сети (определение зоны обслуживания и плана для конфигурации сети)

  1. Войдите в консоль Alibaba Cloud
  2. Создать «VPC». Перейдите в раздел «Продукт» и нажмите «Виртуальное частное облако» в разделе «Сеть». Выберите регион как «Азиатско-Тихоокеанский регион SE 1». Попав на страницу обзора VPC, нажмите «VPC» на боковой вкладке, затем нажмите кнопку «Создать VPC».
    • Наименование: VPC-Main
    • Диапазон CIDR: 192.168.0.0/16
  3. Создайте «подсеть». Одна подсеть для экземпляра WordPress и одна подсеть для RDS.
    • Первая подсеть (перейдите к шагу 2 «Следующий шаг», чтобы «Создать VSwitch»):
      • VPC: недавно созданный VPC (например, VPC-Main)
      • Имя: Public-Subnet1
      • Зона: Зона А
      • CIDR: 192.168.1.0/24
    • Вторая подсеть (нажмите «Создать еще», чтобы создать второй переключатель):
      • VPC: недавно созданный VPC (например, VPC-Main)
      • Имя: Public-Subnet2
      • Зона: Зона А
      • CIDR: 192.168.2.0/24

2. Настройка группы безопасности (настройка брандмауэра)

  1. Создать «Группу безопасности». Перейдите в раздел «Продукт» и нажмите «Сервис эластичных вычислений». Попав на страницу обзора ECS, нажмите «Группа безопасности» на боковой вкладке, затем нажмите «Создать группу безопасности».
    • Имя: Любое имя. Например, SG-SSH-HTTP
    • Тип сети: VPC
    • VPC: VPC-Main
    • Нажмите «Установить правило немедленно»
  2. Добавить правило. Нажмите «Добавить правила группы безопасности»
    • Первое правило (SSH для любого входящего клиента)
      • Направление правила: входящий
      • Политика авторизации: Разрешить
      • Тип протокола: SSH
      • Объект авторизации: 0.0.0.0/0
    • Второе правило (HTTP для любого входящего клиента)
      • Направление правила: входящий
      • Политика авторизации: Разрешить
      • Тип протокола: HTTP
      • Объект авторизации: 0.0.0.0/0
    • Третье правило (весь протокол для любой исходящей цели)
      • Направление правила: исходящий
      • Политика авторизации: Разрешить
      • Тип протокола: все
      • Объект авторизации: 0.0.0.0/0

3. Конфигурация ECS (Настройка прикладного уровня — часть 1)

  1. Создайте «пару ключей». Перейдите в раздел «Продукт» и нажмите «Сервис эластичных вычислений». На странице обзора ECS нажмите «Пары ключей» на боковой вкладке, затем нажмите «Создать пару ключей».
    • Наименование: ECS-Lab
    • Тип: Автоматически создать пару ключей
    • Файл пары ключей с именем «ECS-Lab.pem» должен быть автоматически загружен. Этот файл будет использоваться в качестве вашего ключа аутентификации при подключении к экземпляру ECS.
  2. Создайте экземпляр ECS для вашей установки WordPress. Перейдите в раздел «Продукт» и нажмите «Сервис эластичных вычислений». На странице обзора ECS нажмите «Экземпляры» на боковой вкладке, затем нажмите кнопку «Создать экземпляр».
    • Модель ценообразования: Pay-As-You-Go
    • Регион и зона: Азиатско-Тихоокеанский регион ЮВ 1 (Сингапур), Азиатско-Тихоокеанский регион ЮВ 1 зона А
    • Тип экземпляра: Общий тип n1 — 1 ядро, 1 ГБ
    • Тип сети: выберите соответственно созданные «VPC» (VPC-Main), VSwitch (Public-Subnet1) и группу безопасности (SG-SSH-HTTP)
    • Операционная система: Ubuntu 16.04
    • Настройка безопасности: Присоединить пару ключей, выберите сгенерированную пару ключей на шаге 6 (ECS-Lab).
    • Имя экземпляра: ECS-Lab-WP
    • Нажмите «Купить сейчас» и действуйте соответственно
  3. SSH в купленный экземпляр ECS с парой ключей, созданной на шаге 3.1. Обратитесь к этой ссылке, чтобы узнать, как подключить SSH к экземпляру ECS. Перейдите в раздел «Продукт» и нажмите «Сервис эластичных вычислений». Попав на страницу обзора ECS, нажмите «Экземпляры» на боковой вкладке. IP-адрес в Интернете указан в столбце «IP-адрес».

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

apt-get update
apt-get install apache2 libapache2-mod-php php php-mcrypt php-mysql mysql-client-core-5.7 -y
cd /var/www/html
mv index.html index.html.bk
wget https://wordpress.org/latest.tar.gz
tar -xzf latest.tar.gz
cp -r wordpress/* /var/www/html/
rm -rf wordpress latest.tar.gz
chown -R www-data:www-data /var/www/html 
chmod -R 755 /var/www/html/wp-content
service apache2 restart

4. Конфигурация ApsaraDB RDS (настройка уровня базы данных)

  1. Создать ApsaraDB RDS — MySQL. Перейдите в «Продукт» и нажмите «ApsaraDB для RDS». Попав на страницу RDS, нажмите «Создать экземпляры».
    • Способ оплаты: Pay-As-You-Go
    • Регион и зона: Сингапур, несколько зон (зона A + зона B)
    • СУБД: MySQL
    • Тип экземпляра: 1 ядро, 1 ГБ (rds.mysql.t1.small)
    • Тип сети: «VPC» и выберите VPC (VPC-Main) и VSwitch (Public-Subnet2) соответственно
    • Нажмите «Купить сейчас» и действуйте соответственно
  2. Настройте экземпляр RDS. Перейдите в «Продукт» и нажмите «ApsaraDB for RDS» (может пройти некоторое время, прежде чем купленный «RDS» появится на странице). После того, как купленный RDS запущен и работает, нажмите «Управление» на RDS.
  3. Создайте белый список. Нажмите «Безопасность» на боковой вкладке. На вкладке «Настройка белого списка» нажмите «+ Добавить группу белого списка».
    • Название группы: rds_ecs_whitelist
    • Белый список: 192.168.1.0/24
    • Нажмите «ОК»
  4. Создайте базу данных «wordpress». Нажмите «Базы данных» на боковой вкладке, затем «Создать базу данных».
    • Название базы данных: WordPress
    • Поддерживаемые символы: utf8
    • Нажмите ОК
  5. Создать учетную запись пользователя. Нажмите «Аккаунты» на боковой вкладке, затем «Создать аккаунт».
    • Учетная запись базы данных: wordpress_user
    • Авторизованные базы данных: выберите созданную базу данных (wordpress)
    • Пароль и введите пароль: WordPress123 (введите свой более безопасный пароль здесь)
  6. Нажмите «ОК», чтобы создать учетную запись.

5. Конфигурация WordPress (Настройка уровня приложения — Часть 2)

  1. Найдите интернет-IP-адрес ECS (созданный на шаге 3.2) с помощью веб-браузера.
  2. Заполните детали подключения MySQL, такие как «Имя базы данных», «Имя пользователя», «Пароль», как определено в шаге 4.2. «Хост базы данных» — это «адрес в интрасети» созданного экземпляра RDS в 4.1. Вы можете получить адрес интрасети, зайдя в консоль Alibaba Cloud по адресу «Продукт» и нажав «ApsaraDB for RDS». Попав на страницу RDS, щелкните созданный экземпляр RDS и скопируйте значение «Адрес в интрасети».
  3. Нажмите «Запустить при установке» и продолжайте настройку WordPress до завершения. Ура! К настоящему времени ваш первый экземпляр WordPress должен быть установлен и запущен в Alibaba Cloud !

6. Синхронизировать зависимое хранилище данных (определить централизованное хранилище)

  1. Папка, используемая WordPress для хранения пользовательских файлов, должна быть синхронизирована с централизованным хранилищем.
  2. Создайте ведро OSS . Перейдите в «Продукт» и нажмите «Служба хранения объектов» в разделе «Хранилище и CDN». Когда вы окажетесь на странице хранения объектов, нажмите «Создать корзину» в RDS.
    • Название корзины: lab-wp-XXX (используя ваше собственное имя корзины)
    • Регион: Азиатско-Тихоокеанский регион ЮВ 1 (Сингапур)
    • Класс хранения: стандартный
    • ACL: частный
    • Нажмите ОК
  3. Предоставьте доступ к корзине, созданной на шаге 14. Перейдите в «Продукт» и нажмите «Управление доступом к ресурсам» в разделе «Мониторинг и управление». Как только вы попали на страницу ОЗУ, нажмите «Пользователь», затем «Создать пользователя».
    • Имя пользователя: oss-user
    • Нажмите ОК
  4. Авторизуйте созданного пользователя с доступом OSS . Перейдите в «Продукт» и нажмите «Управление доступом к ресурсам» в разделе «Мониторинг и управление». После того, как вы попали на страницу ОЗУ, нажмите кнопку «Авторизовать» для вновь созданного пользователя.
    • Выберите и добавьте «AliyunOSSFullAccess»
    • Нажмите ОК
  5. Сгенерируйте «Ключ доступа пользователя». Перейдите в «Продукт» и нажмите «Управление доступом к ресурсам» в разделе «Мониторинг и управление». После того, как вы попали на страницу ОЗУ, нажмите «Управление» для вновь созданного пользователя.
  6. Перейдите в раздел «Ключ доступа пользователя» и нажмите «Создать ключ доступа».
  7. Нажмите «Сохранить информацию о ключе доступа», чтобы сохранить сгенерированный ключ доступа и секретный ключ доступа.
  8. Установите инструмент «ossfs». Этот инструмент используется для синхронизации зависимой папки WordPress с корзиной OSS, созданной на шаге 6.2.
  9. SSH в запущенный экземпляр WordPress ECS
  10. Установите ‘ossfs’ в соответствии с инструкциями по этой ссылке
  11.  cd
    wget https://github.com/aliyun/ossfs/releases/download/v1.80.3/ossfs_1.80.3_ubuntu16.04_amd64.deb
    sudo apt-get update
    sudo apt-get install gdebi-core -y
    sudo gdebi ossfs_1.80.3_ubuntu16.04_amd64.deb
    
  12. Создайте каталог загрузок WordPress:
  13.  mkdir -p /var/www/html/wp-content/uploads
    chown -R www-data:www-data /var/www/html/wp-content/uploads
    
  14. Настройте учетные данные с именем и ключом корзины, созданными на шагах 6.2 и 6.5 соответственно.
  15.  chmod 640 /etc/passwd-ossfs
    
  16. Смонтируйте зависимую папку ‘lab-wp-XXX’ OSS bucket в WordPress ‘и включите автоматическое монтирование во время запуска экземпляра.
  17. Добавьте следующую команду в /etc/fstablab-wp-XXX Остерегайтесь использования правильной зоны. Например, « http://oss-ap-southeast-1.aliyuncs.com »
  18. echo "ossfs#lab-wp-XXX /var/www/html/wp-content/uploads fuse _netdev,url=http://oss-ap-southeast-1.aliyuncs.com,allow_other, 0 0" >> /etc/fstab

  19. Выполните операцию монтажа: mount -a
  20. Чтобы избежать сканирования смонтированного сегмента OSS в Linux (что приводит к ненужным затратам), добавьте следующие данные в «/etc/updatedb.conf»:
    • Добавьте «/ var / www / html / wp-content / uploads» в PRUNEPATHS
    • Добавьте «fuse.ossfs» в PRUNEFS

7. Высокая доступность, отказоустойчивость и конфигурация баланса нагрузки

  1. Создайте балансировщик нагрузки . На странице обзора ECS нажмите «Балансировщик нагрузки» на боковой вкладке. На странице «Балансировщик нагрузки» нажмите «Создать балансировщик нагрузки сервера».
    • Регион: Сингапур
    • Зона: мульти-зона
    • Основная зона: зона А
    • Резервная зона: зона B
    • Тип экземпляра: Интернет
    • Количество в наличии: 1
  2. Настройте балансировщик нагрузки. На странице обзора ECS нажмите «Балансировщик нагрузки» на боковой вкладке. После загрузки страницы балансировщика нагрузки нажмите «Управление» на купленном балансировщике нагрузки на шаге 7.1.
  3. Нажмите «Слушатель», а затем нажмите кнопку «Добавить слушателя».
    • Протокол переднего плана: HTTP, порт 80
    • Внутренний протокол: HTTP, порт 80
    • Планирование: взвешенный раунд
    • Нажмите «Показать аванс» и включите постоянный сеанс
    • Время ожидания: 300
  4. Нажмите «Далее», чтобы настроить проверку работоспособности.
    • Доменное имя: Оставьте пустым
    • Порт проверки работоспособности: 80
    • Проверка работоспособности: /index.php
    • Нормальный код состояния: включите http_2xx и http_3xx
    • Нажмите «Подтвердить», чтобы настроить балансировщик нагрузки.
  5. Обновите интернет-IP-адрес балансировщика нагрузки в WordPress. Это важно, поскольку работающий экземпляр WordPress был автоматически настроен с использованием действующего IP-адреса ECS. Нам нужно изменить IP-адрес, чтобы он указывал на IP-адрес балансировщика нагрузки, так как WordPress может быть запущен любым экземпляром ECS за балансировщиком нагрузки. Если у вас есть доменное имя, вы можете вместо этого перейти на доменное имя.
    • Перейдите к WordPress с помощью браузера. Перейдите по ссылке «Настройки», например, «http: // /wp-admin/options-general.php », а затем измените« Адрес WordPress (URL) »и« Адрес сайта (URL) »соответственно на IP-адрес балансировщика нагрузки в Интернете.
  6. Остановите экземпляр ECS. Перейдите в раздел «Продукт» и нажмите «Сервис эластичных вычислений». Попав на страницу обзора ECS, нажмите «Экземпляры» на боковой вкладке, затем «Еще» и затем «Стоп».
  7. Создайте пользовательское изображение. Как только ECS остановится, нажмите «Еще», затем «Создать пользовательское изображение».
    • Название изображения: IMG-WP
    • Описание изображения: Изображение для WordPress
  8. Перезапустите ECS после завершения создания «пользовательского изображения» на шаге 22 (вы можете проверить статус создания в разделе «Снимок»). Перейдите в раздел «Продукт» и нажмите «Сервис эластичных вычислений». Попав на страницу обзора ECS, нажмите «Экземпляры» на боковой вкладке, затем «Еще» и затем «Пуск».
  9. После запуска ECS создайте группу автоматического масштабирования . Перейдите в «Product» и нажмите «Auto Scaling» в разделе «Elastic Computing». При попадании на страницу «Автоматическое масштабирование» нажмите «Создать группу масштабирования».
    • Имя масштабирующей группы: ASG-WS
    • Максимальное количество: 2
    • Минимальное количество: 2
    • Время охлаждения по умолчанию: 300
    • Тип сети: VPC и выберите VPC (VPC-Main) и VSwitch (Public-Subnet1)
    • Балансировщик нагрузки сервера: выберите балансировку нагрузки, созданную на шаге 7.1. Возможно, вам придется нажать «Загрузить дополнительные данные», чтобы отобразить балансировщик нагрузки.
    • Настройте источник ECS и «Определенное пользователем изображение» соответственно.
    • Нажмите кнопку «Отправить».
  10. Создайте «конфигурацию масштабирования». Нажмите «Создать конфигурацию масштабирования».
    • Источник ECS: выберите тот, который был перезапущен на шаге 7.8.
    • Имя конфигурации: ASG_ECS_WP
    • Группа безопасности: выберите группу, созданную на шаге 2.1.
    • Пользовательское изображение: выберите изображение, созданное на шаге 7.7.
    • Нажмите «Далее», затем «ОК» и «Включить» группу автоматического масштабирования .
    • Получите общедоступный IP-адрес балансировщика нагрузки. Перейдите в раздел «Продукт» и нажмите «Сервис эластичных вычислений». Попав на страницу обзора ECS , нажмите «Балансировщик нагрузки» на боковой вкладке. Общий IP-адрес находится в столбце «IP-адрес».
  11. Проверка работоспособности, выполняемая балансировщиком нагрузки, может занять некоторое время. Вы можете посетить приложение WordPress, используя публичный IP-адрес Load Balancer, когда статус Load Balance отображается как «нормальный».

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

Если вы хотите купить доменное имя, перейдите в раздел «Домен» в разделе «Домен и сайты» и перейдите к покупке.

Если вы хотите связать свое доменное имя с развернутым WordPress, перейдите к «Alibaba Cloud DNS » в разделе «Домен и сайты» и добавьте как минимум записи «A» для публичного IP-адреса «Балансировка нагрузки сервера».