конфигурация домена wildfly 21

сервер

Введение

wildfly может быть запущен в автономном режиме или в режиме домена.Автономный режим очень прост и может рассматриваться как отдельный сервер. Сегодня мы подробно объясним режим домена.

Знакомство с режимом wildfly

wildfly может работать в двух режимах, это автономный и управляемый домен.

Автономный режим представляет собой автономный сервер, который можно запустить с помощью standalone.sh. Если используется автономный режим, но необходимо использовать режим кластера с несколькими серверами, пользователь должен обрабатывать его на прикладном уровне.

Если вы хотите централизованно управлять несколькими службами, вы можете использовать режим управляемого домена.

В режиме управляемого домена wildfly может контролировать и управлять другими серверами домена через контроллер домена.

Давайте взглянем на схему развертывания сервера в управляемом домене:

На приведенной выше диаграмме хост представляет сущность или виртуальную машину. На хосте можно развернуть несколько экземпляров сервера.

Хост-контроллер мы можем запустить через domain.sh.

Хост-контроллер отвечает за запуск и останов службы сервера, а также за взаимодействие с контроллером домена.

Хост-контроллер настраивает сервер, считывая информацию о конфигурации из файла domain/configuration/host.xml.

На приведенном выше рисунке показан специальный хост-контроллер, называемый контроллером домена. Контроллер домена отвечает за управление всем доменом.

Основная ответственность контроллера домена заключается в поддержании политики централизованного управления для домена, обеспечении того, чтобы все контроллеры хостов знали об их текущем содержимом, а также в оказании помощи контроллерам хостов в обеспечении того, чтобы все запущенные экземпляры серверов приложений были настроены в соответствии с этим. политика. По умолчанию эта политика централизованного управления хранится в файле domain/configuration/domain.xml на узле контроллера домена.

Группа серверов в группе серверов имеет одинаковую конфигурацию и может рассматриваться как одно целое. Контроллер домена может управлять несколькими группами серверов.

Давайте посмотрим на определение группы серверов:

<server-group name="main-server-group" profile="default">
    <socket-binding-group ref="standard-sockets"/>
    <deployments>
        <deployment name="foo.war_v1" runtime-name="foo.war" />
        <deployment name="bar.ear" runtime-name="bar.ear" />
    </deployments>
</server-group>

Последним понятием является сервер, представляющий работающее приложение. Сервер и хост-контроллер работают в разных JVM, и сервер запускается хост-контроллером.

Обратите внимание, что независимо от того, является ли это автономным или управляемым доменом, это зависит от того, как управляются ваши внутренние службы, развернуты ли они индивидуально или в режиме централизованного управления, они не зависят от режима службы внешних пользователей, т.е. Независимо от того, используете ли вы автономный или управляемый домен, вы можете создать сервисный кластер.

Конфигурация контроллера домена

Контроллер домена — это централизованная служба для управления доменом. Нам нужен хост, настроенный как контроллер домена, и открыть его интерфейс управления для подключения управляемых хостов.

Посмотрим на конфигурацию следующего контроллера домена:

<domain-controller>
   <local/>
</domain-controller>

В приведенном выше примере local представляет локальный хост.

Если машина будет использоваться в качестве контроллера домена, интерфейс управления должен быть настроен и открыт:

<management-interfaces>
  <native-interface security-realm="ManagementRealm">
    <socket interface="management" port="${jboss.management.native.port:9999}"/>
  </native-interface>
  <http-interface security-realm="ManagementRealm">
    <socket interface="management" port="${jboss.management.http.port:9990}"/>
  </http-interface>
</management-interfaces>

Среди них управление, на которое указывает интерфейс, настраивается в host.xml:

<interfaces>
   <interface name="management">
       <inet-address value="192.168.0.101"/>
   </interface>
</interfaces>

По умолчанию для доступа к главному контроллеру домена требуется аутентификация.Нам нужно создать пользователя для подчиненного контроллера домена, используя add-user для подключения к главному контроллеру домена.

Итак, мы находимся на последнем шаге добавления пользователя, нам нужно ввести y:

Is this new user going to be used for one AS process to connect to another AS process e.g. slave domain controller?
yes/no? y
To represent the user add the following to the server-identities definition <secret value="cE3EBEkE=" />

Нам нужно запомнить указанный выше секрет в формате xml для использования в последующей конфигурации подчиненного устройства.

Файл конфигурации хост-контроллера

С помощью контроллера домена мы можем присоединиться к существующему домену через хост-контроллер.

При настройке хост-контроллера следует учитывать, что логическое имя хоста должно быть уникальным в пределах домена. И хост-контроллер подключен к контроллеру домена через IP-адрес.

Итак, нам нужно дать хосту уникальное имя в host.xml:

<host xmlns="urn:jboss:domain:3.0"
     name="slave">
[...]
</host>

Если имя хоста не указано, в качестве имени хоста будет использоваться значение jboss.host.name. Если и это значение не задано, то в качестве имени хоста будет использоваться HOSTNAME или COMPUTERNAME.

Нам нужно указать информацию о подключении контроллера домена в контроллере hsot:

<domain-controller>
   <remote protocol="remote" host="192.168.0.101" port="9999" username="slave" security-realm="SlaveRealm"/>
