Я пытаюсь построить свой сервер 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?