Код PHP на отдельном сервере от Apache?

Это то, чего я никогда не видел, и я не появляюсь в своих исследованиях, но мой босс заинтересован в этой идее. Мы рассматриваем некоторые варианты балансировки нагрузки и задаемся вопросом, возможно ли установить apache и php на нескольких серверах, управляемых балансировщиком нагрузки, но при этом иметь весь фактический код php на одном сервере с различными серверами apache, указывающими на одна центральная кодовая база?


person Amy Anuszewski    schedule 29.07.2010    source источник


Ответы (3)


Например, монтирование NFS, конечно, возможно, но я бы не рекомендовал это делать. Многие преимущества балансировки нагрузки теряются, и вы вновь создаете единую точку отказа. При синхронизации кода и rsync cronjob может справиться сам с собой очень хорошо, или можно выполнить rsync вручную при развертывании.

По какой причине вам нужна эта центральная кодовая база? Я примерно на 99% уверен, что есть лучшее решение, чем один сервер, выдающий код.

person Wrikken    schedule 29.07.2010
comment
или даже оформить заказ из системы контроля версий. И NFS, безусловно, не единственная альтернатива сетевой файловой системе, которую можно рассмотреть. - person Vinko Vrsalovic; 30.07.2010

Я верю, что это возможно. Чтобы добавить к ответу Вриккена, я могу представить, что NFS может быть хорошим выбором. Однако есть некоторые недостатки и предостережения. Во-первых, когда Apache пытается получить доступ к файлам в общей папке NFS, которая исчезла (соединение разорвано, произошел сбой хоста и т. д.), происходят очень плохие вещи. Apache блокируется и продолжает попытки получить файл. Процессы, пытающиеся получить доступ к общему ресурсу, по какой-либо причине не умирают, и необходимо перезагрузить сервер.

Если вам все же придется это делать, я бы порекомендовал кеш кода операции, такой как APC. APC будет кэшировать предварительно обработанный php локально и устранит повторные обращения к вашему хранилищу. Просто будьте готовы очищать кеш кода операции всякий раз, когда вы обновляете свое приложение/

person Chris Henry    schedule 30.07.2010
comment
По моему опыту, APC — это хороший кеш, но он проверяет файл на время модификации, поэтому не требует очистки при обновлении файлов и в равной степени терпит неудачу, если файлов нет. Или я пропустил некоторые настройки APC? - person Wrikken; 30.07.2010
comment
Конечно, apc.stat, для которого по умолчанию установлено значение 1, и он не включен в файл apc.ini по умолчанию. Если установлено значение 0, APC не будет проверять дату обновления php-файлов и сохранит предварительно обработанную версию до тех пор, пока кэш кода операции не будет очищен. Прирост производительности с настройкой 0 довольно огромен, кстати. - person Chris Henry; 30.07.2010

PHP должен работать под чем-то, чтобы действовать как веб-процессор, Apache — самый популярный. Я выполнил монтирование NFS между серверами без проблем. Скорее всего, если NFS не работает, сеть не работает. Но выполнение rsync между серверами для репликации файлов не займет много времени, и это действительно лучшая идея.

Я не уверен, на что похож ваш контент, но вы можете разделить статические файлы, такие как javascript, css и изображения, чтобы они находились на своем собственном сервере. lighttpd — хороший, легкий веб-сервер для таких вещей. Тогда вы получите «выделенный» php-сервер. Для этой настройки вам даже не нужен балансировщик нагрузки.

Имейте в виду, что PHP хранит сеансы в локальной файловой системе. Поэтому, если вы используете сеансы, вам необходимо убедиться, что пользователи всегда возвращаются на один и тот же сервер. В противном случае вам нужно сделать что-то вроде хранения сессий в memcache.

person Brent Baisley    schedule 30.07.2010