</domain-controller>

Здесь нам нужно указать область безопасности для хранения подчиненного пароля:

<security-realm name="SlaveRealm">
  <server-identities>
    <secret value="cE3EBEkE=" />
  </server-identities>
</security-realm>

Этот секрет представляет собой пароль, созданный при использовании инструмента добавления пользователя.

Игнорировать ресурсы доменной области

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

Эти общедоменные конфигурации относятся к ресурсам, которые не начинаются с /host = * , например к ресурсам, хранящимся в domain.xml.

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

Это может уменьшить передачу данных и повысить эффективность системы.

Чтобы игнорировать ресурсы области действия домена, мы можем использовать ignore-unused-configuration="true".

<domain-controller>
    <remote security-realm="ManagementRealm" ignore-unused-configuration="true">
        <discovery-options>
            <static-discovery name="primary" protocol="${jboss.domain.master.protocol:remote}" host="${jboss.domain.master.address}" port="${jboss.domain.master.port:9999}"/>
        </discovery-options>
    </remote>
</domain-controller>

Server groups

Группы серверов — это сервисные группы, которые определяются контроллерами домена. Каждая группа серверов должна быть связана с профилем и группой привязки сокетов. Давайте рассмотрим пример:

<server-groups>
   <server-group name="main-server-group" profile="default">
       <jvm name="default">
          <heap size="64m" max-size="512m"/>
          <permgen size="128m" max-size="128m"/>
       </jvm>
       <socket-binding-group ref="standard-sockets"/>
   </server-group>
   <server-group name="other-server-group" profile="bigger">
       <jvm name="default">
           <heap size="64m" max-size="512m"/>
       </jvm>
       <socket-binding-group ref="bigger-sockets"/>
   </server-group>
</server-groups>

Группа привязки сокетов в приведенной выше конфигурации также определена в файле domain.xml с указанием интерфейса и порта сети:

<socket-binding-groups>
    <socket-binding-group name="standard-sockets" default-interface="public">
        <socket-binding name="http" port="8080"/>
        [...]
    </socket-binding-group>
    <socket-binding-group name="bigger-sockets" include="standard-sockets" default-interface="public">
        <socket-binding name="unique-to-bigger" port="8123"/>
    </socket-binding-group>
</socket-binding-groups>

Группа привязки сокетов также может использовать include для ссылки на другие группы привязки сокетов.

Профиль — это набор подсистем, а подсистема — это различные функции, необходимые приложению.

<profiles>
    <profile name="default">
        <subsystem xmlns="urn:jboss:domain:web:1.0">
            <connector name="http" scheme="http" protocol="HTTP/1.1" socket-binding="http"/>
            [...]
        </subsystem>
        <\!-\- The rest of the subsystems here \-->
        [...]
    </profile>
    <profile name="bigger">
        <subsystem xmlns="urn:jboss:domain:web:1.0">
            <connector name="http" scheme="http" protocol="HTTP/1.1" socket-binding="http"/>
            [...]
        </subsystem>
        <\!-\- The same subsystems as defined by 'default' here \-->
        [...]
        <subsystem xmlns="urn:jboss:domain:fictional-example:1.0">
            <socket-to-use name="unique-to-bigger"/>
        </subsystem>
    </profile>
</profiles>

Servers

Серверы определяются в хост-контроллере, а группа серверов определяется в контроллере домена.

Каждый сервер должен принадлежать к группе серверов, сервер является службой, и каждый сервер будет запускать jvm. Давайте сначала посмотрим на определение сервера:

<servers>
    <server name="server-one" group="main-server-group">
        <\!-\- server-one inherits the default socket-group declared in the server-group \-->
        <jvm name="default"/>
    </server>
 
    <server name="server-two" group="main-server-group" auto-start="true">
        <socket-binding-group ref="standard-sockets" port-offset="150"/>
        <jvm name="default">
            <heap size="64m" max-size="256m"/>
        </jvm>
    </server>
 
    <server name="server-three" group="other-server-group" auto-start="false">
        <socket-binding-group ref="bigger-sockets" port-offset="250"/>
    </server>
</servers>

На сервере мы можем переопределить группу привязки сокетов.

auto-start означает, будет ли сервер запускаться при старте хост-контроллера.

Наконец, давайте посмотрим на определение jvm в host.xml:

<jvms>
    <jvm name="default">
        <heap size="64m" max-size="128m"/>
    </jvm>
</jvms>

Мы можем переписать его на сервере.

Суммировать

Выше приведены правила настройки доменов в wildfly. Вы можете видеть, что в домене может быть запущено несколько серверов. Настройка и управление намного сложнее, чем у tomcat, но функции также намного мощнее. Мы можем учиться у разработка этих превосходных программных идей, таким образом применяя их к нашим собственным программам.

Автор статьи: о программе flydean

Ссылка на эту статью:Ву Ву Флойд Пресс.com/wildfly-21-…

Источник этой статьи: блог flydean

Добро пожаловать на мой официальный аккаунт: самая популярная интерпретация, самая глубокая галантерея, самые краткие уроки и множество трюков, о которых вы не знаете, ждут вас!