Chapter 7. Configuring JBoss EAP managed domains The managed domain operating mode allows for the management of multiple JBoss EAP instances from a single control point. Centrally-managed JBoss EAP server collections are known as members of a domain. All JBoss EAP instances in a domain share a common management policy. A domain consists of one domain controller, one or more host controllers, and zero or more server groups per host. Domain controller A domain controller is the central point from which the domain is controlled. It ensures that each server is configured according to the management policy of the domain. The domain controller is also a host controller. Host controller A host controller is a physical or virtual host that interacts with the domain controller to control the lifecycle of the application server instances running on its host and to assist the domain controller to manage them. Each host can contain multiple server groups. Server group A server group is a set of server instances that have JBoss EAP installed on them and are managed and configured as one. The domain controller manages the configuration of and applications deployed on server groups. Consequently, each server in a server group shares the same configuration and deployments. Host controllers are tied to specific physical, or virtual, hosts. You can run multiple host controllers on the same hardware if you use different configurations, ensuring their ports and other resources do not conflict. It is possible for a domain controller, a single host controller, and multiple servers to run within the same JBoss EAP instance, on the same physical system. 7.1. The role of a domain controller in a managed domain A domain controller is the JBoss EAP server instance that acts as a central management point for a domain. One host controller instance is configured to act as a domain controller. The primary responsibilities of the domain controller are: Maintain the domain's central management policy. Ensure all host controllers are aware of its current contents. Assist the host controllers in ensuring that all running JBoss EAP server instances are configured in accordance with this policy. By default, the central management policy is stored in the EAP_HOME /domain/configuration/domain.xml file. This file is required in the directory of the host controller that is set to run as the domain controller. The domain.xml file contains profile configurations available for use by the servers in the domain. A profile contains the detailed settings of the various subsystems available in that profile. The domain configuration also includes the definition of socket groups and the server group definitions. For more information about profiles, see About profiles . Additional resources Launching JBoss EAP as a managed domain Configuring a domain controller 7.2. The role of a host controller in a managed domain The primary responsibility of a host controller is server management. It delegates domain management tasks and is responsible for starting and stopping the individual application server processes that run on its host. It interacts with the domain controller to help manage the communication between the servers and the domain controller. Multiple host controllers of a domain can interact with only a single domain controller. Hence, all the host controllers and server instances running on a single domain mode have a single domain controller and must belong to the same domain. By default, each host controller reads its configuration from the EAP_HOME /domain/configuration/host.xml file located in the extracted JBoss EAP installation file on its host's file system. The host.xml file contains the following configuration information that is specific to the particular host: The names of the server instances meant to run from this installation. Configurations specific to the local physical installation. For example, named interface definitions declared in domain.xml can be mapped to an actual machine-specific IP address in host.xml . And abstract path names in domain.xml can be mapped to actual file system paths in host.xml . Any of the following configurations: How the host controller contacts the domain controller to register itself and access the domain configuration. How to find and contact a remote domain controller. Whether the host controller is to act as the domain controller Additional resources Launching JBoss EAP as a managed domain Configuring a domain controller 7.3. The role of a process controller in a managed domain A process controller is a small, lightweight process that is responsible for spawning the host controller process and monitoring its lifecycle. If the host controller crashes, the process controller will restart it. It also starts server processes as directed by the host controller; however, it will not automatically restart server processes that crash. The process controller logs to the EAP_HOME /domain/log/process-controller.log file. You can set JVM options for the process controller in the EAP_HOME /bin/domain.conf file using the PROCESS_CONTROLLER_JAVA_OPTS variable. 7.4. About server groups in a managed domain A server group is a collection of server instances that are managed and configured as one. In a managed domain, every application server instance belongs to a server group, even if it is the only member. The server instances in a group share the same profile configuration and deployed content. A domain controller and a host controller enforce the standard configuration on all server instances of every server group in its domain. A domain can consist of multiple server groups. Different server groups can be configured with different profiles and deployments. For example, a domain can be configured with different server tiers providing different services. Different server groups can also have the same profile and deployments. This can, for example, allow for rolling application upgrades where the application is upgraded on one server group and then updated on a second server group, avoiding a complete service outage. Additional resources Server groups configuration 7.5. About servers in a managed domain A server represents an application server instance. In a managed domain, all server instances are members of a server group. The host controller launches each server instance in its own Java Virtual Machine (JVM) process. For more information, see Server configuration in a managed domain . 7.6. Domain configurations navigation JBoss EAP provides scalable management interfaces to support both small and large-scale managed domains. Management Console The JBoss EAP management console provides a graphical view of your domain and allows you to easily manage hosts, servers, deployments, and profiles for your domain. Configuration From the Configuration tab, you can configure the subsystems for each profile used in your domain. Different server groups in your domain may use different profiles depending the capabilities needed. Once you select the desired profile, all available subsystems for that profile are listed. For more information on configuring profiles, see JBoss EAP profiles management . Runtime From the Runtime tab, you can manage servers and server groups as well as host configuration. You can browse the domain by host or by server group. From Hosts , you can configure host properties and JVM settings as well as add and configure servers for that host. From Server Groups , you can add new server groups and configure properties and JVM settings as well as add and configure servers for that server group. You can perform operations such as starting, stopping, suspending, and reloading all servers in the selected server group. From either Hosts or Server Groups , you can add new servers and configure server properties and JVM settings. You can perform operations such as starting, stopping, suspending, and reloading the selected server. You can also view runtime information, such as JVM usage, server logs, and subsystem-specific information. From Topology , you can see an overview and view detailed information for the hosts, server groups, and servers in your domain. You can perform operations on each of them, such as reloading or suspending. Deployments From the Deployments tab, you can add and deploy deployments to server groups. You can view all deployments in the content repository or view deployments deployed to a particular server group. For more information on deploying applications using the management console, see Deploy an Application in a Managed Domain . Management CLI The JBoss EAP management CLI provides a command-line interface to manage hosts, servers, deployments and profiles for your domain. Subsystem configuration can be accessed once the appropriate profile is selected. Note Instructions and examples throughout this guide may contain management CLI commands for subsystem configuration that apply when running as a standalone server, for example: To adjust these management CLI commands to be run in a managed domain, you must specify the appropriate profile to configure, for example: After specifying the appropriate host, you can configure host settings and perform operations on servers for that host. After specifying the appropriate host, you can configure servers for that host. After specifying the appropriate server group, you can configure server group settings and perform operations on all servers in the selected server group. You can deploy applications in a managed domain by using the deploy management CLI command and specifying the appropriate server groups. For instructions, see Deploy an Application in a Managed Domain . 7.7. Managed domain configuration 7.7.1. Launching JBoss EAP as a managed domain Domain and host controllers can be started using the domain.sh or domain.bat script provided with JBoss EAP. For a complete listing of all available startup script arguments and their purposes, use the --help argument or see the Server runtime arguments and switches section. The domain controller must be started before any secondary servers in any server groups in the domain. Start the domain controller first, then start any other associated host controllers in the domain. Prerequisites JBoss EAP is installed. For more information, see Red Hat JBoss Enterprise Application Platform Installation Methods . Procedure Start the domain controller with the host-primary.xml configuration file, which is preconfigured for a dedicated domain controller. Start the host controller with the host-secondary.xml configuration file, which is preconfigured for a secondary host controller. Depending on your domain setup, you will need to make additional configurations connect to, and not conflict with, the domain controller. Also see the following example domain setups: Setting up a managed domain on a single machine Setting up a managed domain on two machines 7.7.2. Configuring a domain controller You must configure one host in the domain as the domain controller. Important Configuring multiple domain or host controllers on the same machine is not supported when JBoss EAP is installed using the RPM installation method. Procedure Configure a host as the domain controller by adding the <local/> element in the <domain-controller> declaration. The <domain-controller> element should include no other content. <domain-controller> <local/> </domain-controller> Expose a management interface that should be accessible to other hosts in the domain. The HTTP interface is the standard management interface. <management-interfaces> <http-interface http-authentication-factory="management-http-authentication"> <http-upgrade enabled="true" sasl-authentication-factory="management-sasl-authentication"/> <socket interface="management" port="USD{jboss.management.http.port:9990}"/> </http-interface> </management-interfaces> The sample minimal domain controller configuration file, EAP_HOME /domain/configuration/host-primary.xml , includes these configuration settings. 7.7.3. Configuring a host controller A host controller must be configured to connect to the domain controller so that the host controller can register itself with the domain. Important Configuring multiple domain or host controllers on the same machine is not supported when JBoss EAP is installed using the RPM installation method. Procedure Use the <domain-controller> element of the configuration to configure a connection to the domain controller. <domain-controller> <remote> <discovery-options> <static-discovery name="primary" protocol="USD{jboss.domain.primary.protocol:remote+http}" host="USD{jboss.domain.primary.address}" port="USD{jboss.domain.primary.port:9990}"/> </discovery-options> </remote> </domain-controller> The sample minimal host controller configuration file, EAP_HOME /domain/configuration/host-secondary.xml , includes the configuration settings to connect to a domain controller. The configuration assumes that you provide the jboss.domain.primary.address property when starting the host controller. Depending on your domain setup, you may also need to provide authentication for the host controller to be authenticated by the domain controller. See Setting up a managed domain on two machines for details on generating a management user with a secret value and updating the host controller configuration with that value. Additional resources Domain controller discovery and failover configuration 7.7.4. Host name configuration for a managed domain Every host running in a managed domain must have a unique host name. To ease administration and allow for the use of the same host configuration files on multiple hosts, the server uses the following precedence for determining the host name. If set, the host element name attribute in the host.xml configuration file. The value of the jboss.host.name system property. The value that precedes the first period ( . ) character in the jboss.qualified.host.name system property, or the entire value if there is no final period ( . ) character. The value that precedes the period ( . ) character in the HOSTNAME environment variable for POSIX-based operating systems, the COMPUTERNAME environment variable for Microsoft Windows, or the entire value if there is no final period ( . ) character. A host controller's name is configured in the host element at the top of the relevant host.xml configuration file, for example: <host xmlns="urn:jboss:domain:default:20.0" name="host1"> 7.7.5. Updating the name of a host in a managed domain Use the following procedure to update the host name using the management CLI. Prerequisites JBoss EAP is running as a managed domain. Procedure Launch the management CLI, connecting to the domain controller. Use the following command to set a new host name. This modifies the host name attribute in the host-secondary.xml file as follows: <host name=" <new_host_name> " xmlns="urn:jboss:domain:default:20.0"> Reload the host controller in order for the changes to take effect. If a host controller does not have a name set in the configuration file, you can also pass in the host name at runtime. 7.8. Server groups configuration Server groups can be configured using the management CLI or from the management console Runtime tab. The following is an example of a server group definition: <server-group name="main-server-group" profile="full"> <jvm name="default"> <heap size="64m" max-size="512m"/> </jvm> <socket-binding-group ref="full-sockets"/> <deployments> <deployment name="test-application.war" runtime-name="test-application.war"/> <deployment name="helloworld.war" runtime-name="helloworld.war" enabled="false"/> </deployments> </server-group> Server groups CLI commands Add a Server Group Update a Server Group Remove a Server Group Additional resources Server group attributes 7.9. Server configuration in a managed domain Servers can be configured using the management CLI or from the management console Runtime tab. The default host.xml configuration file defines three servers: <servers> <server name="server-one" group="main-server-group"> 1 </server> <server name="server-two" group="main-server-group" auto-start="true"> 2 <socket-bindings port-offset="150"/> </server> <server name="server-three" group="other-server-group" auto-start="false"> 3 <socket-bindings port-offset="250"/> </server> </servers> 1 The server instance named server-one is associated with main-server-group and inherits the subsystem configuration and socket bindings specified by that server group. 2 The server instance named server-two is also associated with main-server-group , but also defines a socket binding port-offset value, so as not to conflict with the port values used by server-one . 3 A server instance named server-three is associated with other-server-group and uses that group's configurations. It also defines a port-offset value and sets auto-start to false so that this server does not start when the host controller starts. Server configuration CLI commands Add a server Update a server Remove a server Additional resources Server attributes 7.10. Server operations in a managed domain You can perform operations on servers, such as starting, stopping, and reloading, from the management console by navigating to the Runtime tab and selecting the appropriate host or server group. Start servers You can start a single server on a particular host. You can start all servers in a specified server group. Stop servers You can stop a single server on a particular host. You can stop all servers in a specified server group. Reload servers You can reload a single server on a particular host. You can reload all servers in a specified server group. Kill servers You can kill all server processes in a specified server group. 7.11. Domain controller discovery and failover configuration When setting up a managed domain, each host controller must be configured with information needed to contact the domain controller. In JBoss EAP, each host controller can be configured with multiple options for finding the domain controller. Host controllers iterate through the list of options until one succeeds. A backup host controller can be promoted to domain controller if there is a problem with the primary domain controller. This allows host controllers to automatically fail over to the new domain controller once it has been promoted. For more information, see Promoting a host controller to act as domain controller . 7.11.1. Domain discovery options The following is an example of how to configure a host controller with multiple options for finding the domain controller. Example: A host controller with multiple domain controller options <domain-controller> <remote> <discovery-options> <static-discovery name="primary" protocol="USD{jboss.domain.primary.protocol:remote}" host="172.16.81.100" port="USD{jboss.domain.primary.port:9990}"/> <static-discovery name="backup" protocol="USD{jboss.domain.primary.protocol:remote}" host="172.16.81.101" port="USD{jboss.domain.primary.port:9990}"/> </discovery-options> </remote> </domain-controller> A static discovery option includes the following required attributes: name The name for this domain controller discovery option. host The remote domain controller's host name. port The remote domain controller's port. In the example above, the first discovery option is the one expected to succeed. The second can be used in failover situations. 7.11.2. Host controller with a cached domain configuration A host controller can be started without a connection to the domain controller by using the --cached-dc option; however, the host controller must have previously cached its domain configuration locally from the domain controller. Starting a host controller with this --cached-dc option will cache the host controller's domain configuration from the domain controller. Example This creates a domain.cached-remote.xml file in the EAP_HOME /domain/configuration/ directory that contains the information necessary for this host controller to temporarily manage its current servers without a domain controller connection. Note By default, using the --cached-dc option only caches configuration used by this host controller, which means that it cannot be promoted to domain controller for the entire domain. See Promoting a host controller to act as domain controller for information on caching the entire domain configuration to allow a host controller to act as the domain controller. If the domain controller is unavailable when starting this host controller with --cached-dc , the host controller will start using the cached configuration saved in the domain.cached-remote.xml file. Note that this file must exist or the host controller will fail to start. While in this state, the host controller cannot modify the domain configuration, but can launch servers and manage deployments. Once started with the cached configuration, the host controller will continue to attempt to reconnect to the domain controller. Once the domain controller becomes available, the host controller will automatically reconnect to it and synchronize the domain configuration. Note that some configuration changes may require you to reload the host controller to take effect. A warning will be logged on the host controller if this occurs. 7.11.3. Promoting a host controller to act as domain controller You can promote a host controller to act as the domain controller if a problem arises with the primary domain controller. The host controller must first cache the domain configuration locally from the domain controller before it can be promoted. Procedure Use the --backup option for any host controller that you might want to become the domain controller. This creates a domain.cached-remote.xml file in the EAP_HOME /domain/configuration/ directory that contains a copy of the entire domain configuration. This configuration will be used if the host controller is reconfigured to act as the domain controller. Note The ignore-unused-configuration attribute is used to determine how much configuration to cache for a particular host. A value of true means that only the configuration relevant to this host controller is cached, which would not allow it to take over as domain controller. A value of false means that the entire domain configuration is cached. The --backup argument defaults this attribute to false to cache the entire domain. However, if you set this attribute in the host.xml file, that value is used. You can also use the --cached-dc option alone to create a copy of the domain configuration, but must set ignore-unused-configuration to false in the host.xml to cache the entire domain. For example: <domain-controller> <remote username="USDlocal" ignore-unused-configuration="false"> <discovery-options> ... </discovery-options> </remote> </domain-controller> Promote a host controller to be the domain controller. Ensure the original domain controller is stopped. Use the management CLI to connect to the host controller that is to become the new domain controller. Execute the following command to configure the host controller to act as the new domain controller. Execute the following command to reload the host controller. This host controller will now act as the domain controller. 7.12. Setting up a managed domain on a single machine You can run multiple host controllers on a single machine by using the jboss.domain.base.dir property. Important Configuring more than one JBoss EAP host controller as a system service on a single machine is not supported. Procedure Copy the EAP_HOME /domain directory for the domain controller. Copy the EAP_HOME /domain directory for a host controller. Start the domain controller using <path_to> /domain1 . Start the host controller using <path_to> /host1 . Note When starting a host controller, you must specify the address of the domain controller using the jboss.domain.primary.address property. Additionally, since this host controller is running on the same machine as the domain controller, you must change the management interface so that it does not conflict with the domain controller's management interface. This command sets the jboss.management.http.port property. Each instance started in this manner will share the rest of the resources in the base installation directory, for example, EAP_HOME /modules/ , but use the domain configuration from the directory specified by jboss.domain.base.dir . 7.13. Setting up a managed domain on two machines You can create managed domain on two machines, where one machine is a domain controller and the other machine is a host. For more information, see The role of a domain controller in a managed domain . <IP1> = IP address of the domain controller (Machine 1) <IP2> = IP address of the host (Machine 2) Note You may need to configure your firewall to run this example. Procedure On Machine 1 Add a management user so that the host can be authenticated by the domain controller. Use the add-user.sh script to add the management user for the host controller, HOST_NAME . Start the domain controller. Specify the host-primary.xml configuration file, which is preconfigured for a dedicated domain controller. Also, set the jboss.bind.address.management property to make the domain controller visible to other machines. On Machine 2 Update the host configuration as follows: Add the following configuration to the elytron subsystem: <subsystem xmlns="urn:wildfly:elytron:18.0"...> <authentication-client> <authentication-configuration name="secondary-hc-auth" authentication-name="MGMT_USER_NAME"> <credential-reference clear-text="MGMT_USER_PASSWORD"/> </authentication-configuration> <authentication-context name="secondary-hc-auth-context"> <match-rule authentication-configuration="secondary-hc-auth"/> </authentication-context> </authentication-client> ... </subsystem> Important This example uses a clear text password "MGMT_USER_PASSWORD". In production environments, either use a reference to a credential store or use an encrypted expression, instead of using a clear text password for better security. For more information, see Secure storage of credentials in JBoss EAP . Add the authentication context to the domain controller: <domain-controller> <remote authentication-context="secondary-hc-auth-context"> ... </domain-controller> Start the host controller. Specify the host-secondary.xml configuration file, which is preconfigured for a secondary host controller. Also, set the jboss.domain.primary.address property to connect to the domain controller and the jboss.bind.address property to set the host controller bind address. You can now manage the domain from the management CLI by specifying the domain controller address with the --controller parameter when launching. Or you can manage the domain from the management console at http:// <IP1> :9990 . 7.14. Configuring a JBoss EAP 8.0 domain controller to administer JBoss EAP 7.4 instances A JBoss EAP 8.0 domain controller can manage hosts and servers running JBoss EAP 7.4, if the hosts and servers are running JBoss EAP 7.4 or later. 7.14.1. Adding the JBoss EAP 7.4 configuration to the JBoss EAP 8.0 domain controller To allow the domain controller to manage your JBoss EAP 7.4 servers, you must provide the JBoss EAP 7.4 configuration details in the JBoss EAP 8.0 domain configuration. You can do this by copying the JBoss EAP 7.4 profiles, socket binding groups, and server groups to the JBoss EAP 8.0 domain.xml configuration file. You will need to rename resources if there is any conflict between the existing names in the JBoss EAP 7.4 configuration. There are also some additional adjustments to make to ensure the proper behavior. The following procedure uses the JBoss EAP 7.4 default profile, standard-sockets socket binding group, and main-server-group server group. Procedure Edit the JBoss EAP 8.0 domain.xml configuration file. It is recommended to back up this file before editing. Copy the applicable JBoss EAP 7.4 profiles to the JBoss EAP 8.0 domain.xml file. This procedure assumes that the JBoss EAP 7.4 default profile was copied and renamed to eap74-default . JBoss EAP 7.4 domain.xml <profiles> ... <profile name="eap74-default"> ... </profile> </profiles> Add the necessary extensions used by this profile. If your JBoss EAP 7.4 profile uses subsystems that are no longer present in JBoss EAP 8.0, you must add the appropriate extensions to the JBoss EAP domain configuration. JBoss EAP 8.0 domain.xml <extensions> ... <extension module="org.jboss.as.jsr77"/> <extension module="org.jboss.as.security"/> <extensions> Copy the applicable JBoss EAP 7.4 socket binding groups to the JBoss EAP 8.0 domain.xml file. This procedure assumes that the JBoss EAP 7.4 standard-sockets socket binding group was copied and renamed to eap74-standard-sockets . JBoss EAP 8.0 domain.xml <socket-binding-groups> ... <socket-binding-group name="eap74-standard-sockets" default-interface="public"> ... </socket-binding-group> </socket-binding-groups> Copy the applicable JBoss EAP 7.4 server groups to the JBoss EAP 8.0 domain.xml file. This procedure assumes that the JBoss EAP 7.4 main-server-group server group was copied and renamed to eap74-main-server-group . You must also update this server group to use the JBoss EAP 7.4 profile, eap74-default , and the JBoss EAP 7.4 socket binding group, eap74-standard-sockets . JBoss EAP 8.0 domain.xml <server-groups> ... <server-group name="eap74-main-server-group" profile="eap7.4-default"> ... <socket-binding-group ref="eap7.4-standard-sockets"/> </server-group> </server-groups> steps Updating the behavior of the JBoss EAP 7.4 version profiles 7.14.2. Updating the behavior of the JBoss EAP 7.4 version profiles Additional updates to the profiles used by your JBoss EAP 7.4 instances are necessary depending on the JBoss EAP version and desired behavior. You may require additional changes depending on the subsystems and configuration that your existing JBoss EAP 7.4 instances use. The following procedure assumes that the JBoss EAP 7.4 profile is eap74-default . Procedure Start the JBoss EAP 8.0 domain controller and launch its management CLI to perform the following updates. Set CDI 1.0 behavior. This is only necessary if you want CDI 1.0 behavior for your JBoss EAP 7.4 servers, as opposed to behavior of later CDI versions used in JBoss EAP 8.0. If you want CDI 1.0 behavior, make the following updates to the weld subsystem. JBoss EAP 8.0 Domain Controller CLI steps Setting the server group for JBoss EAP 7.4 server 7.14.3. Setting the server group for JBoss EAP 7.4 server If you renamed the server groups, you need to update the JBoss EAP 7.4 host configuration to use the new server groups specified in the JBoss EAP 8.0 configuration. This example uses the eap74-main-server-group server group specified in the JBoss EAP 8.0 domain.xml configuration file. Procedure Update the host configuration. JBoss EAP 7.4 host-secondary.xml <servers> <server name="server-one" group="eap74-main-server-group"/> <server name="server-two" group="eap74-main-server-group"> <socket-bindings port-offset="150"/> </server> </servers> Note A host cannot use features or configuration settings that were introduced in a newer version of JBoss EAP than the one the host is running. steps Prevent JBoss EAP 7.4 instances from receiving JBoss EAP 8.0 server updates 7.14.4. Prevent JBoss EAP 7.4 instances from receiving JBoss EAP 8.0 server updates The domain controller in a managed domain forwards configuration updates to its host controllers. You must use the host-exclude configuration to specify the resources that should be hidden from particular versions. Choose the appropriate preconfigured host-exclude option for your JBoss EAP 7.4 version: EAP74 . The active-server-groups attribute of the host-exclude configuration specifies the list of server groups that are used by a particular version. These server groups and their associated profiles, socket binding groups, and deployment resources will be available to hosts of this version, but all others will be hidden from these hosts. This example assumes that the version is JBoss EAP 7.4 and adds the JBoss EAP 7.4 server group eap74-main-server-group as an active server group. JBoss EAP 8.0 Domain Controller CLI /host-exclude=EAP74:write-attribute(name=active-server-groups,value=[eap74-main-server-group]) If necessary, you can specify additional socket binding groups used by your servers using the active-socket-binding-groups attribute. This is only required for socket binding groups that are not associated with the server groups specified in active-server-groups . 7.15. JBoss EAP profiles management 7.15.1. About profiles JBoss EAP uses profiles as a way to organize which subsystems are available to a server. A profile consists of a collection of available subsystems along with each subsystem's specific configuration. A profile with a large number of subsystems results in a server with a large set of capabilities. A profile with a small, focused set of subsystems will have fewer capabilities but a smaller footprint. JBoss EAP comes with five predefined profiles that should satisfy most use cases: default Includes commonly used subsystems, such as logging , security , datasources , infinispan , webservices , ee , ejb3 , transactions , and so on. ha Includes the subsystems provided in the default profile with the addition of the jgroups and modcluster subsystems for high availability. full Includes the subsystems provided in the default profile with the addition of the messaging-activemq and iiop-openjdk subsystems. full-ha Includes the subsystems provided in the full profile with the addition of the jgroups and modcluster subsystems for high availability. load-balancer Includes the minimum subsystems necessary to use the built-in mod_cluster front-end load balancer to load balance other JBoss EAP instances. 7.15.2. Cloning a profile JBoss EAP allows you to create a new profile in a managed domain by cloning an existing profile. This will create a copy of the original profile's configuration and subsystems. Procedure Clone a profile by using the clone operation on the desired profile to clone. You can also clone a profile from the management console by selecting the desired profile to clone and clicking Clone . 7.15.3. Hierarchical profiles in a managed domain In a managed domain, you can create a hierarchy of profiles. This allows you to create a base profile with common extensions that other profiles can inherit. The managed domain defines several profiles in domain.xml . If multiple profiles use the same configuration for a particular subsystem, you can configure it in just one place instead of different profiles. The values in parent profiles cannot be overridden. In addition, each profile must be self-sufficient. If an element or subsystem is referenced, then it must be defined in the profile where it is referenced. A profile can include other profiles in a hierarchy using the management CLI by using the list-add operation and providing the profile to include.

