2016-08-11 7 views
1

У меня есть балансировщик загрузки apache с mod_proxy и wildfly (apache 224 и wildfly 9).Балансировщик загрузки с apache httpd и wildfly для веб-сервисов отдыха с mod_proxy

У меня есть 4 сервера в домене в wildfly, и балансировщик нагрузки отлично работает с приложением «hello world», а в диспетчере балансиров я вижу, как запросы отправляются на каждый сервер.

Дело в том, что когда я использую приложение с некоторыми веб-службами REST, я отправляю запрос с помощью метода GET и некоторых заголовков для аутентификации, и каким-то образом приложение реагирует на ошибку, когда я обращаюсь к нему через балансировщик нагрузки, но если я отправлю его непосредственно на сервер, он работает правильно.

мой конфигурации * идет следующим образом

<VirtualHost *:80> 
ProxyRequests Off 
<Proxy balancer://mycluster> 
    BalancerMember http://localhost:8080/ loadfactor=25 
    BalancerMember http://localhost:8230/ loadfactor=25 
    BalancerMember http://localhost:8330/ loadfactor=25 
    BalancerMember http://localhost:8430/ loadfactor=25 
</Proxy> 
<Location /balancer-manager> 
    SetHandler balancer-manager 
    Order Deny,Allow 
    Allow from all 
</Location> 
<Location /test> 
    Order allow,deny 
    Allow from all 
</Location> 
ProxyPass /test balancer://mycluster stickysession=JSESSIONID 

Я тестирование с помощью почтальона и отправки запросов с методом GET и заголовка для аутентификации: основной {base64 код} следующим образом:

http://127.0.0.1/test/myproject.ws/myproject/get_list?key=T11108101191&page=1

, и это приводит к ошибке.

, когда я пытаюсь это:

http://127.0.0.1:8080/myproject.ws/myproject/get_list?key=T11108101191&page=1

Это идет ок

и когда я пытаюсь выше, но с помощью метода пост, он получает такую ​​же ошибку, как и в балансировки нагрузки.

Любая идея, что я делаю неправильно?

PS: Я попытался вставить WEB-INF/web.xml проекта, но я все равно получаю ту же ошибку.

+0

Не уверен, если это связано, но вы должны быть совместимы с слешей, при использовании 'PROXYPASS/test', а затем использовать' BalancerMember HTTP: // локальный: 8080' –

+1

Спасибо! это была проблема. Я обдумывал это, когда видел все, что было хорошо, и у меня вообще не было ошибок в журналах. – user3123488

ответ

1

Благодаря Dusan Bajic, он увидел проблему, которая у меня была. В элементе балансировки я заканчивал маршрут с помощью «/», и когда я использовал ProxyPass, я начинал с «/», дублируя этот символ. Так или иначе, с приложением helloworld он работал правильно, но когда я передавал параметры, он не удался.

Новая конфигурация выглядит следующим образом:

<VirtualHost *:80> 
    ProxyRequests Off 
<Proxy balancer://mycluster> 
    BalancerMember http://localhost:8080 loadfactor=25 
    BalancerMember http://localhost:8230 loadfactor=25 
    BalancerMember http://localhost:8330 loadfactor=25 
    BalancerMember http://localhost:8430 loadfactor=25 
</Proxy> 
<Location /balancer-manager> 
    SetHandler balancer-manager 
    Order Deny,Allow 
    Allow from all 
</Location> 
<Location /test> 
    Order allow,deny 
    Allow from all 
</Location> 

ProxyPass /test balancer://mycluster stickysession=JSESSIONID 
</VirtualHost>