Процесс интересный и хорошо документирован сообществом JBoss по следующим ссылкам.
https://docs.jboss.org/author/display/AS7/Admin+Guide#AdminGuide-ManagedDomain
https://docs.jboss.org/author/display/AS7/Domain+Setup
В итоге, при загрузке сценария домена, Host Controller становится активным. Роль этого контроллера - просто управлять экземплярами сервера, приписанными ему. Один из хостов будет настроен для работы в качестве контроллера домена, на что указывает простой элемент в файле host.xml
.
<domain-controller>
<local/>
</domain-controller>
В этом же файле находятся две секции, которые Хост, действующий в качестве контроллера домена, должен будет настроить, которые, как вы можете себе представить, представляют собой интерфейс и порты для связи с другими хостами.
<management-interfaces>
<native-interface interface="management" port="9999" />
<http-interface interface="management" port="9990" />
</management-interfaces>
<interfaces>
<interface name="management">
<inet-address value="192.168.0.12"/>
</interface>
</interfaces>
Это настроило контроллер домена, поэтому он разрешает объявления портов собственного интерфейса (с которым он должен взаимодействовать) и интерфейса http (включая консоль управления) для относительного интерфейса «управление». Декларация интерфейса, в свою очередь, разрешает это до IP-адреса 192.168.0.12
. Задачей контроллера домена будет управление другими хост-контроллерами. Но они должны знать, как решить себя.
Чтобы сделать это, нам нужно несколько вещей. Нам нужно имя для того, чтобы Host Controller вызывал сам себя, чтобы отличаться от других, и нам нужно предоставить интерфейс для контроллера домена, а также знать интерфейс, который выставляет сам контроллер домена. Все они по-прежнему выполняются в соответствующих host.xml
файлах для каждой установки (которые вы можете записать в CLI, если разбираетесь).
Вот уникальное имя:
<host xmlns="urn:jboss:domain:1.0"
name="staging">
[...]
</host>
Вот подчиненный хост, объявляющий порты относительным именем, и к чему разрешает это относительное имя:
<management-interfaces>
<native-interface interface="management" port="9999" />
</management-interfaces>
<interfaces>
<interface name="management">
<inet-address value="192.168.0.101"/>
</interface>
</interfaces>
И здесь мы сообщаем хост-контроллеру, где найти контроллер домена. Это так, что он может зарегистрироваться сам, что должно ответить на ваш вопрос о том, как контроллер домена «знает», какие хосты доступны.
<domain-controller>
<remote host="192.168.0.12" port="9999"/>
Итак, подведем итоги ... каждый экземпляр хоста имеет уникальное имя, знает, где можно коснуться головкой хончо на плече, и какой интерфейс ему доступен. В свою очередь, главный хончо раскрывает сам интерфейс управления, где он прослушивает экземпляры, которые можно перемещать (включая их имя, интерфейс и группы серверов).