Як запустити WordPress через 2 VM для високої доступності


12

Microsoft Azure вимагає, щоб додатки використовували два екземпляри в декількох центрах обробки даних, щоб досягти їх «високої доступності» угод про надання послуг та забезпечити, щоб ваші сайти не працювали на регулярне обслуговування. Вони навіть розповідають, які пари центрів обробки даних одночасно не підуть на обслуговування.

Це все добре і добре, але як би ви це легко зробили на практиці для такого додатка, як WordPress, з базою даних MySQL на тому ж VM? Мені не дивно завантажувати балансування між двома ВМ, але налаштування реплікації бази даних уникає мене. Ми не хотіли б, щоб дві версії даних могли вийти із синхронізації. Як видається, для реплікації MySQL потрібна настройка ведучого-підлеглого, яка б не змогла синхронізувати зміни до головного БД, якщо користувач приземлився на підлеглому екземплярі.

Я просто розумію це поняття? Будь-яка допомога дуже цінується!


1
Чому ви розміщуєте WordPress на Azure? Є кращий і дешевший хостинг для WordPress. Наприклад, Цифровий океан.
Олексій

1
Алексу, це не дуже актуально, але у нас досить великий стек, розповсюджений по всій інфраструктурі Azure, WordPress - лише один компонент. Azure - це фантастична платформа, і ми дуже задоволені нею.
Ярон

1
gotcha. Ви повинні робити те, що вам потрібно зробити :) Мені також подобається Azure для більшості моїх .NET-матеріалів, але завжди розміщуються WP-сайти окремо.
Олексій

Яроне, чи знайшла ти відповідь нижче корисною? Поки що отримано 3 оновлення, просто хотілося перевірити, чи не знайдено будь-якої важливої ​​концепції, щоб я міг оновити, щоб вирішити її для вашого конкретного випадку використання.
Bryan 'BJ' Hoffpauir Jr.

1
Дякую за ретельну відповідь @ Bryan'BJ'Hoffpauir і вибачте, що не встиг спробувати слідувати вашим інструкціям, щоб побачити, чи працюють вони з нашою реалізацією. Я позначаю відповідь правильною і знову звернуся, якщо у мене виникнуть проблеми. Знову дякую!!
Ярон

Відповіді:


11

Погані новини: Основна база даних Wordpress з відкритим кодом робить досить багато припущень щодо запуску на одному сервері (wp-контент, завантаження користувача та медіатека, щоб назвати декілька)

Хороша новина: Досить багато всіх постачальників хмарних ситуацій (включаючи Azure) мають абстракції, які дозволяють обійти ці обмеження дизайну.

По суті, ви вирішите такі проблеми:

  • Завантажте балансуючий трафік між двома (або більше) веб-серверами / веб-додатками Wordpress. Не надто складно, оскільки Wordpress НАЙБІЛЬШЕ без громадянства, якщо ви не дозволяєте користувачам входити на сайти. Це робиться за допомогою комбінації DNS і балансирів навантаження. Вам знадобиться підтримка 2 IP-адрес для ваших серверів додатків - 1 набір підключиться до підмережі, яка може бути маршрутизована через Інтернет (хоча, сподіваємось, захищена брандмауером, не зазначена внизу), а інші два будуть знаходитись у РІЗНОМУ підмережі, виділеній від інша мережа і містить екземпляри сервера баз даних, але базовий контур такий:
                     / - (10.0.0.1 - eth0) wp1.domain.com (10.0.1.1 - eth2)
(Загальнодоступний IP) wp.domain.com          
                     \ - (10.0.0.2 - eth1) wp2.domain.com (10.0.1.2 - eth3)
  • Керуючи сесіями, якщо ви дозволяєте користувачам входити на сайти. Якщо це так, вам потрібно буде переконатися, коли вони ввійдуть на сервер 1, чи будь-який їх майбутній запит буде переадресований на цей сервер (липкі сесії), або що не має значення, до якого сервера вони мають доступ, оскільки сесіями керується через якийсь інший механізм (наприклад, через кластеризацію сеансу Zend Server , наприклад).

  • Керування входами адміністратора Якщо ви дозволяєте деяким користувачам увійти до бек-енду для керування вмістом (подібним до вище).

  • Вибір системи БД, яка ТАКОЖ доступна. Немає сенсу мати два сервери на передньому кінці, якщо ваш збій БД збиває всю систему. Вам потрібно використовувати реплікацію MySQL Master / Slave через ClearDB або модифікувати WordPress через плагін, щоб використовувати SQL Server, щоб ви могли використовувати його рідні системи кластеризації . Це означатиме, що вам потрібно щонайменше 4 ВМ, якщо ви хочете самостійно керувати рівнем БД (2 x додаток та 2 х БД). Ось як це може виглядати:

               / - wp1.domain.com (10.0.1.1) \ --- / (10.0.1.3) db1.domain.com (10.0.2.3) \
         wp.domain.com X |           
               \ - wp2.domain.com (10.0.1.2) / --- \ (10.0.1.4) db2.domain.com (10.0.2.3) /

  • ПРИМІТКА - для забезпечення надійного відмови та захисту безпеки системи, підмережа ТРЕТИХ мереж зазвичай використовується для з'єднання двох вузлів бази даних один з одним приватним каналом, який відокремлений від інших мереж зв'язку, з якими сервери додатків використовують для спілкування база даних та сервери додатків використовують для спілкування із зовнішнім світом.

  • Увімкнення об'єднання підключення для досягнення максимальної продуктивності та надійності підключень до бази даних вашого сервера додатків.

  • Використовуючи плагін кешування, як кеш-пам'ять W3 Total або Super Cache, щоб мінімізувати навантаження на сервери на передній частині.

У наступних посібниках викладено конкретні відомості про те, як можна вирішити кожну з вищезазначених проблем. У Azure існує декілька способів впоратися з кожним, тому вирішувати, як ви хочете атакувати кожен виклик, то вирішувати обмеження, які кожен із цих варіантів накладає, коли ви працюєте вгору та вниз по стеку.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.