ПРОЕКТЫ 


  АРХИВ 


Apache-Talk @lexa.ru 

Inet-Admins @info.east.ru 

Filmscanners @halftone.co.uk 

Security-alerts @yandex-team.ru 

nginx-ru @sysoev.ru 


  СТАТЬИ 


  ПЕРСОНАЛЬНОЕ 


  ПРОГРАММЫ 



ПИШИТЕ
ПИСЬМА












     АРХИВ :: nginx-ru
Nginx-ru mailing list archive (nginx-ru@sysoev.ru)

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: backhand



On Mon, 13 Jun 2005, Ivan B. Serezhkin wrote:

Подскажите пожалуйста, как слушать mod_backhand-овский spread и выбирать бэкэнд наименее загруженный ?

Если этого нельзя сейчас делать - то что надо написать, что бы было можно ?

Отвечаю на письмо присланное на личный адрес.

1. Как именно реализуются в nginx подключения модулей,

Механизм подключения на данный момент простой:

./configure --add-module=/path/to/some/module

в каталоге /path/to/some/module должен быть файл config примерно
такого содержания:

-------------
ngx_addon_name=ngx_http_some_module

HTTP_MODULES="$HTTP_MODULES ngx_http_some_module"
NGX_ADDON_SRCS="$NGX_ADDON_SRCS $ngx_addon_dir/ngx_http_some_module.c"
-------------

ngx_http_some_module.c тоже должен быть в этом же каталоге.

по какому пути идёт запрос, и что на этом пути можно с ним сделать.

Если нужно слушать udp-пакеты и на их основании менять веса апстримов,
то это нужно делать не по пути обработки запроса, а по-другому.

Как грамотно обрабатывать конфиг ?

В модулях в начале идёт массив, в котором описаны все команды, которые
он понимает. Каждый элемент массива содержит название команды, контекст,
где она может использоваться, число параметров и функцию, которая
обрабатывает этот параметр. Для многих параметров используются общие
функции, и тогда в элемент масссива содержит дополнительные парамтеры
для таких функций.

2. Как можно и как лучше реализовать слушатель бродкастов бэкэндов, который
бы хранил данные для выбора бэкэнда. И как потом к этим данным доступатся
из модуля ?

Нужно получить список всех апстримов, открыть listen порт, написать
обработчики событий при получении UDP, которые бы изменяли веса и
доступность апстримов.

На данный момент в реализации этого есть две проблемы:
1) сейчас нельзя получить список всех апстримов, но это несложно добавить.
2) список апстримов не разделяется между процессами, это уже сложнее.

3. Как реализовать модуль так, что бы его портирование не составляло труда.
(некоторое время я буду его писать только под FreeBSD причём только под
пятёрку)

Основные исходники, как правило, от платформы мало зависят, многое вынесено
в src/os/, но что касается UDP, то тут нужно смотреть, возможно, что-то
нужно будет добавть в src/os/.


Игорь Сысоев
http://sysoev.ru



  • References:

 




Copyright © Lexa Software, 1996-2009.