Конфигурационный файл oproxy.conf
Материал из ISPWiki
По умолчанию, oProxy, а также утилиты oproxyctl, clusterctl, sitesctl и clusterlogs ищут конфиг в /usr/local/ispmgr/etc/oproxy.conf. Он имеет два вида записей:
- Параметр. Имеет имя и значение. Записывается в виде Param имя_параметра "значение"
- Что слушать. Имеет в значениях тип протокола и что (какой сокет) слушать.
- События. Имеет имя и список обрабатывающих скриптов.
Содержание |
Параметры
Существующие параметры (даны значения по умолчанию):
Пути
Param site_disabled_file "/usr/local/ispmgr/etc/cluster_site_disabled.html"
Какую страницу возвращать, если запросили остановленный сайт. В файле поддерживается макрос __SITE__, который заменяется на имя хоста.
Param site_not_found_file "/usr/local/ispmgr/etc/cluster_site_not_found.html"
Какую страницу возвращать, если запросили не существующий сайт. В файле поддерживается макрос __SITE__, который заменяется на имя хоста.
Param sites_list_file "/usr/local/ispmgr/etc/cluster_sites.conf"
Конфиг со списком сайтов кластера. Описание смотрите в статье cluster_sites.conf.
Param nodes_list_file "/usr/local/ispmgr/etc/cluster_nodes.conf"
Конфиг, описывающий узлы кластера. Подробнее см. cluster_nodes.conf
Param command_socket "/tmp/oproxy.sock"
Путь до сокета oProxy. Через него работает утилита oproxyctl.
Param log_file "/var/log/oproxy.log"
Лог-файл.
Param traffic_log_file "/usr/local/ispmgr/var/oproxy-traf.log"
Статистика трафика/нагрузки. Как часто сбрасывать статистику задаётся параметром log_statistics_period.
Param mime_types_file "/etc/mime.types"
Путь до файла, описывающего соответствие расширений файлов их MIME-типам.
Param apache_configs_dir "/etc/apache2/users-conf.d"
Директория, в которой хранятся конфигурационные файлы виртуальных хостов пользователей.
Param apache_binary "/usr/sbin/apache2"
Путь до исполняемого файла веб-сервера Apache.
Таймауты, интервалы
Param log_statistics_period "0"
Как часто сбрасывать статистику по трафику в лог. Задаётся в секундах. Ноль означает "никогда".
Param keepalive_http "5"
Как долго ждать следующего запроса от HTTP-клиента без разрыва соединения. Задаётся в секундах.
Param keepalive_http_backend "60"
Как долго ждать записи/чтения от HTTP-бекенда.
Param keepalive_mysql "120"
Как долго ждать следующего запроса от MySQL-клиента. Задаётся в секундах.
Param keepalive_mysql_backend "600"
Как долго ждать записи/чтения от MySQL-бекенда.
Param log_status_file "/home/httpd-logs/log.status"
Файл для хранения данных о лог-файлах веб-сервера. Необходимо для работы clusterlogs
Обработка соединений
oProxy может слушать несколько сокетов одновременно. Конфигурация сокета каждого сокета задаётся в формате:
Listen тип "сокет"
Тип может быть один из:
- mysql — эмулируем MySQL-сервер
- http — эмулируем HTTP-сервер
- cluster — специальный протокол для запуска команд на сервере
- clusterstat — специальный протокол для создания централизованного сервера статистики
Сокет может иметь вид:
- "/tmp/mysql.sock" — Слушать UNIX-сокет "/tmp/mysql.sock"
- "12.34.56.78:80" — Слушать TCP-сокет на IP 12.34.56.78 на порту 80
- "0.0.0.0:80" — Слушать все IP на порту 80
Например:
Listen mysql "0.0.0.0:3306" Listen mysql "/var/run/mysqld/mysqld.sock" Listen mysql "/tmp/mysql.sock" Listen http "0.0.0.0:80" Listen cluster "0.0.0.0:654" Listen clusterstat "0.0.0.0:655"
Настройка бэкенд-серверов
Param backend_http_sleep "10"
На сколько секунд метить HTTP-сервер умершим в случае, если не удалось к нему подключиться.
Param backend_mysql_sleep "10"
На сколько секунд метить MySQL-сервер умершим в случае, если не удалось к нему подключиться.
Param mysql_prioritized_nodes "0"
Использовать приоритеты узлов MySQL. Если текущий сервер (т.е. с наибольшим приоритетом из всех доступных) отказывает в обслуживании, будет произведено переключение на сервер с более низким приоритетом. Подробнее смотрите cluster_nodes.conf
Param http_percentage_of_errors "50"
Если процент ответов со статусом 5xx от определенного веб-сервера превысит это число, веб-сервер будет считаться сбойным.
Param http_errors_watch_interval "30"
Счётчик ошибок бэкендов будет сбрасываться в ноль раз в указанное количество секунд. Таким образом, процент из параметра http_percentage_of_errors применяется только к текущей статистике.
Param http_errors_down_sleep "10"
На сколько секунд метить HTTP-сервер умершим в случае, если для него накопилось слишком много ошибок. Смотрите также параметры http_percentage_of_errors и http_errors_watch_interval.
Параметры журнала
Param log_http_host_not_found "1"
Писать в лог информацию о запросах несуществующих сайтов.
Param log_http_host_disabled "0"
Писать в лог информацию о запросах к выключенным сайтам.
Param log_http_protocol_errors "0"
Писать в лог ошибки протокола HTTP.
Param log_mysql_user "-"
Писать в лог отладочную информацию об обработке запросов от указанного MySQL-пользователя. Если указать пустую строку — будет журналироваться отладочная информация до момента авторизации пользователя.
Кэш дескрипторов
Param fhcache_size "0"
Сколько файловых дескрипторов статических файлов должен держать в кэше каждый из рабочих процессов.
Param fhcache_timeout "30"
Сколько максимум секунд считать закэшированный файловый дескриптор актуальным. Если файл был открыт более указанных секунд назад, он будет открыт заново.
Прочие параметры
Param worker_count "2"
Сколько рабочих процессов запускать.
Param master_password "password"
Пароль для входящих соединений по соединению типа cluster и clusterstat.
Param direct_send_regexp "^$"
Регулярное выражение, описывающее URI файлов, которые можно отправлять напрямую. Значение по умолчанию запрещает отправлять файлы напрямую.
Param default_mime_type "application/binary"
MIME-тип по умолчанию. Он будет использован для файлов, для которых не нашлось соответствия в файле, указанном в параметре mime_types_file
Param use_sendfile "1"
Использовать ли для отправки статики вызов ядра sendfile(). Заметно сокращает использование CPU при отправке файлов напрямую.
Param accept_http_ranges "1"
Разрешить докачку файлов, отдаваемых напрямую (заголовок "Range" HTTP). Поддерживается только один диапазон в одном запросе:
- Range: bytes=100-199 — поддерживается (запрос 100 байт из середины файла)
- Range: bytes=200- — поддерживается (запрос с 200-го байта и до конца)
- Range: bytes=-10 — поддерживается (запрос последних 10 байт файла)
- Range: bytes=10-20,30-40 — не поддерживается
Param max_http_cache_age "86400"
На сколько секунд разрешить браузерам и удалённым прокси-серверам кэшировать напрямую отдаваемые файлы.
Param max_mysql_query_length_save "200"
Сколько начальных байт MySQL-запроса писать в лог. Подробнее см. OpQL.
Param update_logs_period "5"
Как часто clusterlogs должен отправлять изменения логов Apache на собирающий сервер. Задаётся в секундах.
Param logs_server "IP:порт"
Адрес и порт, на котором oProxy слушает соединение типа cluster. Сюда clusterlogs будет отправлять изменения логов Apache
Param max_open_http_logs "256"
Максимум логфайлов сайтов,которые должен держать каждый рабочий процесс oProxy открытым.
Param max_open_files "1024"
Максимальное количество открытых файловых дескрипторов на каждый рабочий процесс.
Param bind_interface "eth0"
Интерфейс, на который oproxyctl будет привязывать IP-адреса, необходимые для работы веб-серверов.
Param exec_on_start ...
Таким образом, можно задать команды на языке OpQL, которые будут выполнены сразу после запуска oProxy. Подробнее см. OpQL и oproxyctl.
Param dump_file "/usr/local/ispmgr/var/rules.dump"
Разрешить сохранение и восстановления правил 'reset' и 'query' при остановке и запуске oProxy соответственно.
События
Задаются в виде:
Event ТИП_СОБЫТИЯ {
Exec ТАЙМАУТ "/путь/до/обрабатывающего/скрипта";
Exec ТАЙМАУТ "/путь/до/обрабатывающего/скрипта";
...
};
В качестве ТИП_СОБЫТИЯ доступны:
- mysql_server.down
- Скрипты данного события вызываются в случае недоступности MySQL-сервера.
- webserver.down
- Скрипты этого события вызываются в случае недоступности одного из веб-серверов.
ТАЙМАУТ задается в секундах и обозначает максимальное время ожидания завершения процесса. В случае, если он не завершится за указанное количество секунд, ему будет послан сигнал SIGKILL.
На STDIN скриптам передаётся дополнительная информация в виде XML.
