У меня есть клиент с популярным блогом на Wordpress, который время от времени испытывает кратковременные всплески трафика (когда сайт продвигается по национальному телевидению). Блог уже размещен на инстансе Amazon EC2, и мы изучаем возможность использования балансировщика нагрузки Amazon, чтобы помочь с пиками.
Два общих вопроса по этому поводу:
Чтобы настроить это, могу ли я просто создать образ машины (AMI) с существующего сервера, а затем скопировать его в новый экземпляр и сказать балансировщику нагрузки разделить трафик между двумя экземплярами? (Или больше двух, я полагаю ...)
Когда моему клиенту нужно отредактировать контент в блоге, мне кажется, что мне понадобится способ указать им на один конкретный «главный» экземпляр, чтобы они могли использовать инструмент администратора 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.