Spec-Zone.ru › Apache HTTP Server

Apache Модуль mod_lbmethod_byrequests

Описание: Алгоритм балансировки нагрузки с подсчётом запросов для mod_proxy_balancer
Статус: Расширение
Идентификатор модуля: lbmethod_byrequests_module
Файл исходного кода: mod_lbmethod_byrequests.c
Совместимость: Выделен из mod_proxy_balancer в версии 2.3

Обзор

Этот модуль не предоставляет собственных директив конфигурации. Он использует сервисы mod_proxy_balancer, и предоставляет метод балансировки нагрузки byrequests.

Алгоритм подсчёта запросов

Включён с помощью lbmethod=byrequests, идея этого планировщика заключается в распределении запросов между различными рабочими процессами для обеспечения того, чтобы каждый получил свою заданную долю количества запросов. Он работает следующим образом:

lbfactor — это ожидаемая нагрузка на этот рабочий процесс, или квота работы рабочего процесса. Это нормализованное значение, представляющее их «долю» от общего объёма работы.

lbstatus — это степень срочности работы этого рабочего процесса для выполнения его квоты.

Рабочий процесс — это участник балансировщика нагрузки, обычно удалённый хост, обслуживающий один из поддерживаемых протоколов.

Мы распределяем квоту работы каждого рабочего процесса рабочему процессу, а затем смотрим, какой из них нуждается в работе наиболее срочно (наибольший lbstatus). Этот рабочий процесс затем выбирается для работы, а его lbstatus уменьшается на общую квоту работы, распределённую всем рабочим процессам. Таким образом, сумма всех lbstatus не изменяется (*) и мы распределяем запросы по желанию.

Если некоторые рабочие процессы отключены, остальные по-прежнему будут расписаны корректно.

for each worker in workers worker lbstatus += worker lbfactor total factor += worker lbfactor if worker lbstatus > candidate lbstatus candidate = worker candidate lbstatus -= total factor

Если балансировщик настроен следующим образом:

рабочий процесс a b c d
lbfactor 25 25 25 25
lbstatus 0 0 0 0

И b отключён, будет произведён следующий расчёт:

рабочий процесс a b c d
lbstatus -50 0 25 25
lbstatus -25 0 -25 50
lbstatus 0 0 0 0
(повторять)

То есть он расписывает: a c d a c d a c d ... Обратите внимание, что:

рабочий процесс a b c d
lbfactor 25 25 25 25

имеет точно такое же поведение, как:

рабочий процесс a b c d
lbfactor 1 1 1 1

Это потому, что все значения lbfactor нормализованы относительно друг друга. Для:

рабочий процесс a b c
lbfactor 1 4 1

рабочий процесс b в среднем получит в 4 раза больше запросов, чем a и c.

Следующая асимметричная конфигурация работает так, как ожидается:

рабочий процесс a b
lbfactor 70 30
lbstatus -30 30
lbstatus 40 -40
lbstatus 10 -10
lbstatus -20 20
lbstatus -50 50
lbstatus 20 -20
lbstatus -10 10
lbstatus -40 40
lbstatus 30 -30
lbstatus 0 0
(повторять)

То есть после 10 расчётов расписание повторяется, и 7 a выбираются с 3 b вперемешку.

© 2018 The Apache Software Foundation
Licensed under the Apache License, Version 2.0.
https://httpd.apache.org/docs/2.4/en/mod/mod_lbmethod_byrequests.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API