Назад | Перейти на главную страницу

Apache 2.4 proxy_balancer и lbmethod_byrequest

Я пытаюсь построить свой сервер Apache со статическими модулями. Но возникли проблемы с модулем proxy_balancer. Я получаю сообщение об ошибке:

[ssl:info] [pid 11863] AH01876: mod_ssl/2.4.10 compiled against Server: Apache/2.4.10, Library: OpenSSL/1.0.1i
[proxy:crit] [pid 11868] AH02432: Cannot find LB Method: byrequests
[proxy_balancer:emerg] [pid 11868] (22)Invalid argument: AH01183: Cannot share balancer
[:emerg] [pid 11868] AH00020: Configuration Failed, exiting

Когда я смотрю на загруженные модули, используя bin/apachectl -M там нет модуля mod_lbmethod.

Я попытался загрузить модуль, добавив эти строки в сценарий конфигурации --enable-lbmethod-byrequest и --with-lbmethod=byrequest но он не отображается ни в списке модулей, ни во включенной папке.

Кто-то сталкивался с этой проблемой раньше и нашел решение?

Это можно решить, включив модуль mod_lbmethod_byrequests, вот так:

$ sudo a2enmod lbmethod_byrequests

Это не требовалось в Apache 2.2.22, но требуется для Apache 2.4.

Если вы используете Apache 2.4 или выше, необходимо также включить mod_lbmethod_byrequests. Но ниже 2.4 mod_proxy_balancer было достаточно. У меня тоже была эта проблема. Проблема в том, что mod_lbmethod_byrequests отделен от mod_proxy_balancer в 2.3.

Итак, я нашел проблему ... Это была простая опечатка, в ней отсутствовала форма множественного числа "s" ..

Загрузил модуль с помощью --enable-lbmethod-byrequests и это сработало

В httpd.conf вы увидите следующие строки:

#LoadModule lbmethod_bybusyness_module "${PRODUCT_HOME}/modules/mod_lbmethod_bybusyness.so"
#LoadModule lbmethod_byrequests_module "${PRODUCT_HOME}/modules/mod_lbmethod_byrequests.so"
#LoadModule lbmethod_bytraffic_module "${PRODUCT_HOME}/modules/mod_lbmethod_bytraffic.so"

Не закомментируйте строку в зависимости от алгоритма балансировки нагрузки, который вы собираетесь использовать. В вашем случае не комментируйте следующую строку:

#LoadModule lbmethod_byrequests_module "${PRODUCT_HOME}/modules/mod_lbmethod_byrequests.so"

после раскомментирования:

LoadModule lbmethod_byrequests_module "${PRODUCT_HOME}/modules/mod_lbmethod_byrequests.so"

Это должно работать нормально.

Вы уверены, что эту проблему стоит решить? Почему ты идешь по этому пути?

Apache - отличный веб-сервер, и для mod_proxy есть место для проксирования нескольких URL-адресов в простых средах с одним сервером, где нет внешнего кэширования и уровня (-ов) балансировки нагрузки. Если вам нужна балансировка нагрузки, вам почти наверняка лучше разместить ее на уровне перед Apache, а не использовать модуль apache. Например, используйте лак или кальмар.

Если вы продолжите работу, вам нужно будет предоставить больше информации о том, что именно вы делаете в своей сборке и конфигурации, а также где и когда появляется ошибка.

Я полагаю, у вас есть соответствующая директива LoadModule в вашей конфигурации apache?