Это то, чего я никогда не видел, и я не появляюсь в своих исследованиях, но мой босс заинтересован в этой идее. Мы рассматриваем некоторые варианты балансировки нагрузки и задаемся вопросом, возможно ли установить apache и php на нескольких серверах, управляемых балансировщиком нагрузки, но при этом иметь весь фактический код php на одном сервере с различными серверами apache, указывающими на одна центральная кодовая база?
Код PHP на отдельном сервере от Apache?
Ответы (3)
Например, монтирование NFS, конечно, возможно, но я бы не рекомендовал это делать. Многие преимущества балансировки нагрузки теряются, и вы вновь создаете единую точку отказа. При синхронизации кода и rsync cronjob может справиться сам с собой очень хорошо, или можно выполнить rsync вручную при развертывании.
По какой причине вам нужна эта центральная кодовая база? Я примерно на 99% уверен, что есть лучшее решение, чем один сервер, выдающий код.
Я верю, что это возможно. Чтобы добавить к ответу Вриккена, я могу представить, что NFS может быть хорошим выбором. Однако есть некоторые недостатки и предостережения. Во-первых, когда Apache пытается получить доступ к файлам в общей папке NFS, которая исчезла (соединение разорвано, произошел сбой хоста и т. д.), происходят очень плохие вещи. Apache блокируется и продолжает попытки получить файл. Процессы, пытающиеся получить доступ к общему ресурсу, по какой-либо причине не умирают, и необходимо перезагрузить сервер.
Если вам все же придется это делать, я бы порекомендовал кеш кода операции, такой как APC а>. APC будет кэшировать предварительно обработанный php локально и устранит повторные обращения к вашему хранилищу. Просто будьте готовы очищать кеш кода операции всякий раз, когда вы обновляете свое приложение/
PHP должен работать под чем-то, чтобы действовать как веб-процессор, Apache — самый популярный. Я выполнил монтирование NFS между серверами без проблем. Скорее всего, если NFS не работает, сеть не работает. Но выполнение rsync между серверами для репликации файлов не займет много времени, и это действительно лучшая идея.
Я не уверен, на что похож ваш контент, но вы можете разделить статические файлы, такие как javascript, css и изображения, чтобы они находились на своем собственном сервере. lighttpd — хороший, легкий веб-сервер для таких вещей. Тогда вы получите «выделенный» php-сервер. Для этой настройки вам даже не нужен балансировщик нагрузки.
Имейте в виду, что PHP хранит сеансы в локальной файловой системе. Поэтому, если вы используете сеансы, вам необходимо убедиться, что пользователи всегда возвращаются на один и тот же сервер. В противном случае вам нужно сделать что-то вроде хранения сессий в memcache.