Кластеризация веб-сервера
Несколько веб-серверов
При использовании нескольких веб-серверов для работы сайта любой запрос любого посетителя сайта может попасть на любой из узлов кластера О том, как именно могут распределяться коннекты к разным веб-серверам смотрите Способы балансировки нагрузки между нодами веб-сервера .
Такой принцип работы ставит две задачи:
- На каждом веб-сервере должен находиться одинаковый контент ( файлы Например, картинка, загруженная через административный интерфейс на одном веб-сервере, должна быть доступна для отдачи посетителю через другой веб-сервер. ).
- Пользовательская сессия должна быть "прозрачной" для всех серверов веб-кластера Например, после авторизации на одном из серверов пользователь должен считаться авторизованных и для всех других серверов. И наоборот, окончание сессии на любом сервере должно означать ее окончание на всех серверах сразу. .
Не все эти задачи могут быть решены в полной степени на уровне веб-приложения. Опишем возможные подходы, покажем на примерах конкретные реализации и расскажем о тех инструментах модуля Веб-кластер платформы "1С-Битрикс", которые помогают решить вопрос кластеризации веб-сервера.
Решение задач
Существует два возможных метода обеспечения синхронизации данных на серверах:
- Использование общего дискового хранилища данных.
- Использование инструментов синхронизации данных между локальными хранилищами разных серверов.
Кроме того, можно использовать пул серверов Пул серверов - это логически автономная область, содержащая один или несколько физических серверов. memcached (что позволяет значительно сократить объем синхронизируемых файлов за счет вынесения кеша продукта с файловой системы в memcached) и различные варианты хранения пользовательских сессий.
Каждый веб-сервер кластера можно добавить в общий веб-кластер для мониторинга в административном интерфейсе в разделе
Веб-сервера
На странице Веб-сервера (Настройки > Веб-кластер > [_название_группы_] > Веб-сервера) показаны статусы активности и текущей нагрузки веб-серверов. Страница носит информационный характер.
Подробнее ...
.
На каждом из серверов необходимо настроить страницу, на которой будет отображаться статистика веб-сервера Apache (с помощью модуля mod_status). Если используется "1С-Битрикс: Веб-окружение", необходимо:
- Внести изменения в конфигурационный файл Apache (
/etc/httpd/conf/httpd.conf
) - добавить:<IfModule mod_status.c> ExtendedStatus On <Location /server-status> SetHandler server-status Order allow,deny Allow from 10.0.0.1 Allow from 10.0.0.2 Deny from All </Location> </IfModule>
Директива
Location
обозначает адрес, по которому будет доступна статистика, строкиAllow from
определяют, с каких IP-адресов статистика будет доступна для просмотра. Можно указать IP всех веб-серверов кластера.Перечитать конфигурационные файлы Apache с помощью команды:
# service httpd reload
- Внести изменения в конфигурационный файл nginx (
/etc/nginx/nginx.conf
) - в первой секции server добавить:Location ~ ^/server-status$ { proxy_pass http://127.0.0.1:8888; }
Перечитать конфигурационные файлы nginx с помощью команды:
# service nginx reload
- Отредактировать файл
/home/bitrix/www/.htaccess
, добавив после строки:RewriteCond %{REQUEST_FILENAME} !/bitrix/urlrewrite.php$ ...строку: RewriteCond %{REQUEST_URI} !/server-status$
После внесения всех необходимых изменений адрес server-status'а можно добавить в конфигурацию кластера .
и Ваше мнение важно для нас