modcluster (Wildfly) не обнаруживает рекламу от Apache
Я пытаюсь настроить WildFly 8.1.0 с mod_cluster. И WildFly, и Apache работают на одной машине. Машина Ubuntu 12.04 с Apache 2.2.x
Apache настроен правильно (я считаю). Я проверил, что модуль advertise работает правильно, запустив тестовый класс Advertise из исходного кода mod_proxy (github). В логах apache ошибок нет.
Я запускаю сервер следующим образом: ./standalone.sh -c standalone-ha.xml
Если кто-нибудь увидит что-то не так с приведенной ниже конфигурацией и поможет избавить меня от дней страданий, я был бы очень благодарен....
Конфигурация Apache
CreateBalancers 1
<IfModule manager_module>
#Listen 127.0.1.1:6666
Listen *:6666
ManagerBalancerName mycluster
<VirtualHost *:6666>
KeepAliveTimeout 300
MaxKeepAliveRequests 0
AdvertiseFrequency 5
ServerAdvertise On
AllowDisplay On
<Location />
Order deny,allow
Allow from 127.0.1
</Location>
<Location /mod_cluster_manager>
SetHandler mod_cluster-manager
Order deny,allow
#Deny from all
#Allow from 127.0.1
Allow from all
</Location>
</VirtualHost>
</IfModule>
Конфигурация VirtualHost
<VirtualHost *:80>
ServerAdmin webmaster@localhost
DocumentRoot /var/www/html
ProxyPass / balancer://mycluster stickysession=JSESSIONID|jsessionid nofailover=On
ProxyPassReverse / balancer://mycluster
ProxyPreserveHost On
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
Результаты теста Advertize
received from /178.62.50.xxx:23364
received: HTTP/1.0 200 OK
Date: Sat, 26 Jul 2014 20:03:12 GMT
Sequence: 121
Digest: 4dedd3761d451227f36534b63ca2a8a1
Server: b23584e2-314f-404d-8fde-05069bfe5dc7
X-Manager-Address: 127.0.1.1:6666
X-Manager-Url: /b23584e2-314f-404d-8fde-05069bfe5dc7
X-Manager-Protocol: http
X-Manager-Host: 127.0.1.1
Распечатка из mod_cluster_manager (178.62.50.xxx:6666/mod_cluster_manager)
mod_cluster/1.2.6.Final
start of "httpd.conf" configuration
mod_proxy_cluster.c: OK
mod_sharedmem.c: OK
Protocol supported: http AJP
mod_advertise.c: OK
Server: 127.0.1.1
Server: 127.0.1.1 VirtualHost: *:80
Server: 127.0.1.1 VirtualHost: *:6666 Advertising on Group 224.0.1.105 Port 23364 for http://127.0.1.1:6666 every 5 seconds
end of "httpd.conf" configuration
Наконец, вот соответствующие биты, взятые из standalone-ha.xml
<subsystem xmlns="urn:jboss:domain:modcluster:1.2">
<mod-cluster-config advertise-socket="modcluster" connector="ajp">
<dynamic-load-provider>
<load-metric type="cpu"/>
</dynamic-load-provider>
</mod-cluster-config>
</subsystem>
<socket-binding name="modcluster" port="0" multicast-address="224.0.1.105" multicast-port="23364"/>
<interfaces>
<interface name="management">
<inet-address value="178.62.50.xxx"/>
</interface>
<interface name="public">
<inet-address value="127.0.1.1"/>
</interface>
<interface name="unsecure">
<inet-address value="${jboss.bind.address.unsecure:127.0.1.1}"/>
</interface>
</interfaces>
Единственная часть журнала сервера, которая относится к modcluster (вывод при запуске сервера)
15:53:29,805 INFO [org.wildfly.extension.undertow] (MSC service thread 1-1) JBAS017519: Undertow HTTP listener default listening on /127.0.1.1:8080
15:53:29,811 INFO [org.wildfly.extension.undertow] (MSC service thread 1-2) JBAS017519: Undertow AJP listener ajp listening on /127.0.1.1:8009
15:53:29,905 INFO [org.jboss.modcluster] (ServerService Thread Pool -- 54) MODCLUSTER000001: Initializing mod_cluster version 1.3.0.Final
15:53:29,967 INFO [org.jboss.modcluster] (ServerService Thread Pool -- 54) MODCLUSTER000032: Listening to proxy advertisements on /224.0.1.105:23364
2 ответа
Мне удалось выяснить проблему здесь, наконец. Открытый интерфейс также должен ссылаться на IP-адрес сервера, а не 127.0.1.1.
Обновленная конфигурация интерфейса:
<interfaces>
<interface name="management">
<inet-address value="178.62.50.xxx"/>
</interface>
<interface name="public">
<inet-address value="178.62.50.xxx"/>
</interface>
<interface name="unsecure">
<inet-address value="${jboss.bind.address.unsecure:127.0.1.1}"/>
</interface>
</interfaces>
Вам нужно:
использование
EnableMCPMReceive
в этом<VirtualHost *:6666>
чтобы он мог использовать MCMP-сообщения от WildFly<Location />
в этомEnableMCPMReceive
включенный VirtualHost должен разрешать IP-адреса серверов WildFlyс WildFly, никогда не связывайтесь с
localhost
- это не имеет никакого смысла в среде mod_cluster, за исключением случаев, когда блоки (экземпляры Apache и WildFly) расположены все в одном блоке; что, вероятно, только местная ситуация развитияВся цепочка событий выглядит следующим образом:
- Apache отправляет многоадресное UDP-сообщение с указанием своего местоположения (по умолчанию VirtualHost, для которого включена реклама)
- WildFly перехватывает сообщение, и подсистема mod_cluster отправляет сообщения CONFIG и STATUS, содержащие JvmRoute (instance-id), Host, Port, protocol..., load... Хост и порт должны быть доступны с HTTP-сервера Apache.
- HTTP-сервер Apache взаимодействует с сервером WildFly на своем хосте: порт с сообщениями STATUS-RSP и т. Д. Связь является двунаправленной.
Пожалуйста, не путайте это с маршрутизацией запросов, по умолчанию клиентские запросы доставляются с Apache HTTP Server на WildFly и обратно через AJP, тогда как сообщения MCMP используют HTTP.
HTH K