Назад | Перейти на главную страницу

«Общая картина» использования решения Amazon load balancer для блога

У меня есть клиент с популярным блогом на Wordpress, который время от времени испытывает кратковременные всплески трафика (когда сайт продвигается по национальному телевидению). Блог уже размещен на инстансе Amazon EC2, и мы изучаем возможность использования балансировщика нагрузки Amazon, чтобы помочь с пиками.

Два общих вопроса по этому поводу:

  1. Чтобы настроить это, могу ли я просто создать образ машины (AMI) с существующего сервера, а затем скопировать его в новый экземпляр и сказать балансировщику нагрузки разделить трафик между двумя экземплярами? (Или больше двух, я полагаю ...)

  2. Когда моему клиенту нужно отредактировать контент в блоге, мне кажется, что мне понадобится способ указать им на один конкретный «главный» экземпляр, чтобы они могли использовать инструмент администратора WordPress на этом сервере, а затем скопировать (rsync) контент из этого экземпляра в другие экземпляры, поэтому у всех будут одинаковые данные. Это правильный подход?

Будем очень признательны за любые другие советы / предложения. Я новичок в балансировщике нагрузки Amazon, поэтому я просто пытаюсь осмыслить общую картину, прежде чем углубляться в детали.

ОБНОВЛЕНИЕ: некоторый статический контент находится в Amazon CloudFront CDN. Я не был знаком с APC, но сейчас изучаю его (спасибо). WP-SuperCache - следующий в списке для реализации. Я считаю, что база данных находится на отдельном экземпляре сервера.

Спасибо, Эрик

Поскольку вы еще не установили WP супер кэш, это действительно должно быть вашим первым шагом. Он довольно прост в установке и может значительно улучшить работу под нагрузкой. Этот плагин способен автоматически генерировать статические html-версии ваших страниц и обслуживать их посетителей, вместо того, чтобы при каждом обращении запускать PHP для динамического создания каждой страницы.

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

    ---WP APP SERVER\
   /                 \
  /                   \
LB-----WP APP SERVER-----DB Server
  \                   /
   \                 /
    ---WP APP SERVER/

Однако я недостаточно знаком с Wordpress, чтобы знать, насколько хорошо он справляется с балансировкой нагрузки. Чтобы все работало правильно, каждый сервер приложений должен не хранить любое состояние (сеансы и т. д.) локально, но, скорее, он должен использовать сервер базы данных для всего. Таким образом, клиенты могут быть перенаправлены на любой из трех внутренних серверов, например, без исключения из сеанса wordpress, в котором они вошли в систему.

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