Я успешно создал кластер WildFly с 3 хостами в доменном режиме. Теперь я пытаюсь получить подсистему mod_cluster без apache или другого сервера посередине, поскольку я видел, что это возможно, но я не нашел недавней документации для этого.
Я пробовал несколько способов и конфигураций, но ни один из них не работал. Приложения и блоки сохраняемости развертываются и настраиваются на главном сервере и реплицируются на подчиненные устройства главным устройством, а контекст доступен на всех серверах.
Но если я попытаюсь получить контекст на порту 80 (балансировщик нагрузки), все, что я получу, это 404. Кроме того, он не отображает стартовую страницу «добро пожаловать в WildFly» для запросов без контекста, поэтому группа балансировщика нагрузки не "подключение" к основной-серверной группе и развернутым приложениям.
Любая помощь будет очень признательна. Вот моя топология: образ
Вам не нужно использовать Apache httpd для балансировки нагрузки, но вам все равно нужно использовать балансировщик нагрузки. Вы можете запустить выделенный сервер Wildfly, который будет работать как балансировщик нагрузки в вашем домене. Есть готовый профиль под названием load-balancer
в файле конфигурации домена по умолчанию (domain.xml
).
Шаги по добавлению балансировщика нагрузки WildFly на порт HTTP по умолчанию (80):
1) Редактировать domain.xml
- введите ожидаемый номер порта в поле socket-binding-group
элемент для load-balancer-sockets
:
<socket-binding-group name="load-balancer-sockets" default-interface="public">
<socket-binding name="http" port="80"/>
<socket-binding name="https" port="443"/>
<socket-binding name="mcmp-management" interface="private" port="${jboss.mcmp.port:8090}"/>
<socket-binding name="modcluster" interface="private" multicast-address="${jboss.modcluster.multicast.address:224.0.1.105}" multicast-port="23364"/>
</socket-binding-group>
2) Редактировать domain.xml
- добавить новый server-group
для вашего балансировщика нагрузки. Использовать load-balancer
профиль и load-balancer-sockets
группа привязки сокетов для него. Пример:
<server-groups>
<server-group name="main-server-group" profile="ha">
<socket-binding-group ref="ha-sockets"/>
</server-group>
<server-group name="load-balancer-group" profile="load-balancer">
<socket-binding-group ref="load-balancer-sockets"/>
</server-group>
</server-groups>
3) edit (редактировать) host.xml
- добавить новый сервер, который будет балансировщиком нагрузки - т.е. добавить его в новый load-balancer-group
:
<servers>
<server name="server-one" group="main-server-group"/>
<server name="server-two" group="main-server-group" auto-start="true">
<socket-bindings port-offset="150"/>
</server>
<server name="load-balancer" group="load-balancer-group" auto-start="true"/>
</servers>
4) Если вы используете номера портов ниже 1024 в Linux-подобных системах, запустите домен с привилегированной системной учетной записью (например, используя sudo
):
sudo bin/domain.sh
У вас должен быть успешно запущен ваш домен, включая балансировщик нагрузки.
Обновление 1:
Убедитесь, что все интерфейсы привязки правильно опубликованы (например, private
один на балансировщике нагрузки!)
Хост-контроллер:
export MY_IP=192.168.105.1
bin/domain.sh --host-config=host-master.xml -b $MY_IP -bmanagement $MY_IP -bprivate $MY_IP
Раб:
export MY_IP=192.168.105.2
bin/domain.sh --host-config=host-slave.xml -b $MY_IP -bmanagement $MY_IP -Djboss.domain.master.address=192.168.105.1
Если вы используете host-master.xml
в качестве конфигурации хоста для балансировщика нагрузки убедитесь, что вы добавили public
интерфейс к нему.
<interface name="public">
<inet-address value="${jboss.bind.address:127.0.0.1}"/>
</interface>
Если ваша среда не поддерживает многоадресную рассылку (например, облака или среды докеров), используйте, например, Конфигурация статического обнаружения modcluster:
bin/jboss-cli.sh <<EOT
embed-host-controller
/socket-binding-group=ha-sockets/remote-destination-outbound-socket-binding=proxy1:add(host=192.168.105.1, port=8090)
/profile=ha/subsystem=modcluster/proxy=default:write-attribute(name=advertise, value=false)
/profile=ha/subsystem=modcluster/proxy=default:list-add(name=proxies, value=proxy1)
EOT
Тестовая конфигурация с простым <distributable/>
применение. Обычно я использую приложение для простого счетчика запросов. Это единый JSP, поэтому его исходный код легко проверить прямо в файле war:
wget https://github.com/kwart/secured-webapp-template/releases/download/single-jsp-counter-distributable/counter-distributable.war
bin/jboss-cli.sh <<EOT
embed-host-controller
deploy counter-distributable.war --server-groups=main-server-group
Затем проверьте его, указав в браузере http://192.168.105.1:8080/counter-distributable/ а также http://192.168.105.1/counter-distributable/