Как настроить одни и те же контекстные приложения для использования разных машин с ModCluster и Wildfly10

Я пытаюсь использовать ModCluster для балансировки нагрузки некоторых серверов. У нас есть один EAR, который должен быть сбалансирован по нагрузке различными DNS.

У нас есть этот сценарий. Нам необходимо поддерживать тот же контекст 'system1' из-за обратной совместимости

  • 4 сервера для urla.com.br/system1/
  • 2 сервера для urlb.com.br/system1/

Используя Wildfly 10.1.0 в доменном режиме, они разделены двумя группами серверов: URLA и URLB. Они имеют один и тот же профиль (URL-HA) и привязки сокетов (URL-HA-SOCKET).

У меня есть Apache с mod_cluster с минимальной конфигурацией.

LoadModule cluster_slotmem_module modules/mod_cluster_slotmem.so
LoadModule manager_module modules/mod_manager.so
LoadModule proxy_cluster_module modules/mod_proxy_cluster.so
LoadModule advertise_module modules/mod_advertise.so


Listen 10.90.0.13:7777

<VirtualHost 10.90.0.13:7777>

  <Directory />
      Require all granted
  </Directory>

  <Location />
    Order deny,allow
    Allow from all
  </Location>

  ManagerBalancerName mybalancer
  ServerAdvertise on
  EnableMCPMReceive On

  <Location /mod_cluster-manager>
    SetHandler mod_cluster-manager
    Order deny,allow
    Allow from all
  </Location>
</VirtualHost>

Когда я http://10.90.0.13:7777/mod_cluster-manager, я вижу 6 серверов, зарегистрированных в контексте system1/, Кстати, они используют один и тот же EAR-файл.

Но это не идеальный сценарий для нас. Пользователи, обращающиеся к urla.com.br/system1/, не могут использовать машины urlb.com.br/system1/ и наоборот.

Единственный способ найти это (я еще не тестировал...) - создать один профиль для каждой группы серверов, поэтому я могу настроить другую группу распределения нагрузки в:

Профиль> URLA-HA / URLB-HA > Подсистемы> ModCluster.

Но в этом случае мы продублировали все конфигурации, которые существуют в профиле (DataSources, Queues, MailSession и т. Д.). Это больно поддерживать.

Итак, какие варианты у нас есть в моем случае? Спасибо!

1 ответ

Решение

Я нашел решение для моей проблемы, используя только один профиль Wildfly.

Для этого я использовал два балансировщика и использовал ProxyPass для использования конкретного балансировщика.


Wildfly: На URL администратора консоли контроллера домена перейдите по адресу:

Конфигурация: Профили Профиль: URL-HA Подсистема: ModCluster

На вкладке Реклама измените значение Балансировщика:

${projectcluster.modcluster.balancer:mybalancer}

Добавьте системные свойства к обеим группам серверов

Время выполнения -> Группы серверов -> URLA -> Просмотр

На вкладке "Свойства системы" добавьте:

Key 'projectcluster.modcluster.balancer' value 'first'

Key 'jboss.modcluster.multicast.address' value '224.0.2.108'

Время выполнения -> Группы серверов -> URLB -> Просмотр

На вкладке "Свойства системы" добавьте:

Key 'projectcluster.modcluster.balancer' value 'second'

Key 'jboss.modcluster.multicast.address' value '224.0.2.108'

После этого перезапустите серверные группы URLA и URLB


Apache Используя пример Apache conf по вопросу:

...  
...

  ManagerBalancerName mybalancer
  ServerAdvertise on
  EnableMCPMReceive On
  # Defined on Wildfly
  AdvertiseGroup 224.0.2.108:23364

  <Location /mod_cluster-manager>
    SetHandler mod_cluster-manager
    Order deny,allow
    Allow from all
  </Location>
</VirtualHost>

Listen 10.90.0.13:8001

<VirtualHost 10.90.0.13:8001>
  ProxyPass        / balancer://first stickysession=JSESSIONID|jsessionid nofailover=On
  ProxyPassReverse / balancer://first
</VirtualHost>

Listen 10.90.0.13:8002

<VirtualHost 10.90.0.13:8002>
  ProxyPass        / balancer://second stickysession=JSESSIONID|jsessionid nofailover=On
  ProxyPassReverse / balancer://second
</VirtualHost>

Весь запрос 10.90.0.13:8001/system1 будет отправлен первому балансировщику, а 10.90.0.13:8002/system1 - второму балансировщику.

И это все.

Другие вопросы по тегам