Распределенная система для LiveStreet

Добрый день сообщество. Возможно кто-либо знает. Есть ли возможность разнести LiveStreet на несколько серверов (кроме внешнего сервера БД). Это нужно для увеличения производительности при больших нагрузках.

Есть ли возможность настроить CMS так, что бы на одном виртуальном сервере находился Nginx раздающий папку /uploads, а на другой виртуалке Apache занимающийся обработкой скриптов? В конфигах заметил загадочную строку:

$config['path']['root']['web']        = 'http://'.$_SERVER['HTTP_HOST'];     // полный WEB адрес сайта
$config['path']['root']['server']     = dirname(dirname(__FILE__));           // полный путь до сайта в файловой системе
$config['path']['static']['root']     = '___path.root.web___';            // чтоб можно было статику засунуть на отдельный сервер


Правда я не представляю каким образом с back-end сервера можно положить файл в папочку, которая находится на front-end. Может у кого-то есть опыт администрирование проектов с большой посещаемостью?

5 комментариев

avatar
ну в частности по файловой системе, есть так называемые распределенные файловые системы.

и монтируем эти файловые системы на всех серверах. nginx будет брать из них статику а бекенды будут класть загружаемые файлы.

По конфигруации nginx+ apache на других серверах не настраивал.
Работал только со связкой nginx + php-fpm воркеры на разных серверах. Тут проблемы нет, php-воркеры на работают через указанный им сетевой порт на определенном ip-шнике. В nginx'е задаем

fastcgi_pass   192.168.0.1:9000;
fastcgi_pass   192.168.0.2:9000;
fastcgi_pass   192.168.0.3:9000;
avatar
Возможно, подойдет еще балансировка нагрузки в nginx.
avatar
А apache критичен? Для производительности лучше от него отказаться в сторону nginx и php-fpm

Плюс можно всю загружаемую пользователями статику унести куда-нибудь на S3 или другой внешний ресурс, примеры плагинов есть в каталоге
avatar
Я не знаю. Много людей советуют использовать Апач…
avatar
Если не хотите заворачиваться с передачей сессией между серверами то есть вариант ip_hash у nginx который балансирует не идеально (но, при достаточно большом трафике вполне сносно), но гарантирует что трафик с одного и того же IP будет передаваться на один и тот же сервер — что и решает проблему сессий.

Выглядит конфиг в простейшем виде примерно так:
upstream backend_livestreet {
	ip_hash;
	server 10.1.210.22:8080;
	server 10.1.210.23:8080;
	server 10.1.210.24:8080;
	server 10.1.210.25:8080;
}

proxy_pass http://backend_livestreet; 


Вот вам и балансировка между 4-мя серверами.
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.