Commands:
/profile= <profile_name> /subsystem= <subsystem_name> :read-resource(recursive=true)
/subsystem=datasources/data-source=ExampleDS:read-resource
/profile=default/subsystem=datasources/data-source=ExampleDS:read-resource
/host= <host_name> /server= <server_name> :read-resource
/host= <host_name> /server-config= <server_name> :write-attribute(name= <attribute_name> ,value= <value> )
/server-group= <server_group_name> :read-resource
EAP_HOME /bin/domain.sh --host-config=host-primary.xml
EAP_HOME /bin/domain.sh --host-config=host-secondary.xml
<domain-controller> <local/> </domain-controller>
<management-interfaces> <http-interface http-authentication-factory="management-http-authentication"> <http-upgrade enabled="true" sasl-authentication-factory="management-sasl-authentication"/> <socket interface="management" port="USD{jboss.management.http.port:9990}"/> </http-interface> </management-interfaces>
<domain-controller> <remote> <discovery-options> <static-discovery name="primary" protocol="USD{jboss.domain.primary.protocol:remote+http}" host="USD{jboss.domain.primary.address}" port="USD{jboss.domain.primary.port:9990}"/> </discovery-options> </remote> </domain-controller>
EAP_HOME /bin/domain.sh --host-config=host-secondary.xml -Djboss.domain.primary.address= <ip_address>
<host xmlns="urn:jboss:domain:default:20.0" name="host1">
EAP_HOME /bin/jboss-cli.sh --connect --controller= <domain_controller_ip_address>
/host= <existing_host_name> :write-attribute(name=name,value= <new_host_name> )
<host name=" <new_host_name> " xmlns="urn:jboss:domain:default:20.0">
reload --host= <existing_host_name>
EAP_HOME /bin/domain.sh --host-config=host-secondary.xml -Djboss.host.name= <host_name>
<server-group name="main-server-group" profile="full"> <jvm name="default"> <heap size="64m" max-size="512m"/> </jvm> <socket-binding-group ref="full-sockets"/> <deployments> <deployment name="test-application.war" runtime-name="test-application.war"/> <deployment name="helloworld.war" runtime-name="helloworld.war" enabled="false"/> </deployments> </server-group>
/server-group= <server_group_name> :add(profile= <profile_name> ,socket-binding-group= <socket_binding_group_name> )
/server-group= <server_group_name> :write-attribute(name= <attribute_name> ,value= <value> )
/server-group= <server_group_name> :remove
<servers> <server name="server-one" group="main-server-group"> 1 </server> <server name="server-two" group="main-server-group" auto-start="true"> 2 <socket-bindings port-offset="150"/> </server> <server name="server-three" group="other-server-group" auto-start="false"> 3 <socket-bindings port-offset="250"/> </server> </servers>
/host= <host_name> /server-config= <server_name> :add(group= <server_group_name> )
/host= <host_name> /server-config= <server_name> :write-attribute(name= <attribute_name> ,value= <value> )
/host= <host_name> /server-config= <server_name> :remove
/host= <host_name> /server= <server_name> :start
/server-group= <server_group_name> :start-servers
/host= <host_name> /server= <server_name> :stop
/server-group= <server_group_name> :stop-servers
/host= <host_name> /server= <server_name> :reload
/server-group= <server_group_name> :reload-servers
/server-group= <server_group_name> :kill-servers
<domain-controller> <remote> <discovery-options> <static-discovery name="primary" protocol="USD{jboss.domain.primary.protocol:remote}" host="172.16.81.100" port="USD{jboss.domain.primary.port:9990}"/> <static-discovery name="backup" protocol="USD{jboss.domain.primary.protocol:remote}" host="172.16.81.101" port="USD{jboss.domain.primary.port:9990}"/> </discovery-options> </remote> </domain-controller>
EAP_HOME /bin/domain.sh --host-config=host-secondary.xml --cached-dc
EAP_HOME /bin/domain.sh --host-config=host-secondary.xml --backup
<domain-controller> <remote username="USDlocal" ignore-unused-configuration="false"> <discovery-options> </discovery-options> </remote> </domain-controller>
/host=backup:write-attribute(name=domain-controller.local, value={})
reload --host= <host_name>
cp -r EAP_HOME /domain <path_to> /domain1
cp -r EAP_HOME /domain <path_to> /host1
EAP_HOME /bin/domain.sh --host-config=host-primary.xml -Djboss.domain.base.dir= <path_to> /domain1
EAP_HOME /bin/domain.sh --host-config=host-secondary.xml -Djboss.domain.base.dir= <path_to> /host1 -Djboss.domain.primary.address= <ip_adress> -Djboss.management.http.port= <port>
EAP_HOME /bin/domain.sh --host-config=host-primary.xml -Djboss.bind.address.management= <IP1>
<subsystem xmlns="urn:wildfly:elytron:18.0"...> <authentication-client> <authentication-configuration name="secondary-hc-auth" authentication-name="MGMT_USER_NAME"> <credential-reference clear-text="MGMT_USER_PASSWORD"/> </authentication-configuration> <authentication-context name="secondary-hc-auth-context"> <match-rule authentication-configuration="secondary-hc-auth"/> </authentication-context> </authentication-client> </subsystem>
<domain-controller> <remote authentication-context="secondary-hc-auth-context"> </domain-controller>
EAP_HOME /bin/domain.sh --host-config=host-secondary.xml -Djboss.domain.primary.address= <IP1> -Djboss.bind.address= <IP2>
EAP_HOME /bin/jboss-cli.sh --connect --controller= <IP1>
<profiles> <profile name="eap74-default"> </profile> </profiles>
<extensions> <extension module="org.jboss.as.jsr77"/> <extension module="org.jboss.as.security"/> <extensions>
<socket-binding-groups> <socket-binding-group name="eap74-standard-sockets" default-interface="public"> </socket-binding-group> </socket-binding-groups>
<server-groups> <server-group name="eap74-main-server-group" profile="eap7.4-default"> <socket-binding-group ref="eap7.4-standard-sockets"/> </server-group> </server-groups>
/profile=eap74-default/subsystem=weld:write-attribute(name=require-bean-descriptor,value=true) /profile=eap74-default/subsystem=weld:write-attribute(name=non-portable-mode,value=true)
<servers> <server name="server-one" group="eap74-main-server-group"/> <server name="server-two" group="eap74-main-server-group"> <socket-bindings port-offset="150"/> </server> </servers>
/host-exclude=EAP74:write-attribute(name=active-server-groups,value=[eap74-main-server-group])
/profile=full-ha:clone(to_profile= <cloned_profile> )
/profile=new-profile:list-add(name=includes, value= <profile_name> )