2010-07-29 4 views
3

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

ответ

4

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

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

+0

или даже выписка из системы контроля версий. И NFS, конечно, не единственная альтернатива для сетевой файловой системы. –

+0

Вы правы, общий ресурс NFS был всего лишь примером. – Wrikken

0

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

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

+0

По моему опыту, APC - это хороший кэш, который имеет, но проверяет файл на modtimes, поэтому не требуется очистка при обновлении файлов и в равной степени терпит неудачу, если файлов там нет. Или я пропустил некоторые настройки APC? – Wrikken

+0

Уверен, apc.stat, который по умолчанию установлен в 1 и не включен в файл apc.ini по умолчанию. Если установлено значение 0, APC не проверяет обновленную дату php-файлов и сохраняет предварительно обработанную версию до тех пор, пока кеш-код операции не будет очищен. Увеличение производительности с настройкой 0 довольно велико, кстати. –

0

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

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

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

Смежные вопросы