Microsoft Azure требует, чтобы приложения использовали два экземпляра в нескольких центрах обработки данных, чтобы достичь своего SLA «высокой доступности» и обеспечить, чтобы ваши сайты не выходили из строя для планового обслуживания. Они даже сообщают вам, какие пары центров обработки данных никогда не пойдут на техническое обслуживание одновременно.
Это все хорошо, но как бы вы могли сделать это легко на практике для такого приложения, как WordPress, с базой данных MySQL на той же виртуальной машине? Мне не привыкать балансировать нагрузку между двумя виртуальными машинами, но настройка репликации базы данных ускользает от меня. Нам не нужны две версии данных, которые могут быть не синхронизированы. Репликация MySQL, кажется, требует установки master-slave, которая не сможет синхронизировать изменения в master DB, если пользователь попадет на экземпляр slave.
Я просто неправильно понимаю эту концепцию? Любая помощь высоко ценится!
Ответы:
Плохая новость: основная база WordPress с открытым исходным кодом делает довольно много предположений о том, чтобы работать на одном сервере (wp-контент, пользовательские загрузки и медиа-библиотека и многие другие)
Хорошая новость. Практически все облачные провайдеры (включая Azure) имеют абстракции, позволяющие обойти эти ограничения дизайна.
По сути, вы будете решать следующие проблемы:
Управление сессиями, если вы разрешаете пользователям входить на сайты. Если это так, вам нужно будет убедиться, что при входе на сервер 1 все их будущие запросы будут перенаправлены на этот сервер (липкие сеансы) или что не имеет значения, к какому серверу они обращаются, поскольку сеансы управляются через какой-то другой механизм (например, через кластеризацию сеансов Zend Server ).
Управление логинами администратора Если вы разрешаете некоторым пользователям входить в бэкэнд для управления контентом (аналогично описанному выше).
Выбор системы БД, которая ТАКЖЕ доступна. Нет смысла иметь два интерфейсных сервера, если сбой вашей БД приводит к выходу из строя всей системы. Вам нужно будет использовать репликацию MySQL Master / Slave через ClearDB или изменить WordPress через плагин, чтобы использовать SQL Server, чтобы вы могли использовать его собственные системы кластеризации . Это будет означать, что вам нужно как минимум 4 ВМ, если вы хотите самостоятельно управлять слоем БД (2 x App и 2 x DB). Вот как это может выглядеть:
ПРИМЕЧАНИЕ. - для обеспечения надежного переключения при отказе и защиты системы, сетевая подсеть THIRD обычно используется для соединения двух узлов базы данных друг с другом через частный канал, который отделен от других сетей связи, с которыми серверы приложений используют для связи. база данных и серверы приложений используют для связи с внешним миром.
Включение пула соединений для максимальной производительности и надежности соединений с базой данных вашего сервера приложений.
Использование плагина кэширования, такого как W3 Total Cache или Super Cache, для минимизации нагрузки на внешние серверы.
Следующие руководства предлагают подробности о том, как вы можете решить каждую из вышеуказанных проблем. Существует несколько способов обработки каждого из них в Azure, поэтому вам нужно решить, как вы хотите атаковать каждый вызов, а затем справиться с ограничениями, которые накладывает каждый из этих вариантов по мере работы вверх и вниз по стеку.
источник