FAS Administration Guide
FAS Administration Guide
FAS Administration Guide
Updated: 2022-06-22
Contact Information
You can manage Fusion Application Server configuration at a number of different levels: the
domain level, server group level, server process level, or by way of profiles. See the
Domains, Server Groups, Server Processes, and Profiles section.
Management Interfaces
You can perform much of the configuration and management of Fusion Application Server
clusters using the Management Console. You can also perform the same configuration tasks,
and some additional tasks, using the CLI.
File System
FAS stores its configuration options in a number of property files. You do not normally need to
edit these files directly; in most cases you can use the Management Console or CLI. See the File
System section.
A FAS cluster consists of FAS nodes running Load Balancers (LBs) and Application Servers
(ASs), which are server processes. See the Managing Cluster Components section.
Managing Applications
FAS is the platform on which CBA applications and other applications run. Several types of
application can run on FAS. See the Managing Applications section.
Some CBA applications require a license to enable subscribers to use them. Licenses are
available from CBA Support, and are applied to the application using FAS’s License Server. See
the Licensing section.
SNMP Traps
Each Host Controller process contains an SNMP Agent, which provides a means by which
applications deployed on FAS can raise traps. There are also a number of SNMP traps that the
FAS cluster itself may raise when significant events occur. See the Configuring SNMP section.
Logging
FAS uses Log4J to log events to the console, and to various files in the system. You can change
logging levels and logging destinations using the Management Console. See the Configuring
Logging section.
Security
By default, local access (that is, from the node itself) is not restricted, but remote access is
restricted by credentials specified during installation. These credentials are also used by slave
application servers to communicate with the master application server. See the Configuring
Security section.
Ports
Fusion Application Server uses a number of ports for communication between cluster
components and external SIP or HTTP devices. These ports are listed in the Ports section.
Monitoring
This data can be viewed using JConsole, which is supplied with your JDK. FAS also provides a
script for collecting diagnostic information from a server for further offline investigation. See the
Monitoring section.
The components within a FAS cluster must trust each other, so you must provision all of them
with identity certificates signed by a trusted CA. As the LBs send and receive external data, you
should provision them with trust certificates which will let them know which external hosts to
trust. See the Configuring Trust Management section.
Performance
There are a number of properties on Fusion Application Server cluster components, and on the
SIP stack, which you can change to improve performance. See the Configuring Performance
section.
One of the processes that make up each FAS is its Host Controller, which provides the FAS’s
management interfaces. Although each FAS node has a Host Controller, one is singled out as
the master Host Controller, known as the Domain Host Controller. In multi-box installations,
one of the hosts is installed as the master node (see the Fusion Application Server
Installation Guide), and it is the master node which contains the Domain Host Controller.
Domains
All ASs and LBs in a domain share the same Domain Host Controller, which offers a single point
of administration to all the other slave Host Controllers within the domain.
The Domain Host Controller can manage the cluster using the Management Console or a CLI,
whereas slave host controllers only offer a limited read-only CLI interface.
When it starts, a slave Host Controller will attempt to read its configuration from the Domain Host
Controller. This process ensures that all hosts in a domain have the same configuration.
The installer decides which node is the master node that runs the Domain Host Controller, and
that node remains the master node; there is no automatic process for replacing a failed master
node. (There is a manual process which could be followed but we do not recommend this).
However, a FAS cluster can continue successfully when a master node is down, and high
availability is unaffected. The only effects are a reduction in capacity, and that configuration
changes cannot be made until the master node is back up.
On installation, a host typically has two or three server processes running on it, each belonging
to a separate server group:
The Domain Host Controller on the master FAS node runs as an additional server process
that runs in its own server group, called mgmt-server-group. This server process runs the
License Server and Trust Management module.
A domain can have multiple server groups. You can configure different server groups with
different profiles and deployments; you can also configure different server groups with the same
profile and deployments.
Profiles
A profile is a named list of subsystems, such as logging, Web, and SIP, along with the details of
each subsystem’s configuration. For example, a profile specifies the logging configuration such
as handlers and log categories. Multiple server groups can share the same profile.
management
Contains the default configuration suitable for hosting non-SIP, non-HA applications. It is used to
configure a server process for CBA management subsystems and applications such as trust
management, SNMP and licensing.
ha
lb
Administrators might want to alter a profile’s configuration. For example, an administrator might
add a datasource with details of database connection details, or an Infinispan cache that
replicates data to all nodes in the server group. Applications deployed to server processes with
that profile can then use these resources.
The profiles can also change the behavior of subsystems. For example, you can configure the
JMX subsystem to expose the domain configuration model as MBeans.
Management Console
The Management Console is a browser-based UI provided by the Domain Host Controller, which
can be used to configure the Fusion Application Server.
The required FAS cluster components are installed, as detailed in the Fusion Application
Server Installation Guide. All cluster components that are part of the same cluster have the
same Cluster Address, which is set during installation.
Each FAS node in the cluster (or the only FAS node in a single-box installation) is running.
The LBs and ASs in the cluster are running. The Management Console cannot start other
host controllers or FAS nodes, but you can use it to start or stop server processes on a local
or remote FAS node, as long as the FAS node itself is running.
https://<fas address>:9990
where <fas address> is the IP address of the master node, or the machine hosting a single-
box installation.
You must supply the administrator credentials to log in to the Management Console; enter the
administrator credentials that you specified during installation. The console should launch
successfully:
Profiles
Server
Runtime
2. Secondary navigation (often referred to as the top left menu). It may contain a list of:
3. Third navigation (often referred to as menu on the left, or left hand menu).
Displays sections of the configuration of the item selected in the secondary navigation, which
you can display and modify. Some of the items in this menu can be opened to show a sub-menu.
4. Navigation tabs.
Having selected a section in the third navigation, the navigation tabs display subsections of the
configuration.
The main content area displays the configuration for an item. Commonly, it shows a list of
resources in a table in the top half, and displays an item selected from the table in more detail in
the bottom half. There may also be buttons for the operations which you can apply to the items in
the table. If the configuration of each item is complex, the lower half of the window might contain
additional tabs.
Clicking on Messages displays a list of recent messages, such as the outcome of a recent
operation.
7. Toolbar
Tools->Browser
Provides an alternative read-only view of the Dynamic Representation Model. This view is
closer to the structure used by the CLI (see the Command Line Interface (CLI) section), and may
help you to understand the structure of resources in the CLI, or to allow you to see the values of
attributes which you cannot access in the Management Console.
Settings
Allows the user to change the locale of the Management Console itself.
Logout
Managing Profiles
Select Profiles from the main navigation area. The secondary navigation area contains a list of
profiles which can be managed.
ha profile
This is the profile used by SIP and Web applications hosted by FAS. The installer applies it to the
main-server-group.
lb profile
By default, this profile applies to the lb-server-group. It has the following subsystems, some of
which can be managed through the Management Console: LB, OAMP, JMX, Remoting, and
Logging.
management profile
This profile is reserved for management applications such as the License Server and the Trust
Management module. By default, it applies to the mgmt-server-group.
After you select a profile, the third navigation area displays items which can be configured, in two
menus:
Subsystems
Shows a list of subsystems specific to the profile. Which subsystems are shown depends on the
profile selected (the ha profile has many more subsystems than the lb profile, for instance).
When you select one of these subsystems, its content (divided between one or more navigation
tabs) appears in the main content area.
Note: The Subsystems menu is typically grouped into sub-menus (such as Container, Core, or
Web), indicated by a + or - next to them, with the subsystem menu items beneath them. The
sub-menus can be expanded or collapsed.
These settings are common across all profiles (that is, they are at the domain level):
Interfaces
Displays a list of interfaces (for example, public, management) and allows you to specify which
IP address they bind to or NIC they use.
You typically specify these at the host level (see the Managing Servers section), not at the profile
level.
Socket Binding
Displays a list of socket binding groups. The FAS installer creates a single group, ha-sockets,
that is used by both the ha and management profiles.
The binding group specifies the default ports used for each binding (for example, http=8080), but
these can be overridden at the server group level.
System Properties
Displays a list of system properties. These are set at the domain level, and can be overridden at
the server group, host, or server process level.
The Management Console cannot create additional profiles. It is possible to create profiles using
the CLI, but it is probably simpler to clone an existing profile by editing the domain.xml file
directly and changing the profile name. See the Files in the domain/configuration Directory
section for more information about this file.
Managing Servers
Select Server from the main navigation area. The secondary navigation area contains a list of
hosts which can be managed.
A host is a physical server (or VM) that has FAS installed on it, and whose Host Controller is
either the Domain Host Controller (in which case the host is the master node), or the Host
Controller of a slave node that has successfully connected to the Domain Host Controller.
Once you have selected a host, the third navigation area displays items which can be
configured:
Server Configuration
When you have selected a server process from the list, you can configure it in the bottom half of
the main content area. For example, you can configure JVM settings and system properties,
change the assigned server group, alter the auto-start flag, or change the port offset.
Server Groups
The main content area displays the list of server groups configured for this domain.
You can add and remove server groups, and when you have selected one of them, you can
configure the server group in the bottom half of the main content area. For example, you can
configure JVM settings, system properties, or change the associated profile, or socket
binding.
JVM Configuration
All server processes on this host will start up using these JVM settings unless overridden at the
server process level.
Interfaces
Define what IP address, NIC, and so on, to use for management and public interfaces.
During installation, FAS configures and stores the IP addresses to bind to in the fas.properties
file. These are referenced as system property expressions in this section. The easiest way to
change the bind IP address is to edit the fas.properties file. See the Files in the
domain/configuration Directory section for more information about this file.
Host Properties
Defines the system properties at the host level. All server processes on this host will use these
system property values, unless they are overridden at the server process level.
The items are divided into two groups in the third navigation area, Server and Host Settings.
Both sets of configuration items apply to the host, but those in Server relate specifically to the
way that FAS operates; the items in Host Settings are more generic, and have their equivalents
on any application server.
Note: To start, stop, and view the status of the server processes running on the server, see the
Starting and Stopping Server Processes section.
Select Runtime from the main navigation area. The secondary navigation area shows a pop-out
dialog, in which you can select a host and server process pair:
Select a server process on a specific host and click Done; the third navigation area shows items
related to that host and server process:
Domain
These settings are common to the domain or host (they are the same whichever server process
you have selected from the second navigation area).
Server Instances
A list of server processes for the selected host, including their current status. From here you can
start or stop the selected server process.
When you select a server process, you can view the environment properties; these are the
system properties available to applications and subsystem services running on the server. They
contain properties set by the container, as well as properties set by the administrator at domain,
server group, host, or server process level.
Note: The environment properties are different for different server processes, but those displayed
depend on the server process selected in the main content area, not that selected in the
secondary navigation area; as long as you select a server process on the correct host in the
1. Select one of the server processes on localhost in the second navigation area and click
Done.
You can now view and edit the environment properties for the loadbalancer server process by
clicking the Environment Properties tab in the lower part of the main content area.
Manage Deployments
Displays the deployed objects in the Content Repository tab. These are typically Web, SIP or
JEE EAR application archives, but they can also contain things such as JDBC driver jars, and
even XML files.
You can add, update, or remove content. When you add content, you must assign it to one or
more server groups before it can be used.
There is a second navigation tab called Server Groups. This provides an alternative view of the
same deployments, with objects grouped according to the server groups they are assigned to.
This allows you to view the applications deployed to each server group, and to enable or disable
these applications.
Server Status
Displays statistics related to subsystems or core components of FAS. For example, you can view
statistics for JVM, datasource, JPA, JNDI, transactions, Web and Webservices.
The CLI is a utility installed on FAS hosts. You can use the CLI to configure Fusion Application
Server from a command prompt.
The required FAS cluster components are installed, as detailed in the Fusion Application
Server Installation Guide. All cluster components that are to be part of the same cluster
will have the same Cluster Address, which is configured during installation.
The CLI can also be run from a Java application, which might be useful for scripting repetitive
tasks.
For more information about using the CLI than the Fusion Application Server Administration
Guide provides, type help on the CLI command line, or look in the JBoss CLI documentation.
Note: The CLI represents the configuration as a tree structure; the JBoss CLI documentation
refers to the elements of the tree as nodes or resources interchangeably, and this section on
the CLI follows this terminology. Do not confuse a node in the CLI with a FAS node.
cd <install dir>/bin
2. Run:
./jboss-cli.sh
where <fas address> is the IP address or host name of the FAS host you want to connect to.
4. The CLI will prompt you for the user name and password. It uses the same credentials as
the Management Console, the ones that you specified during installation.
Note: The CLI supports tab-completion for node types and names, operation names, property
names and, in some cases, values. That is, you can start typing the name or value and then
press tab. Where there is only one possible option, it completes the name or value. Where there
is more than one possible option, it lists the options.
The following sections describe how to build operations on the command line.
The current node path is indicated in the command line prompt. The default value is /, that is, the
root node. If you do not specify an address, the operation will be executed against the current
node path.
Operations are performed on resources. Resources often have child resources. For example, the
resource /profile=ha has a set of child resources of type subsystem, for example,
/profile=ha/subsystem=sip. The address of the resource is made up of a series of name-value
pairs that include the address of any parent resources.
To see what resources are available under the current node, use the ls command.
You can use the :read-operation-names command on any node to list the available operations.
For example, run from an ID certificate group in the trustmgmt subsystem, the command returns
something like the following:
[[email protected]:9999 identity-certificate-group=mgmt-server-group]
**:read-operation-names**
**:read-operation-description(name=generate-keypair)**
{
"outcome" => "success",
"result" => {
"operation-name" => "generate-keypair",
"description" => "Generates a private/public key pair. Returns the generated
key pair in PEM format - the first entry is the private key, and the second is
the self-signed certificate",
"request-properties" => {
"expiry-date" => {
"type" => STRING,
"description" => "The expiry date (yyyy-mm-dd) for the generated key pair",
"expressions-allowed" => true,
"required" => false,
"nillable" => true,
"min-length" => 10L,
"max-length" => 2147483647L
},
"subject-dn" => {
"type" => STRING,
"description" => "The distinguished name for the generated key pair",
"expressions-allowed" => true,
Running an Operation
For example, the command to change the SIP call logging level to DEBUG is:
/profile=ha/subsystem=logging/logger=sip.calls/:write-
attribute(name=level,value=DEBUG)
If you plan to run a number of commands against a particular resource, you can change to that
resource node and run the commands from the node, to save you having to specify the node on
each command. To change the node, you can use the change node command: cn or cd:
cd profile=ha/subsystem=logging/logger=sip.calls/
[host:port /logger=sip.calls]
You can then omit the address to run an operation against the current node:
Start with ./ to execute an operation against a child resource of the current node. For example,
you can run the following command against the subsystem=logging node to update the child
resource logger=sip.calls:
./logger=sip.calls:write-attribute(name=level,value=DEBUG)
If you have changed nodes away from the root, you can start with / to execute an operation
against the root node:
/:read-resource
For more information on the CLI, type help on the CLI command line.
The above examples show CLI being used in interactive mode. The CLI can also run commands
loaded from a script. For example, to load the CLI commands in a file called read-all.cli and pipe
the output to a file called results.txt, use the following command:
# read-all.cli
#
# connect to host controller (or you could pass
# -- controller=<ip> flag to cmd)
connect 192.168.1.234
:read-resource(recursive=true,include-runtime=true)
You can also run multiple commands in a single batch. In batch mode, all operations must run
successfully; otherwise, a failure of any operation will cause a rollback of all operations. The
following commands are available in batch mode:
Command Description
move‑batch‑line (int from, int to) Moves a line in a batch to a different position
Directory Description
The domain/configuration directory is the most important directory, as it contains the two files
that define the domain configuration, domain.xml and host.xml, together with a number of
.properties files:
File Description
Starts the CLI, which can be used to edit most of the configuration
values in the domain.xml and host.xml files. It can connect to a local
jbosscli.sh
or remote host controller. The CLI can also be started in GUI mode.
See the Command Line Interface (CLI) section.
Does not have the JBoss CLI JMX extension (this script can only
connect to the host controller). See the Monitoring using JMX section.
All of the nodes in a FAS cluster, and all of the server processes in a FAS node (that is, AS, LB,
and SNMP Agent) can be run independently of each other; however, the master node plays the
most important role. Specifically:
Slave nodes receive updated configuration from the master. If the master node is not
running, the slaves will use cached configuration and then periodically make attempts to
connect to the master to get configuration updates.
We therefore recommend that you start the master node before the slaves or the other
processes. The start-up order of these other processes is unimportant.
During installation, you can choose to start the FAS services automatically - see the Fusion
Application Server Installation Guide.
Once FAS is installed, you can start and stop FAS from the command line, either as a service (if
you installed it as a service), or using a script.
Starting a FAS node starts whatever server processes it finds on the node. Thus, if an AS and an
LB are both present, it will start both.
As a Service
If you have created an Operating System service to run FAS (see the Fusion Application
Server Installation Guide for details on creating a service either during or after installation), you
can start and stop it from the command line:
<install dir>/bin/fas.sh
You can start and stop any server process in a domain using the Management Console:
1. Launch the Management Console - see the Starting the Management Console section.
3. From the top left menu, select the host that is running the server process that needs starting
or stopping.
5. In the main content area, select the server process you want to start or stop.
Note: Because the service does not stop immediately upon clicking the Stop button, it is possible
to try to start a service while it is still stopping, which will result in an error. It is advisable to wait
for the service to stop (up to a minute) before trying to start it again.
You can add additional nodes containing an LB to a multibox cluster. You can also add an LB to
an existing host on which only an AS was originally installed. Both procedures are described
below.
: The cluster element discovery mechanism in FAS uses multicast based on Classful
addressing. You must ensure that all hosts in the cluster have addresses in the same Classful
subnet, even if your network infrastructure is configured with Classless addressing and multicast
will span Classful subnets.
If you did not set the Cluster ID when installing the master node, you can leave this blank to use
the default. If it was set explicitly, that value must be used.
1. Launch the Management Console - see the Starting the Management Console section.
5. Click Add:
2. Select lb-server-group.
6. Click Save .
You can configure LB properties using the Management Console or the CLI, using the lb profile.
1. Launch the Management Console - see the Starting the Management Console section.
4. In the left hand menu, expand Load Balancer, and select Configuration.
6. The properties are listed in the Key column. Click on the cell in the Value column of the
property you wish to edit:
/profile=lb/subsystem=lb/:read-resource(recursive=true)
/profile=lb/subsystem=lb/property=<property>/:write-attribute(name=value,value=<new
value>)
where is the property you want to change, and is the value you want to set it to. For the list of
properties see the LB Properties section.
LB Properties
Property Description
gov.nist.javax.net.ssl.
The alias of the LB’s identity certificate store
keyStoreAlias for secure SIP.
Default is 10000
gov.nist.javax.sip.SECURITY_
The name of the class used to provide
MANAGER_PROVIDER certificates to the SIP stack. Do not change.
: The cluster element discovery mechanism in FAS uses multicast based on Classful
addressing. You must ensure that all hosts in the cluster have addresses in the same Classful
subnet, even if your network infrastructure is configured with Classless addressing and multicast
will span Classful subnets.
1. Run the FAS installer on the new host (see Fusion Application Server Installation Guide),
ensuring that you select the following options:
If you did not set the Cluster ID when installing the master node, you can leave this blank to use
the default. If it was set explicitly, that value must be used.
The main properties which you can configure for an AS are SIP Servlet properties. See the
Configuring SIP section.
Removing an AS or LB
If required, you can remove an AS or an LB server process from a cluster. You should ensure
that at least one AS and one LB remain in the cluster following the removal.
3. From the top left menu, select the host from which you want to delete a server process.
5. In the main content area, select the server process from the table.
6. Click Remove.
7. When the confirmation dialog is displayed, click Confirm to remove the server process from
the cluster:
Fusion Application Server implements RFC 3581 (an extension to the Session Initiation
Protocol (SIP) for Symmetric Response Routing). This involves populating the rport parameter
with the port from which FAS received the request, and adding a Received parameter containing
the address from which it received the request.
Some entities, such as Linphone, take these values and use them to populate the contact
header in the INVITE request that it sends out. This would be fine if the entity sent the
REGISTER from the port it was actually listening on, but causes problems if it is sent from an
ephemeral port, as in the case of Linphone.
You can configure Fusion Application Server to disable RFC 3581 behavior by setting the
gov.nist.javax.sip.stack.SUPPORT_RFC3581 property to false. (The default value is true.)
1. Launch the Management Console - see the Starting the Management Console section.
4. In the left hand menu, expand Sip and select Sip Servlet.
/profile=ha/subsystem=sip/property=gov.nist.javax.sip.stack.SUPPORT\_RFC3581/:write
-attribute(name=value, value=false)
You can browse through all of the configuration options for your FAS cluster using the
Configuration Browser in the Management Console. This browser provides a read-only view of
the Dynamic Representation Model, in a tree structure. This may help understand the structure
of resources in the CLI, and allows you to see attributes which you cannot access in the
Management Console.
Open the Management Console, and in the bottom right toolbar, select Tools->Browser:
Expand the nodes in the tree structure on the left, and click on the relevant node. The content
pane displays the configuration details for that node: the Description tab provides a description
of each of the data values applicable to the selected node; the Data tab displays the actual data
values:
The address the cluster should use when identifying itself externally (in the Contact and
Route SIP headers for instance).
lb.bind.address 192.168.2.3
This is the IP address that the LB
server process uses for communication
between cluster elements.
192.168.2.3
management This is used by the CLI and
Management Console, and for
communication between master and
slave host controllers.
2. Edit the values of the addresses that you want to change and save the file.
3. Restart FAS.
4. Check that the ports are bound to the new addresses using a tool such as netstat.
Look in the server logs for any information as to why the IP address could not be bound.
2. Restart FAS.
3. Check that the slave node rejoined the master. For instance, check that the host of the slave
node appears in the Management Console.
You can configure how external entities should address the FAS cluster. You can configure the
address modes for SIP and HTTP(S) separately. These settings are:
external-address-mode
Used for HTTP, this will affect the addresses the container provides to applications when they
need to determine the address of the cluster for HTTP, such as when providing URLs to external
clients.
Used for SIP, it determines the address that FAS uses when it populates the following headers of
outbound SIP:
cluster
The external-address is a static address as defined in the cluster-address attribute (see the
Configuring the Cluster Address section). When this option is selected, the Record-Route and
Contact headers in SIP messages are populated with an address that will target any LB, and
HTTP also uses this value for its address. This address should be an FQDN which resolves to all
the LBs using DNS. This option requires DNS support in the network.
load-balancer
application-server
The external-address is that of the local AS. This mode is useful for certain development
topologies where IP addresses change often.
1. Launch the Management Console - see the Starting the Management Console section.
4. In the left hand menu, expand Sip and select Sip Servlet.
7. In the HTTP External Address Mode or SIP External Address Mode drop-down lists,
select the required option such as load-balancer).
8. Click Save.
If you are using the cluster external address mode, you might need to change the cluster
address when you change other addresses. See the Configuring the External Address Mode
section for an explanation of this mode.
When you change the cluster address, you must typically make changes to the trust subsystem
to ensure that it contains a valid identity certificate that matches the new cluster address. This
will ensure the TLS server identity certificate presented to the HTTP and SIP client matches the
new cluster address.
1. Launch the Management Console - see the Starting the Management Console section.
6. Click Edit.
8. Click Save.
/profile=ha/subsystem=sip:write-attribute(name=cluster-address,value=<new cluster
address>
where <new cluster address> is the address you want to change the cluster address to.
If your cluster is created with the default cluster name ( ClusterID-<Cluster address> ), and
you subsequently change the cluster address or IP address, the original cluster name does not
Note: While it is possible to change the cluster name through the CLI, the cluster name is used
as the basis of many attributes (for example, the names of Infinispan caches), and these will not
be changed. Therefore, the recommended approach is to find and replace all occurrences of the
old cluster name value in the underlying configuration file, domain.xml.
2. Find each occurrence of the old cluster name and replace it with the new cluster name.
There will typically be around ten occurrences of the cluster name to be changed:
would become
4. Restart the master FAS, and then restart FAS on all the slave nodes to pick up the changes.
The cluster name on each AS and LB in the cluster must match, otherwise the ASs will not be
able to register with the LBs.
By default, the LB only listens on one network interface for all traffic: that is, HTTP, HTTPS, SIP,
and SIPS. Using the CLI, you can configure the LB to listen for HTTP and HTTPS on all IPv4
addresses. Once the HTTP and HTTPS bindings are changed to bind to all interfaces, traffic can
be sent to http://<any_bound_ip>:8080 and https://<any_bound_ip>:8443 .
/socket-binding-group=lb-sockets/socket-binding=http:write-
attribute(name=interface,value=all)
The HTTP and HTTPS bindings for the LB will now be to all interfaces ( 0.0.0.0).
If you do not need FAS to send and receive SIP or HTTP traffic to and from other machines,
you can use the loopback address. See the Using the loopback Address section
Otherwise, you should set the external address modes to use the load-balancer option (this
step will avoid you having to update the cluster address each time the address changes),
and then update the fas.properties file with details of the new IP address each time it
changes, as described below. See the Configuring the External Address Mode section for
details of how to change the mode.
Note: The following instructions assume that FAS is running as a single box installation.
For single-box installations, you might want to install FAS using the loopback address (127.0.0.1)
to avoid having to change the bind address when the host machine’s IP address changes. You
can configure FAS to bind to the loopback address by editing the jboss.bind.address (as
Binding to the loopback address means that FAS will not be externally addressable, so all
interactions with FAS (SIP messages, administration) must originate from that machine.
If the loopback address is used, for the AS and LB to communicate with each other they must
use the FILE_PING discovery protocol. You can set this using the CLI:
/profile=ha/subsystem=jgroups/stack=tcp:add-protocol(type=FILE_PING)
/profile=ha/subsystem=jgroups/stack=udp:add-protocol(type=FILE_PING)
/profile=lb/subsystem=jgroups/stack=tcp:add-protocol(type=FILE_PING)
/profile=lb/subsystem=jgroups/stack=udp:add-protocol(type=FILE_PING)
If at some point using the loopback address is no longer appropriate, you must remove the
FILE_PING discovery protocol, and then set the jboss.bind.address to an appropriate IP
address.
The FILE_PING discovery protocol can be removed with the following CLI commands:
/profile=ha/subsystem=jgroups/stack=tcp:remove-protocol(type=FILE\_PING)
/profile=ha/subsystem=jgroups/stack=udp:remove-protocol(type=FILE\_PING)
/profile=lb/subsystem=jgroups/stack=tcp:remove-protocol(type=FILE\_PING)
/profile=lb/subsystem=jgroups/stack=udp:remove-protocol(type=FILE\_PING)
When you have run these commands and edited the jboss.bind.address as required, restart FAS
to pick up the changes.
You can deploy multiple applications on a cluster using the Management Console; once
deployed, you can configure application properties in the same way. You can also configure
datasources for those applications which need them (see the Configuring Datasources section).
Deploying Applications
Deploying an Application
1. Launch the Management Console - see the Starting the Management Console section.
3. In the left hand menu, expand Domain and select Manage Deployments.
6. Choose the application that you want to deploy, and click Next:
7. Edit the name if required (usually you can accept the default), and click Save.
8. Select the application that you have just uploaded (files in the Content Repository are in
alphabetical order of their names), and click Assign:
9. Select the server group you want to deploy the application to. In most instances, SIP
applications will be deployed to the main-server-group. Applications should not be deployed
to the lb-server-group.
The application is now uploaded and deployed to a server group. The Assignments column
should show 1 against the name of the application.
Updating an Application
1. Launch the Management Console - see the Starting the Management Console section.
3. In the left hand menu, expand Domain and select Manage Deployments.
5. Select the application you wish to update in the list, and click Update:
Make sure that you choose a file containing a newer version of the application you are updating,
as FAS cannot distinguish a newer version of the same application from an unrelated application.
7. Click Save.
The application will be uploaded to FAS, replacing the selected application, and assigned to any
server groups it was already assigned to.
Undeploying an Application
3. In the left hand menu, expand Domain and select Manage Deployments.
Note: Deployed applications can depend upon other deployed applications. If you remove an
application without removing any applications which depend on it, those applications will
probably malfunction. If in doubt, you can disable an application first, to check if it is safe to
remove it; see the Enabling or Disabling an Application section.
1. Launch the Management Console - see the Starting the Management Console section.
3. In the left hand menu, expand Domain and select Manage Deployments.
5. Click the View link in the Options column of the main-server-group row:
When disabled, the tick in the Enabled column will disappear. If the application is disabled,
clicking the En/Disable button will enable it.
Application Backups
Applications that can be deployed to Fusion Application Server can expose their properties for
configuration in the Management Console in two different ways: using system properties, or
using the Application Configuration Framework. This section describes both methods. The
documentation for your application should describe the properties that can be configured and
how to configure them.
1. Launch the Management Console - see the Starting the Management Console section.
2. Application properties can be added at any of the following four levels (in order of
precedence):
i. domain level
Applies to all server processes running on all hosts within the domain:
b. In the left hand menu, expand General Configuration and click System Properties
b. In the left hand menu, expand Server and click Server Groups
c. Select the Server Group in the main content area, and choose the System Properties
tab below it
a. Click **Server** in the top right menu, and select the host in the top left
menu
b. In the left hand menu, expand **Host Settings** and click **Host
Properties**
a. Click **Server** in the top right menu and select the host in the top left
menu
c. Select the server process in the main content area, then select the
**System Properties** tab below
The most common place to set a system property is at server group level, because applications
are deployed to a server group. In the appropriate System Property page:
To remove a system property, select the property and click the Remove link.
To add a system property, click the Add button to bring up the Create System Property
dialog:
Alternatively, applications can use the Application Configuration Framework (ACF) to manage
their configuration. This offers validation and publishing hooks that allow the application to check
that configuration settings are valid, and to be informed when configuration settings have
changed.
An application may be capable of being managed by the ACF, without actually being managed.
In order to manage its properties, you must first manage the application:
1. Launch the Management Console - see the Starting the Management Console section.
4. In the left hand menu, expand Subsystems and Sip, and select Application Config:
5. Select the application you want to manage and click the Manage button. A dialog appears:
4. In the left hand menu, expand Subsystems and Sip, and select Application Config:
The applications which are using the ACF are displayed in the top of the main content area. If
there is more than one, you will need to select the application to see its properties in the lower
part of the main content area.
5. Click on the cell in the Value column for the property you wish to edit.
When you press <span class="smallcaps">Enter</span> , or move the focus away from the
edited cell, it validates the property value and displays any errors. Values are not immediately
published.
7. Click Save.
2. Run:
/profile=ha/subsystem=config:list-apps()
{
"outcome" => "success",
"result" => undefined,
"server-groups" => {"main-server-group" => {"host" => {"master-192.168.9.14" =>
{"192.168.1.234-1" => {"response" => {
"outcome" => "success",
"result" => [("SomeApp" => {
"description" => "Provides sip routing adaptation",
"status" => "MANAGED"
})]
}}}}}}
The status of the application in the above example is MANAGED, therefore its properties can be
modified. If it was UNMANAGED, you would need to manage it before setting its properties.
To manage an application:
/profile=ha/subsystem=config/application=<application
name>:add(description="description")
(You must add a description if you manage the application using the CLI.)
To unmanage an application:
/profile=ha/subsystem=config/application=<application name>:remove()
/profile=ha/subsystem=config/application=<application name>:describe
{
"outcome" => "success",
"result" => undefined,
"server-groups" => {"main-server-group" => {"host" => {"master-192.168.9.14" =>
{"192.168.1.234-1" => "response" => {
"outcome" => "success",
"result" => [{"properties" => {
"externalRegistrarUrl" => {
"description" => "The SIP URI of the external registrar",
"value" => "192.168.1.100",
"type" => "String",
"status" => "SET"
},
"internalUserPattern" => {
"description" => "A regular expression pattern to match all SIP users that
should be handled by the internal registrar",
"value" => "^1.\*",
"defaultValue" => "^1.\*",
"type" => "String",
"status" => "NOT\_SET"
}
}}]
}}}}}}
To validate a property:
/profile=ha/subsystem=config/application=<application name>/property=<property
name>:validate(value=<new value>)
The outcome (success, or failed and a reason) will be returned in the response.
To add a property:
/profile=ha/subsystem=config/application=<application name>/property=<property
name>:add(value=<value>)
To remove a property:
/profile=ha/subsystem=config/application=<application name>.property=<property
name>:remove
To change a property:
/profile=ha/subsystem=config/application=<application name>/property=<property
name>:update(value=new value>)
Use update to change an exposed property that has previously been set using add; if it has not
been set before, use add.
When you have made all the changes to the properties that you want, you must publish them,
which saves them and pushes them to the FAS server processes.
/profile=ha/subsystem=config/application=<application name>:validate()
/profile=ha/subsystem=config/application=<application name>:publish()
Co-hosting Applications
The JSR 289 SIP specification allows for only one SIP application router per container. This
makes it difficult to install or deploy more than one SIP product to a single container. The Fusion
Application Server supports the ability to have multiple application routers deployed at the
same time, facilitating the co-hosting of multiple SIP products.
FAS introduces a concept of a SIP application router domain. Each application router can be
associated with a number of domains. When a SIP request enters FAS, FAS checks the domain
that the SIP message is addressed to, and selects the application router with an application
router domain that matches. If the domain is not explicitly configured as an application router
domain of one of the application routers, FAS selects the application router which is configured
as the default.
Note: When co-hosting multiple applications, ensure that a reverse lookup on any IP address in
the FAS cluster can only resolve to a single application router domain. Otherwise, a remote
application could perform a reverse lookup on one of the IP addresses, and resolve it to a
domain which FAS associates with a different application; in that case, any SIP message sent by
the remote application would go to an application which it was not intended for.
See the Fusion Application Server Architecture Guide for more information on the Application
Router Registry and Application Router selection.
1. Launch the Management Console - see the Starting the Management Console section.
4. From the menu on the left, expand Sip and select Application Routers:
7. If you want this to be the default Application Router, select the Is Default checkbox. Only
one AR can be the default.
8. Click Save.
9. Select the Application Router you have just added, and the Controlled Domains tab below.
11. Enter the Controlled Domain to which the AR will apply, and click Save.
FAS will route SIP to Application Routers according to the domain in the Request URI of the
INVITE, so the Controlled Domain should be an IP address or the domain part of a SIP address.
12. If your new application router is not the default, you must specify which application should
use this application router. Select the Application Artefacts tab and click Add:
2. Type:
/profile=ha/subsystem=sip/app-router=
3. Run:
The response illustrates an application router with a single controlled domain (192.168.1.100)
and a single artifact (test.ear), and set as the default application router.
If a resource you are trying to add already exists, or a resource which you are trying to remove
does not, you will receive an error response:
{
"outcome" => "failed",
"failure-description" => {"domain-failure-description" => "JBAS014803:
Duplicate resource [
(\"profile\" => \"ha\"),
(\"subsystem\" => \"sip\"),
(\"app-router\" => \"my-app-router\"),
(\"controlled-domain\" => \"my-controlled-domain\")
Configuring Datasources
Some applications (for instance, some of the Fusion Client SDK samples) that you can run on
FAS require the use of a database.
The standard way to access a database is by using a datasource. To create a datasource, you
need to:
A JDBC-4 compliant JDBC driver file must be deployed using the Management Console:
http://dev.mysql.com/downloads/connector/j/
http://www.oracle.com/technetwork/database/enterprise-edition/jdbc-112010-090769.html
The driver file must be available on the machine that you are accessing the Management
Console from, as the Browse function can only access the local file system.
2. Launch the Management Console - see the Starting the Management Console section.
5. Click Add.
6. Select the JDBC driver JAR file which you have just downloaded.
7. Click Next.
8. Click Save.
9. Click Assign.
10. Select the groups you want to add the driver to.
In most cases, this will be main-server-group, but there may be occasions when you need to
make a datasource available to one of the other groups.
2. Select the profile you want to work with from the top left menu.
3. From the menu on the left, expand Connector, and select Datasources:
5. Enter the name of the data source (e.g. TestDS), and it’s JNDI name (e.g.
java:jboss/datasources/TestDS).
6. Click Next:
8. Click Next:
10. Enter the user name and password for the database, and the security domain if needed.
12. Restart the AS (see the Starting and Stopping Server Processes section).
To configure the datasource, it must be disabled; you cannot configure an enabled datasource.
2. Select the profile you want to work with from the top left menu.
3. From the menu on the left, expand Connector, and select Datasources:
4. Select the datasource you want to configure, and if it is enabled (if there is a tick in the
Enabled column), click the Disable button, then Confirm in the Modify Datasource dialog:
iii. From the Transaction Isolation drop down list, select a value appropriate to your
application:
i. Select the Pool tab in the lower part of the main content area:
iii. Set the Min Pool Size and Max Pool Size.
2. Run:
where <host name> is the host (usually either localhost or master-<ip address> ), <server
process> is the name of the AS or other server process (e.g. appserver-localhost), and
<datasource name> is the name of the datasource you want to test.
/host=master-192.168.1.234/server=192.168.1.234-1/subsystem=datasources/data-
source=MyDS:test-connection-in-pool()
{
"outcome" => "success",
"result" => [true]
}
Managing Licenses
Some applications that you install onto Fusion Application Server might be supplied with a
usage license. These licenses must be applied using the License Server, which is installed on
the master node. When installed, the configuration option for the License Server is added to the
Management Console. You can also manage licenses using the Command-Line Interface (CLI).
As well as details about what is licensed, and how many of them (or how much of it) are allowed
by the license, each license has a start date and an end date. The product is only licensed
between those dates.
You can use the License Server to add and remove product licenses, and to view details of any
active or inactive licenses. CBA Support supplies licenses as XML files. You should save the
license file to a location that the Management Console can access.
When a licensed application is first installed, the licensing state will be ERROR. You must apply
the required license to correct this.
SNMP Traps
The License Server will raise SNMP traps when one of the licenses that it is managing changes
state. The state of a license can be:
State Description
The current date is before the start of the license. The license will
NOT_STARTED
become ACTIVE on the date the license starts.
See the Configuring SNMP section for details on how to receive these traps.
1. Launch the Management Console - see the Starting the Management Console section.
4. In the left hand menu, expand License Management and select Licenses:
Licenses that are currently active are displayed in the Active Licenses list; otherwise, they are
displayed in the Inactive Licenses list.
1. Obtain a license from CBA Support, and ensure that it is available on the machine you are
accessing the Management Console from.
2. Launch the Management Console - see the Starting the Management Console section.
5. In the left hand menu, expand License Management and select Licenses:
7. Click Browse, navigate to the directory containing the license file, select it, and click Add.
If the license is active, it is applied to your product and listed in the Active Licenses
table
8. Restart the AS which is hosting the application to which the license is being applied (see the
Starting and Stopping Server Processes section).
1. Launch the Management Console - see the Starting the Management Console section.
4. In the left hand menu, expand License Management and select Licenses:
2. Run:
/profile=management/subsystem=license-server:read-resources
The returned details contain the name of the host (master-192.168.1.234 in the example above,
and <host> in the following commands) and server process (192.168.1.234-management
above, and <server process> in the following commands) that the License Server is running
on. You will need these for other operations.
To add a license:
/host=<host>/server=<server process>/subsystem=license-server:add-license(path=
<path to license file>)
/host=<host>/server=<server process>/subsystem=license-server:read-
resource(recursive=true,include-runtime=true)
which will return information including the product name and the license name:
{
"outcome" => "success",
"result" => {
"host" => "master-192.168.1.234",
"server" => "192.168.1.234-management",
"product" => {"SomeProduct" => {
"active-license" => "33322a55-0f39-4216-bb72-17b369ab9990",
"loaded-license" => {"33322a55-0f39-4216-bb72-17b369ab9990" => {
"activated" => "20/02/2013 12:00 AM",
"customer-id" => "Internal",
"expires" => "05/02/2014 12:00 AM",
"counted-feature" => {"users" => {
"allocated" => "0",
"allowed" => "1000",
"display-name" => "Maximum number of users"
The important things are the product name (SomeProduct above, and <product name> in the
following commands) and the license name (33322a55-0f39-4216-bb72-17b369ab9990 above,
and <license id> in the following commands), which are needed for other commands.
/host=<host>/server=<server process>/subsystem=license-server:read-children-
resources(child-type=product)
{
"outcome" => "success",
"result" => {"SomeProduct" => {"loaded-license" => {"33322a55-0f39-4216-bb72-
17b369ab9990" => undefined}}}
}
/host=<host>/server=<server process>/subsystem=license-server/product=<product
name>:read-resource(recursive=true,include-runtime=true)
/host=<host>/server=<server process>/subsystem=license-server/product=<product
name>/loaded-license=<license id>:read-resource(recursive=true,include-
runtime=true)
To remove a license:
By default, ASs connect to the License Server on the local Domain Host Controller. If you have a
deployment containing more than one cluster, you might want to control all of your licenses from
a single License Server, which means that ASs in the other clusters will need to connect to the
License Server on a Domain Host Controller other than the local one. This can be done either
using the Management Console or the CLI. Each procedure is described below.
1. Launch the Management Console for the domain which needs to connect to a different
Domain Host Controller for licensing - see the Starting the Management Console section.
4. From the menu on the left, expand Subsytems and License Client, and select License
Server:
6. Click Save.
7. Restart the AS on the master node for the changes to take effect (see the Starting and
Stopping Server Processes section).
8. Repeat the procedure for each other domain which needs to connect to a different Domain
Host Controller for licensing.
2. Run:
/profile=ha/subsystem=license-client:write-attribute(name=license-server-url,value=
<new license server URL>)
{
"outcome" => "success",
"result" => undefined,
"server-groups" => {"main-server-group" => {"host" => {"<master name>" => {"
<server name>" => {"response" => {
"outcome" => "success",
"response-headers" => {
"operation-requires-restart" => true,
"process-state" => "restart-required"
}
}}}}}}
4. Repeat the procedure for every other domain which needs to connect to a different Domain
Host Controller for licensing.
For example, an application that monitors changes to a critical resource might raise an
asymmetric trap when the resource changes. Similarly, you might have an application that
monitors the availability of specific resources (such as the memory, or some other limited
resource). When that resource runs low, the application might set a warning state and send a
Set trap. Once that resource returns to acceptable levels, it sends a Clear trap.
For details of the architecture of the SNMP subsystem, see the Fusion Application Server
Architecture Guide.
If you need to change the configuration details for the SNMP Agent after installing FAS, you can
do so by modifying the attributes defined in the snmp_subsystem within the management profile
using the JBoss CLI, and then restarting the SNMP service.
You can optionally configure the SNMP Agent to send notifications to multiple SNMP trap
receivers, each with its own SNMP protocol version, IP address, and port. The installer can only
configure a single receiver, but you can add extra receivers to the configuration after installation
by adding trap-target entries for the snmp_subsystem using the JBoss CLI, and then restarting
the SNMP service (see the Configuring SNMP Trap Targets section).
The Fusion Application Server platform itself can also raise SNMP notifications. These are
detailed in the Fusion Application Server SNMP Traps section.
An SNMP Agent runs as part of the Host Controller process on each FAS node. The SNMP
Agent sends the event data to an SNMP client of your choice. An SNMP client is not supplied
with Fusion Application Server: you must install your own client and supply the IP address of
the server on which the client is running when you install FAS and SNMP Agent.
If you need to change the configuration details for the SNMP Agent, such as the location of the
SNMP client or the transport protocol used, or if you need to add additional SNMP trap receivers,
you can do so using the JBoss CLI.
/profile=management/subsystem=snmp\_subsystem/:write-attribute(name=<attribute-
name>,value=<new-value>)
Attribute Details
port The default port is 8161, but can be changed to any valid port number.
The protocol used for sending the traps. Can be udp or tcp. If the protocol is
protocol
not specified, udp is used.
The polling period in seconds which the SNMP Agent uses to check for
poll‑period changes to JMX attributes. When it detects a change, it sends a symmetric
trap.
For example, to change the port used to 1061, you would use the following command:
/profile=management/subsystem=snmp_subsystem/:write-attribute(name=port,value=1061)
If you make any changes to the SNMP options, you must restart the SNMP service:
/profile=management/subsystem=snmp\_subsystem/:restart-snmp
You can also change the security options for SNMP - see the Configuring SNMP Trap Security
section.
To add an address for receiving traps, you add an SNMP trap target:
/profile=management/subsystem=snmp\_subsystem/trap-target=<target
name>/:add(protocol=<snmp protocol>,ip=<target ip>,port=<target port>)
where
<target name> is the ID of the trap target (a name for identification purposes)
<snmp protocol> is the SNMP protocol to use for this target. This must be one of
SNMPv2c
SNMPv3
<target port> is the port number which the trap target is listening on.
For example, to add a target with an ID of local, you might use a command like:
/profile=management/subsystem=snmp\_subsystem/trap-
target=local/:add(protocol=SNMPv2c,ip=127.0.0.1,port=1062)
The properties for each trap target can be changed using a command that specifies the target-
name:
/profile=management/subsystem=snmp\_subsystem/trap-target=local/:write-
attribute(name=port,value=1063)
If any changes are made to the SNMP trap target options, restart the SNMP service:
/profile=management/subsystem=snmp\_subsystem/:restart-snmp
Use an SNMP client that implements the ALARM-MIB file. You can download the file from a site
such as http://www.simpleweb.org/ietf/mibs/. You must then import this file, along with any MIB
files supplied with applications that you will deploy and which will raise traps, into your SNMP
client tool.
For the Fusion Application Server traps, you must import the following MIB files into your
SNMP client:
AS-PLATFORM.MIB
AS-LICENSING.MIB
There are a number of SNMP traps that might be raised when significant events occur within the
FAS cluster. Each of the following SNMP traps for FAS are symmetric; this means that each trap
contains Set when an issue is detected, or Clear when the issue is resolved:
When the issue is resolved, the associated Clear trap is raised; for example, if the
platformSetServerGroupDown trap was raised, the platformClearServerGroupDown trap is
raised when at least one server in the server group starts, signifying that the issue is resolved.
© 2023 CBA | All Rights Reserved | Unauthorized use prohibited. Page 100
There is also an asymmetric trap, platformAbnormalServerShutdown. This trap is raised every
time an AS or LB shuts down unexpectedly. By default, when an unexpected shutdown is
detected the Host Controller will restart that server. This trap ensures that administrators are
alerted to multiple restarts that might affect service, so that they can investigate the issue.
If FAS is running a product which requires a license, the following traps may be raised as the
license changes state:
● NOT_STARTED
asLicensingSetState
● EXPIRED
● EXPIRING_SOON
The content of these traps includes the Resource ID and the State. The Resource ID encodes
information about the product whose license has changed state: the server process (which is
always management), the product ID, and the license ID.
Example Scenarios
If all of the ASs in a server group go down, no traffic can be processed for that server group,
FAS raises the platformSetServerGroupDown trap.
If the management server process on the Domain Host Controller goes down, the licensing
subsystem becomes unavailable, so FAS raises the platformSetServerConnection trap. It
might also raise the platformSetServerState, as the server state changes from the running
state.
If a slave Host Controller loses connection to the Domain Host Controller, the configuration
on that might become stale, so FAS raises the platformSetSlaveDomainConnectionDown
trap.
© 2023 CBA | All Rights Reserved | Unauthorized use prohibited. Page 101
If a slave Host Controller reinstates a connection to the Domain Host Controller, FAS raises
the platformSetServerState trap (restart required state).
The resource ID identifies a FAS resource. It consists of a prefix which identifies FAS itself,
followed by a single digit which identifies either the Host Controller itself, or one of two tables; if it
is a table, it is followed by an index identifying the member of that table.
All the table and scalar OIDs for the FAS trap resources start with 1.3.6.1.4.1.7377.100:
Resource ID Resource
For the tables, the indexes are keys consisting of an encoded string (containing the server
process name for the server process table, or the server group name for the server group table).
The encoded string that makes up the index has a number representing the number of
characters in the string, followed by the ASCII character numbers that make up the string.
For example, for a server process named Hello, the resource ID would be:
1.3.6.1.4.1.7377.100.1.5.72.101.108.108.111
where:
72 (ASCII H)
101 (e)
108 (l)
108 (l)
111 (o)
© 2023 CBA | All Rights Reserved | Unauthorized use prohibited. Page 102
Traps Raised on FAS Startup
When a FAS cluster is first started, a number of traps are raised. This is because the system has
no history of traps raised, so the status of each node is tested. If the status is fine, a Clear trap
will be raised, regardless of any previous state. Therefore, on start-up, FAS will raise at least the
platformClearNodesNotRegisteredWithLoadbalancer and platformClearServerGroupDown traps.
As the nodes in a FAS cluster start in an undefined order, it is likely that it will raise some Set
traps, closely followed by the associated Clear traps.
By default, where applications raise SNMP traps, SNMPv2 traps are generated. You can
optionally change this to SNMPv3 traps on installation; these traps can be secured, but are
insecure by default. This section describes how SNMPv3 traps can be secured.
You can also restrict access to SNMP managed objects for any SNMP protocol version. This is
done using the View Access Control Model (VACM). This is described in the SNMP View Access
Control section.
SNMP security levels and users are defined as properties of the snmp_subsystem, and can be
configured using the CLI. To get a list of all the properties in the SNMP subsystem, use:
/profile=management/subsystem=snmp\_subsystem/:read-resource(recursive=true)
All of the values starting snmp4j.agent.config are related to SNMPv3 security; there are a great
many of them, and only some of these options are discussed in this section.
/profile=management/subsystem=snmp\_subsystem/property=<property name>/:write-
attribute(name=value,value=<property value>)
After any change to the SNMP subsystem or properties, restart the SNMP service:
/profile=management/subsystem=snmp\_subsystem/:restart-snmp
© 2023 CBA | All Rights Reserved | Unauthorized use prohibited. Page 103
using specific authentication and encryption algorithms:
Other values in the SNMP subsystem may be changed. For instance, to change the SNMPv1
read access to unrestricted, use:
/profile=management/subsystem=snmp\_subsystem/property=snmp4j.agent.cfg.value.1.3.6
.1.6.3.16.1.4.1.0.1/:write-attribute(name=value,value={s}unrestrictedReadView)
The following properties control which security level and user the SNMPv3 messages use:
snmp4j.agent.cfg.value.1.3.6.1.6.3.12.1.3.1.2.2
snmp4j.agent.cfg.value.1.3.6.1.6.3.12.1.3.1.2.3
/profile=management/subsystem=snmp\_subsystem/property=snmp4j.agent.cfg.value.1.3.6
.1.6.3.12.1.3.1.2.2/:write-attribute(name=value,value=<user>)
© 2023 CBA | All Rights Reserved | Unauthorized use prohibited. Page 104
/profile=management/subsystem=snmp\_subsystem/property=snmp4j.agent.cfg.value.1.3.6
.1.6.3.12.1.3.1.2.3/:write-attribute(name=value,value=<level>)
After making changes to the SNMP subsystem properties, restart the SNMP service - see the
Configuring SNMP Trap Security section.
For every SNMP Agent that an NMS SNMP management client will be receiving traps from, the
management client will need to perform an SNMP GET on the
snmpFrameworkMib.snmpFrameworkMIBObjects.snmpEngine.snmpEngineID
(.1.3.6.1.6.3.10.2.1.1.0) for that SNMP Agent. This engineID will be used to set up the USM user
for the management client.
For every SNMP Agent, the management client will need a USM entry containing the following:
The details of this configuration will depend on the SNMP client being used. The following
configuration has been tested with net-snmp, using the snmptrapd tool (set up your own client
with the equivalent settings in the way that your client expects).
© 2023 CBA | All Rights Reserved | Unauthorized use prohibited. Page 105
where <SHADESAuthPassword>, <SHAAuthPassword>, and <SHADESPrivPassword> should be
replaced by the real passwords set in the SNMP subsystem configuration, and <engineID> is
the value returned by the SNMP GET described above.
You can restrict access to SNMP managed objects for any SNMP protocol version. This is done
using the View Access Control Model (VACM).
The index is made up of the integer representing the security model, the length of the string
representing the security name, and the security name itself, for example:
3.5.’unsec’
for a security model of 3 and the five character security name unsec.
1 - SNMPv1
2 - SNMPv2
The security name is the community string for SNMPv1 or SNMPv2, or the USM user name for
SNMPv3 (i.e. SHADES, SHA, or unsec - (see the SNMP Security Levels and Users section).
For instance, these entries map the SHADES user (using the USM security model) to the
v3group:
© 2023 CBA | All Rights Reserved | Unauthorized use prohibited. Page 106
"snmp4j.agent.cfg.value.1.3.6.1.6.3.16.1.2.1.1.0" => {"value" => {s}v3group"}:
...
v1v2cgroup
v3group
The default access rights for groups are defined by another table (at
snmp4j.agent.cfg.oid.1.3.6.1.6.3.16.1.4.1). The indexes into this table (at
snmp4j.agent.cfg.index.1.3.6.1.6.3.16.1.4.1.0, etc.) contain a group name, a context prefix, a
security model, and a security level. For example:
7.’v3group’.0.3.1
means a 7 character group name (which is v3group), a zero length context string (context strings
are not currently used, so all are 0), the security model is 3 (USM), and the security level is 1
(noAuthNoPriv).
Three of the values associated with each index contain the access levels for read, write, and
notify access for each group:
.1={s}unrestrictedReadView
.2={s}unrestrictedWriteView
.3={s}unrestrictedNotifyView
You can either set these entries to the value above, or leave them blank to prevent that particular
access to the managed object.
© 2023 CBA | All Rights Reserved | Unauthorized use prohibited. Page 107
Thus the entries:
define the v3group as having unrestricted access for read, write, and notify, while:
defines the v1v2cgroup as having unrestricted write access, but no access for read or notify.
For each entry in the access table, set the appropriate read, write, and notify views. For
example, if you want to allow all groups to be able to raise notifications, but only v3group with
USM, authPrivsecurity, to allow reads and writes, the following configuration would achieve it:
© 2023 CBA | All Rights Reserved | Unauthorized use prohibited. Page 108
"snmp4j.agent.cfg.value.1.3.6.1.6.3.16.1.4.1.1.1" => {"value" =>
{s}unrestrictedReadView"}:
"snmp4j.agent.cfg.value.1.3.6.1.6.3.16.1.4.1.1.2" => {"value" =>
{s}unrestrictedWri"teView"}:
"snmp4j.agent.cfg.value.1.3.6.1.6.3.16.1.4.1.1.3" => {"value" =>
{s}unrestrictedNotifyView"}:
"snmp4j.agent.cfg.value.1.3.6.1.6.3.16.1.4.1.1.4" => {"value" => {i}4"}:
"snmp4j.agent.cfg.value.1.3.6.1.6.3.16.1.4.1.1.5" => {"value" => {i}1"}:
"snmp4j.agent.cfg.index.1.3.6.1.6.3.16.1.4.1.2" => {"value" =>
{o}10.'v1v2cgroup'.0.1.1"}:
"snmp4j.agent.cfg.value.1.3.6.1.6.3.16.1.4.1.2.0" => {"value" => {i}1"}:
"snmp4j.agent.cfg.value.1.3.6.1.6.3.16.1.4.1.2.1" => {"value" => {s}"}:
"snmp4j.agent.cfg.value.1.3.6.1.6.3.16.1.4.1.2.2" => {"value" => {s}"}:
"snmp4j.agent.cfg.value.1.3.6.1.6.3.16.1.4.1.2.3" => {"value" =>
{s}unrestrictedNotifyView"}:
"snmp4j.agent.cfg.value.1.3.6.1.6.3.16.1.4.1.2.4" => {"value" => {i}4"}:
"snmp4j.agent.cfg.value.1.3.6.1.6.3.16.1.4.1.2.5" => {"value" => {i}1"}:
"snmp4j.agent.cfg.index.1.3.6.1.6.3.16.1.4.1.3" => {"value" =>
{o}7.'v3group'.0.3.2"}:
"snmp4j.agent.cfg.value.1.3.6.1.6.3.16.1.4.1.3.0" => {"value" => {i}1"}:
"snmp4j.agent.cfg.value.1.3.6.1.6.3.16.1.4.1.3.1" => {"value" => {s}"}:
"snmp4j.agent.cfg.value.1.3.6.1.6.3.16.1.4.1.3.2" => {"value" => {s}"}:
"snmp4j.agent.cfg.value.1.3.6.1.6.3.16.1.4.1.3.3" => {"value" =>
{s}unrestrictedNotifyView"}:
"snmp4j.agent.cfg.value.1.3.6.1.6.3.16.1.4.1.3.4" => {"value" => {i}4"}:
"snmp4j.agent.cfg.value.1.3.6.1.6.3.16.1.4.1.3.5" => {"value" => {i}1"}:
"snmp4j.agent.cfg.index.1.3.6.1.6.3.16.1.4.1.4" => {"value" =>
{o}7.'v3group'.0.3.1"}:
"snmp4j.agent.cfg.value.1.3.6.1.6.3.16.1.4.1.4.0" => {"value" => {i}1"}:
"snmp4j.agent.cfg.value.1.3.6.1.6.3.16.1.4.1.4.1" => {"value" => {s}"}:
"snmp4j.agent.cfg.value.1.3.6.1.6.3.16.1.4.1.4.2" => {"value" => {s}"}:
"snmp4j.agent.cfg.value.1.3.6.1.6.3.16.1.4.1.4.3" => {"value" =>
{s}unrestrictedNotifyView"}:
"snmp4j.agent.cfg.value.1.3.6.1.6.3.16.1.4.1.4.4" => {"value" => {i}4"}:
"snmp4j.agent.cfg.value.1.3.6.1.6.3.16.1.4.1.4.5" => {"value" => {i}1"}:
"snmp4j.agent.cfg.index.1.3.6.1.6.3.16.1.4.1.5" => {"value" =>
{o}7.'v3group'.0.4.1"}:
"snmp4j.agent.cfg.value.1.3.6.1.6.3.16.1.4.1.5.0" => {"value" => {i}1"}:
"snmp4j.agent.cfg.value.1.3.6.1.6.3.16.1.4.1.5.1" => {"value" => {s}"}:
"snmp4j.agent.cfg.value.1.3.6.1.6.3.16.1.4.1.5.2" => {"value" => {s}"}:
"snmp4j.agent.cfg.value.1.3.6.1.6.3.16.1.4.1.5.3" => {"value" =>
{s}unrestrictedNotifyView"}:
"snmp4j.agent.cfg.value.1.3.6.1.6.3.16.1.4.1.5.4" => {"value" => {i}4"}:
"snmp4j.agent.cfg.value.1.3.6.1.6.3.16.1.4.1.5.5" => {"value" => {i}1"}:
© 2023 CBA | All Rights Reserved | Unauthorized use prohibited. Page 109
Configuring Logging
There are three main Log4J loggers configured for Fusion Application Server:
Root logger
The SIP and HTTP loggers each have their own log category. If you need a different logging
level for those types of log, you should change the log level for the appropriate category. There
are a number of other categories that each have their own logging level, but these do not
normally need to be changed.
Increasing logging levels will affect performance; we recommend that you change the logging
level back to the default as soon as you have resolved your problem.
For any packages that do not have a specific logger category defined with a logging level, the
level set for the root logger is used.
By default, SIP and HTTP logging is size-based, which means that log files rotate when the log
file reaches a specified size (which is 100 MB by default). When the active log reaches the
maximum size, FAS backs it up with a suffix of .1 and creates a new log file. When the new log
file reaches the maximum size, the log with a suffix .1 changes to have a suffix of .2, and the
most recent log becomes the backup with a suffix of .1. The log files rotate in this way up to the
specified maximum backup index (which is 5 by default), after which FAS deletes older logs.
You can change the logging from rotating when the log file reaches a specified size to rotating
after a specified time period, for example each day (see the Changing to Periodic Logging
section).
The SIP call logger writes log items to the calls.log file, which is in the <install
dir>/domain/servers/<server process name>/log directory, where <server process name>
is the name of the AS or LB server process.
© 2023 CBA | All Rights Reserved | Unauthorized use prohibited. Page 110
SIP call logging is size-based; log files rotate when they reaches a specified size, which by
default is 100 MB; when the number of backup files reaches the maximum number (5 by default)
the oldest is deleted. You can edit these values as described in the To Configure the Log Files for
SIP Call Logging section.
With call logging enabled, the ASs produce a SIP message log entry for each SIP message
handled. The log entries include the following information:
Timestamp
Call-ID
CSeq header
From header
To header
SIP call logging is set to INFO level by default. If you need to change this, do so at the category-
level using the sip.calls category. Call logging is extremely useful for tracing faults in a system,
and there is only a small negative impact from having it enabled. However, if required, call
logging can be turned off by changing the logging level (see the To Change the SIP Call Logging
Level section ).
3. Select the profile from the top left menu (you can log SIP calls on either the lb or ha
profiles).
4. From the menu on the left, expand Core and select Logging.
7. Select SIP_CALLS_FILE:
© 2023 CBA | All Rights Reserved | Unauthorized use prohibited. Page 111
8. Click Edit.
9. To change the maximum size of the log files, edit the Rotate Size value.
10. To change the number of backup files that are stored, edit the Max Backup Index value.
Important: There is a logging level defined for the handler, but we recommend that this is not
changed here, but at the category level, as described in the To Change the SIP Call Logging
Level section.
3. Select the profile from the top left menu (you can log SIP calls on either the lb or ha
profiles).
4. From the menu on the left, expand Core and select Logging.
© 2023 CBA | All Rights Reserved | Unauthorized use prohibited. Page 112
5. Select the Log Categories navigation tab.
7. Click Edit.
8. From the Log Level drop down list, select the required logging level.
9. Click Save.
LBs have an additional log handler that logs HTTP and Web socket traffic passing through the
LB. The HTTP logger writes log items to the http.log file, which is in the <install
dir>/domain/servers/<lb name>/log directory, where <lb name> is the name of the LB server
process.
HTTP logging is size-based; log files rotate when the log file reaches a specified size, which is
100 MB by default; when the number of backup files reaches the maximum number (5 by
default) the oldest is deleted. You can edit these values (see the To Configure the Log Files for
SIP Call Logging section), selecting the HTTP_FILE handler entry from the lb profile.
© 2023 CBA | All Rights Reserved | Unauthorized use prohibited. Page 113
HTTP logging is set to INFO level by default. If you need to change it, do so in the same way as
described in the To Change the SIP Call Logging Level section, selecting the
com.alicecallsbob.lb.http_logs category from the lb profile.
If there is no specific log handler for a category, log messages are written to the server.log file at
<install dir>/domain/servers/<server process name>/log directory; there is one server.log
file for each server process.
If there is no category-level logging for a package, it logs messages at the level of the root
logger. To change this:
1. Launch the Management Console - see the Starting the Management Console section.
3. Select the profile you want to work with from the top left menu. There is an independent root
logger for each profile, including the management profile. To change the root logging level
for ASs, select the ha profile; to change the root logging level for LBs, select lb.
4. From the menu on the left, expand Core and select Logging.
© 2023 CBA | All Rights Reserved | Unauthorized use prohibited. Page 114
6. Click Edit.
7. From the Log Level drop down, select the new logging level.
8. Click Save.
9. Restart the AS (see the Starting and Stopping Server Processes section) for the changes to
take effect.
To define a specific level of logging for some messages, create a logging category for those
messages. For example, if you do not want a particular type of SIP message to be logged (ACK
messages, for instance), you can create a logging category for that message type
(sip.calls.ACK) and set the level lower than that of its parent category (sip.calls in this case). You
do not need to create a category for every message type; those without a specific category log
with the level of their parent category.
© 2023 CBA | All Rights Reserved | Unauthorized use prohibited. Page 115
1. Launch the Management Console - see the Starting the Management Console section.
3. Select the profile from the top left menu (e.g. lb or ha).
4. From the menu on the left, expand Core and select Logging.
For SIP call message types, the name of each category must start with sip.calls and
end with the message type in upper case letters. For instance, sip.calls.BYE creates a
category for BYE messages.
For informational messages from the FAS Java code, the name of the category should
be that of the Java package or class which is logging the message. There are some
existing categories defined in this way, but you should not need to create one unless
asked to do so by CBA Support.
8. Select the logging level from the Log Level drop down list, e.g. DEBUG.
9. Click Save.
© 2023 CBA | All Rights Reserved | Unauthorized use prohibited. Page 116
By default, the log files rotate when they reach a specified size. You can change this to have
them rotate after a specified time period (for example each day).
After changing to periodic logging, you should restart the AS (see the Starting and Stopping
Server Processes section).
4. From the menu on the left, expand Core and select Logging.
7. Click Add to bring up the Add Periodic Rotating File Handlers dialog:
© 2023 CBA | All Rights Reserved | Unauthorized use prohibited. Page 117
8. Enter a name for the new logging handler (this can be anything, though it should be unique).
9. In the File Path, enter the name of the file to save the logs in.
10. In the Suffix field, enter a suffix for backed-up files. This should be a date-time format string
of the type used by the java.text.SimpleDateFormat class (see
http://docs.oracle.com/javase/7/docs/api/index.html?java/text/SimpleDateFormat.html for
details about this class). It should be suitable for the time period you want to use: for
example, to create daily logs, use the suffix yyyy-MM-dd.
© 2023 CBA | All Rights Reserved | Unauthorized use prohibited. Page 118
13. Select both the Append and Auto Flush checkboxes.
© 2023 CBA | All Rights Reserved | Unauthorized use prohibited. Page 119
4. Select the periodic logging handler from the Name drop down list, and click Save.
The default size based logging handler will still be active. To remove it, select the FILE handler
and click Remove.
© 2023 CBA | All Rights Reserved | Unauthorized use prohibited. Page 120
5. Select the periodic logging handler and click Save.
The default size based logging handler will still be active. To remove it, select the
SIP_CALLS_FILE handler in the table, and click Remove.
SNMP Logging
The SNMP Agent in each Host Controller also produces its own log. When it receives an alarm
or event from a FAS server process or application, the SNMP Agent not only sends an SNMP
trap, but also writes it to the alert.log. The log file is in the <install dir>/domain/log directory.
As with the other Fusion Application Server logs, SNMP Agent logging is size-based.
Licensing Logging
The License Server which runs in the Management server process also produces its own log file.
Every 60 seconds, for each licensed product, it will log the product name, the name of the
licensed feature, the number of licenses used and available, and the peak number of used
licenses in the last 24 hours:
© 2023 CBA | All Rights Reserved | Unauthorized use prohibited. Page 121
by editing the LICENSING_FILE logger in the Management Console.
To help you identify any issues you may experience, FAS provides a script to capture call logs
and statistics for a specific period. The logcapture.sh script is installed in the <install
dir>/bin directory, and can be used to capture the following information:
FASconfiguration
vmstat output
Java memory
Thread dumps
The logging script runs until it is stopped, allowing you to reproduce any problem scenarios
during this time. When you stop the logging script, the information you require is captured in a
series of log files, which are archived into a .tar file:
You can define which information is captured by adding a selection of the following arguments
when you run the script:
Option Description
-f, ‑‑tar‑file The name of the output .tar file. This option is mandatory.
-m, ‑‑memory Includes a heap memory dump (output of jmap) for all processes
-n,
Prevents the output directory from being cleaned up
‑‑do‑not‑clean
-p,
Captures network traffic in a .pcap file
‑‑capture‑pcap
© 2023 CBA | All Rights Reserved | Unauthorized use prohibited. Page 122
-v, ‑‑vmstat Includes vmstat output
1. Set the logging levels appropriately (see the Configuring the Root Logging Level section).
./logcapture.sh -a -f example.tar
\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*
\* Capturing files to directory logcapture.remp-LGR \*
\* Press <CTL>-C when ready to tar up captured files \*
\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*
Note: The final three characters of the directory name (LGR in the above example) will change
each time the script is run, as this is a temporary directory.
4. Press Ctrl-C to stop the logging script. The output files will be collected in example.tar,
which (for the -a option used above) has the structure:
./vmstat.out
./tcpdump.pcap
./FAS/
./FAS/log/
./FAS/log/alert.log
./FAS/log/process-controller.log
© 2023 CBA | All Rights Reserved | Unauthorized use prohibited. Page 123
./FAS/log/host-controller.log
./FAS/configuration/
./FAS/configuration/host-master.xml
./FAS/configuration/mgmt-users.properties
./FAS/configuration/application-roles.properties
./FAS/configuration/fas.properties
./FAS/configuration/host.xml
./FAS/configuration/domain.xml
./FAS/configuration/host-slave.xml
./FAS/configuration/logging.properties
./FAS/configuration/application-users.properties
./FAS/servers/
./FAS/servers/loadbalancer-acb-fas-1/
./FAS/servers/loadbalancer-acb-fas-1/log/
./FAS/servers/loadbalancer-acb-fas-1/log/server.log
./FAS/servers/loadbalancer-acb-fas-1/log/boot.log
./FAS/servers/loadbalancer-acb-fas-1/log/http.log
./FAS/servers/loadbalancer-acb-fas-1/log/calls.log
./FAS/servers/loadbalancer-acb-fas-1/heap.bin
./FAS/servers/loadbalancer-acb-fas-1/thread.dump
./FAS/servers/management/
./FAS/servers/management/log/
./FAS/servers/management/log/server.log
© 2023 CBA | All Rights Reserved | Unauthorized use prohibited. Page 124
./FAS/servers/management/log/boot.log
./FAS/servers/management/heap.bin
./FAS/servers/management/thread.dump
./FAS/servers/appserver-acb-fas-2/
./FAS/servers/appserver-acb-fas-2/log/
./FAS/servers/appserver-acb-fas-2/log/server.log
./FAS/servers/appserver-acb-fas-2/log/boot.log
./FAS/servers/appserver-acb-fas-2/log/calls.log
./FAS/servers/appserver-acb-fas-2/heap.bin
./FAS/servers/appserver-acb-fas-2/thread.dump
./FAS/servers/appserver-acb-fas-1/
./FAS/servers/appserver-acb-fas-1/log/
./FAS/servers/appserver-acb-fas-1/log/server.log
./FAS/servers/appserver-acb-fas-1/log/boot.log
./FAS/servers/appserver-acb-fas-1/log/calls.log
./FAS/servers/appserver-acb-fas-1/heap.bin
./FAS/servers/appserver-acb-fas-1/thread.dump
If at any point you want to examine the call logs in detail (for example if there is a specific issue
that you want to investigate, or want CBA Support to investigate), you can create a log archive
by running the log-archiver.sh script, which you can find in the <install dir>/bin directory.
The script takes no arguments:
./log-archiver.sh
© 2023 CBA | All Rights Reserved | Unauthorized use prohibited. Page 125
messages.xml
Contains a collection of all of the message.log files found in the AS’s log directory.
processingDecisions.log
Contains entries from the AS’s server.log file that contain a message ID and with a logging level
of INFO or higher.
server.log files for all the server processes (AS, LB, and Management Server) on the node.
call.log files for the AS and LB server processes running on the host that the file was created
on.
The archive contains most of the logs useful for troubleshooting, and it is more convenient to
download the archive than all the individual log files.
Note: In a multi-box setup, to collect the logs for the whole FAS cluster, run the log-archiver script
on each host in the cluster.
© 2023 CBA | All Rights Reserved | Unauthorized use prohibited. Page 126
Configuring Security
Access to the Management Console and the CLI is controlled using a common infrastructure. By
default, local access (that is, from the node itself) is not restricted, but remote access is restricted
by credentials (the administrator username and password) specified during installation. By
default, the same credentials are used by slave FAS nodes to communicate with the master
node.
This section does not describe Trust Management. For details of Trust Management
configuration, see the Configuring Trust Management section.
Remote access to the Management Console and the CLI is restricted by the credentials stored in
the <install dir>/domain/configuration/mgmt-users.properties file. This file consists of
one or more lines with the following format:
When installing FAS, you are asked for an administrator username and password, and the
installer adds these credentials to this file. If you want to add any further users, you must add
them manually using the add-user.sh script.
In addition to accessing the CLI and Management Console, by default the same credentials are
used by slave nodes to communicate with the master node. This is all configured automatically
on installation.
© 2023 CBA | All Rights Reserved | Unauthorized use prohibited. Page 127
To change the local user credentials, use the <install dir>/bin/change-local-admin.sh
script. This script gives you with the option to change the username and password of the
administrator; there can only be one administrator:
./change-local-admin.sh
\------------------------------------------------------------------------------
-
This utility will allow you to change the local admin username and/or password.
\------------------------------------------------------------------------------
-
First please authenticate using the current local username and password.
Username: **admin**
Password:
Authentication successful.
Would you like to change the password for 'administrator'? yes/no **yes**
New password:
Re-enter new password:
Password updated
Things which you must type are shown in this font; display from the script is shown like this. You
also need to type the password at the prompt - the script does not echo the password to the
screen.
There is an add-user.sh script provided in the <install dir>/bin directory which adds users to
either the mgmt-users.properties or the application-users.properties file. The application-
users.properties file contains users in the ApplicationRealm realm, which is available for use by
© 2023 CBA | All Rights Reserved | Unauthorized use prohibited. Page 128
applications (see the Files in the domain/configuration Directory section), but is otherwise not
used. Normally, you will want to create users in mgmt-users.properties.
<install dir>/bin/add-user.sh
Unless you have an application which uses the application realm, you can accept the default (a)
by pressing <span class="smallcaps">Enter</span> .
Management users will normally be in the ManagementRealm realm, so again you can accept
the default by pressing <span class="smallcaps">Enter</span> .
Username :
Enter the user name, such as user1, and press <span class="smallcaps">Enter</span>
Password:
Enter the password to use for the user, and press <span class="smallcaps">Enter</span>
© 2023 CBA | All Rights Reserved | Unauthorized use prohibited. Page 129
Re-enter Password
Is this new user going to be used for one AS process to connect to another AS
process e.g. slave domain controller?
If this user is to be used solely for access to the Management Console and CLI, enter no
If you are creating this user on the master node to be used by slave nodes to communicate
with the master node, type yes
To represent the user add the following to the server-identities definition <secret
value="jeGioqQA91p7SQBLdwW6SrhSeM="/>
The secret value is a Base64 encoded password hash. Make a copy of it - you will need it when
you alter the credentials on the slave nodes.
© 2023 CBA | All Rights Reserved | Unauthorized use prohibited. Page 130
To use new credentials on a slave FAS node, you must first run the procedure in the Adding a
New User section on the master node, making a note of the secret value; then edit two files on
the slave node, host.xml and fas.properties:
host.xml
<security-realm name="ManagementRealm">
<server-identities>
<secret value="YWRtaW5pc3RyYXRvcg=="/>
</server-identities>
<authentication>
<local default-user="$local" />
<properties path="mgmt-users.properties" relative-
to="jboss.domain.config.dir"/>
</authentication>
</security-realm>
3. Replace the existing value property of the <secret> element with the one you noted when
you added the user.
fas.properties
2. Change the value of the domain.controller.user property to be the username of the user you
created on the master node for this slave:
domain.controller.user=user1
© 2023 CBA | All Rights Reserved | Unauthorized use prohibited. Page 131
If you have FCSDK installed, or something which uses FCSDK, you should follow the procedure
for resetting the Administrator credentials in the FCSDK Administration Guide. Administrator
credentials are shared between FAS and FCSDK, and only the FCSDK procedure will reset them
correctly.
If you have forgotten the administrator credentials, you can reset them to the defaults by setting
a system property, which will reset the credentials on the next login attempt:
3. Start the CLI (see the Starting the CLI section) or navigate to the Management Console (see
the Starting the Management Console section), and attempt to log in .
Login is now re-enabled, and the credentials have been reset to their default values.
On installation, a default list of enabled cipher suites is configured for both HTTPS and SIPS
traffic.
For HTTPS traffic on ASs and the Management Server, the list of enabled cipher suites is
specified in the fas.properties file, in a property called openssl.cipher.suites, which has a default
value of:
ALL:!SSLv2:!aNULL:!ADH:!eNULL:!LOW:!EXP:RC4+RSA:+HIGH:+MEDIUM
For SIPS traffic on ASs, and both SIPS and HTTPS traffic on LBs, the list of enabled cipher
suites is specified in the fas.properties file in a property called jsse.cipher.suites, which has a
default value of:
SSL_RSA_WITH_RC4_128_MD5,SSL_RSA_WITH_RC4_128_SHA,SSL_RSA_WITH_3DES_E
DE_CBC_SHA,SSL_DHE_DSS_WITH_3DES_EDE_CBC_SHA,SSL_DHE_RSA_WITH_3DES_
© 2023 CBA | All Rights Reserved | Unauthorized use prohibited. Page 132
EDE_CBC_SHA,TLS_DHE_RSA_WITH_AES_128_CBC_SHA,TLS_DHE_DSS_WITH_AES_12
8_CBC_SHA,TLS_RSA_WITH_AES_128_CBC_SHA
You can configure these global values (for example, if you want to remove one of the cipher
suites for all server processes), by editing the values in the fas.properties file.
If you want to configure the list of enabled cipher suites for individual server processes (for
example, to enable different cipher suites for each server process type), you can do so using the
CLI (see the Command Line Interface (CLI) section). For the CLI commands needed to make
these changes, see the HTTPS section and the SIPS section.
HTTPS
For ASs and the Management Server, the list of supported HTTPS cipher suites is specified by
the cipher-suite attribute of the HTTP connector’s <ssl> element, in the web subsystem. By
default, this is set to the variable openssl.cipher.suites.
Note: JBoss ‘native’ connectors are used; the format of the list of supported cipher suites must
conform to the OpenSSL Cipher List Format. See
http://www.openssl.org/docs/apps/ciphers.html#CIPHER_LIST_FORMAT.
To specify the HTTPS cipher suites for ASs, use a command like the following, which replaces
the variable with the required list of cipher suites:
/profile=ha/subsystem=web/connector=https/ssl=configuration/:write-
attribute(name=cipher-
suite,value=ALL:\!aNULL:\!ADH:\!eNULL:\!LOW:\!EXP:RC4+RSA:+HIGH:+MEDIUM)
To change the HTTPS cipher suites for the Management Server, use a command like the
following:
/profile=management/subsystem=web/connector=https/ssl=configuration/:write-
attribute(name=cipher-
suite,value=ALL:\!aNULL:\!ADH:\!eNULL:\!LOW:\!EXP:RC4+RSA:+HIGH:+MEDIUM)
For LBs, the list of supported HTTPS cipher suites is specified in a property called
com.alicecallsbob.loadbalancer.http.ssl.cipherSuites. By default this is set to the variable
jsse.cipher.suites.
To specify the supported HTTPS cipher suites for LBs, use a command like the following:
© 2023 CBA | All Rights Reserved | Unauthorized use prohibited. Page 133
/profile=lb/subsystem=lb/property=com.alicecallsbob.loadbalancer.http.ssl.cipherSui
tes/:write-
attribute(value=TLS\_RSA\_WITH\_AES\_128\_CBC\_SHA,SSL\_RSA\_WITH\_3DES\_EDE\_CBC\_S
HA,TLS\_DH\_anon\_WITH\_AES\_128\_CBC\_SHA,SSL\_DH\_anon\_WITH\_3DES\_EDE\_CBC\_SHA
)
SIPS
For SIPS, the list of supported cipher suites is specified by a property called
gov.nist.javax.net.ssl.cipherSuites for both ASs (in the ha profile) and LBs (in the lb profile). By
default this is set to the variable jsse.cipher.suites.
To specify a list of supported SIPS cipher suites for ASs, use a command like the following,
which replaces the variable with the required list of cipher suites:
/profile=ha/subsystem=sip/property=gov.nist.javax.net.ssl.cipherSuites/:write-
attribute(value=TLS\_RSA\_WITH\_AES\_128\_CBC\_SHA,SSL\_RSA\_WITH\_3DES\_EDE\_CBC\_S
HA,TLS\_DH\_anon\_WITH\_AES\_128\_CBC\_SHA,SSL\_DH\_anon\_WITH\_3DES\_EDE\_CBC\_SHA
)
To specify the list of supported SIPS cipher suites for LBs, use a command like the following:
/profile=lb/subsystem=lb/property=gov.nist.javax.net.ssl.cipherSuites/:write-
attribute(value=TLS\_RSA\_WITH\_AES\_128\_CBC\_SHA,SSL\_RSA\_WITH\_3DES\_EDE\_CBC\_S
HA,TLS\_DH\_anon\_WITH\_AES\_128\_CBC\_SHA,SSL\_DH\_anon\_WITH\_3DES\_EDE\_CBC\_SHA
)
Older versions of Transport Layer Security, as well as versions of its predecessor, SSL, have
been found to be insecure. FAS provides scripts to enable and disable them in HTTPS traffic to
and from the FAS.
To enable them:
© 2023 CBA | All Rights Reserved | Unauthorized use prohibited. Page 134
where <admin\_user> is the admin user (see the Controlling Access to the Management
Interfaces section), and <admin\_password> is the password for that user.
Note:
You will need to restart FAS on each node after running the script, for the changes to take
effect.
© 2023 CBA | All Rights Reserved | Unauthorized use prohibited. Page 135
Configuring Trust Management
By default, Fusion Application Server is configured to use Transport Layer Security (TLS).
Using TLS enables servers to verify the identities of both the server and client through exchange
and validation of their digital certificates, as well as encrypt information exchanged between
secure servers using public key cryptography, ensuring secure, confidential communication
between two entities.
Data is secured using key pairs containing a public key and a private key. The owner encrypts
the sent data using the recipient’s public key, which can then be decrypted only with the private
key in the pair. Encryption alone provides no proof of the identity of the sender of the encrypted
information, however. Certificates address this problem by also providing a digital signature, an
electronic means of verifying a resource’s identity.
To prove its identity, a resource requests a certificate from a Certification Authority (CA). The
issued certificate is then signed with the CA’s private key, and should be added to the resource’s
identity certificate store. A certificate typically contains the following information:
Owner’s name
This certificate can then be sent to other resources to establish trust with that resource. The
receiving resource should add the CA certificate to their trust certificate store. For two-way
trusted communication, certificates should be exchanged between resources.
If both entities trust the same CA, this allows them to establish a bond of identity and trust
between them.
© 2023 CBA | All Rights Reserved | Unauthorized use prohibited. Page 136
The components within a FAS cluster should implicitly trust each other, so you should provision
all nodes within a FAS cluster with certificates signed by the same trusted CA.
The installation process provisions the servers with temporary certificates which have a CN
(Common Name) reflecting the cluster address that you specified when installing each
component; this defaults to the host’s IP address for a single box installation, but you could have
specified an FQDN. The temporary certificates all have a common signer, so each of the nodes
within the cluster can communicate over TLS with the others.
After installation, you should replace the temporary certificates with certificates that have been
signed by a third-party Certification Authority (CA) or by a SCEP server. The CN in the updated
certificates should reflect the fully-qualified DNS name of cluster. If all of the cluster components
share the same CN, it will only need one signed certificate.
As external data is sent to and from the Load Balancer nodes, the LBs need to know which
external hosts are trusted. To trust an external host, the certificate of the CA that signed the
external host’s certificate must be added to the LB’s trust certificate store, and the external host
will need to add the certificate of the CA that signed the LB’s certificate to its trust certificate
store. Any communications with that host can then be trusted.
Where your deployment has no Load Balancer node, external data is sent to your Application
Server nodes. In this case, your Application Server nodes also need a trust certificate store.
Managing Certificates
Certificates can be managed using the Management Console, and you can manage the
certificates for multiple Certificate Groups. The Management Console enables you to perform
the following functions:
replace existing identity certificates (for example, when they are about to expire, or the CN
value has changed)
© 2023 CBA | All Rights Reserved | Unauthorized use prohibited. Page 137
import trust certificates
To work with certificates, you must know the security password; the default password is changeit,
but the installer can set this to a different value.
Note: Certificates are initially created on the node hosting the Domain Host Controller, and are
then automatically copied to all the nodes in the cluster.
An identity certificate is a certificate that can be used to identify a host. The CN of these
certificates will usually contain either:
A fully-qualified name which can be resolved in DNS. This name may resolve to one or more
machines.
Identity certificates are managed in identity certificate groups. The installer creates the
following identity certificate groups:
mgmt-server-group - for the node which runs the Domain Host Controller, the Management
Console, and the License Server.
© 2023 CBA | All Rights Reserved | Unauthorized use prohibited. Page 138
main-server-group - for the Application Server nodes.
The main-server-group and main-loadbalancer-group require a certificate for each transport type
(SIPS and HTTPS) in the group, as shown in the image above. As the Domain Host Controller is
only a management interface, the mgmt-server-group only needs an HTTPS certificate.
Trust certificates are managed in trust certificate groups. By default, there is a single trust
certificate group, which can be used throughout the cluster.
When the Management Console creates certificates, it saves them in identity certificate group
and trust certificate group directories on the node hosting the Domain Host Controller; they are
automatically copied to each FAS node in the cluster, and to any new nodes added to the cluster.
Normally you will choose an existing certificate to be signed by the CA, but sometimes you may
need to generate a new certificate; see the Generating a New Identity Certificate section.
Note: Certificates can also be signed by a SCEP server. See the Configuring with Certificates
signed by a SCEP Server section.
1. Launch the Management Console - see the Starting the Management Console section.
4. In the menu on the left, expand Subsystems and Trust Management, and select ID
Certificates.
5. In the Identity Certificate Group section, select the identity certificate group that contains the
certificate that you want to be signed:
© 2023 CBA | All Rights Reserved | Unauthorized use prohibited. Page 139
6. In the Identity Certificate Group Management section, select the certificate that you want
signed, and click Generate CSR.
7. Enter the password and click Next to show the Generate CSR dialog:
© 2023 CBA | All Rights Reserved | Unauthorized use prohibited. Page 140
8. Enter the security password in the Challenge Password field.
In most cases, the DN for the existing certificate will be what you want, but if you need to change
it, the CN value in the DN should reflect that of the SIP domain; for example CN=192.168.1.234,
or CN=example.net. If you wish to add an organizationName attribute, you can enter the DN as
e.g. O=acme.com,CN=example.net.
In most cases the Subject Alternative Names for the existing certificate will be what you want, but
if you want to add entries, you can add records for each IP address (e.g. IP:172.16.1.8) or host
name (e.g. DNS:foo.bar.com) which will be used to access the machine.
11. Click Generate. A dialog showing the generated CSR will be displayed:
© 2023 CBA | All Rights Reserved | Unauthorized use prohibited. Page 141
12. Select the generated text, including the starting and ending tags (—–
BEGIN_CERTIFICATE_REQUEST—– and —–END_CERTIFICATE_REQUEST—–), copy
it, and paste it into a text editor and save the file.
The procedure for getting your certificate signed by a third-party CA depends upon the
requirements of that CA. See the guidance from the CA.
When you receive the signed certificate back from your CA, you must import it into the correct
identity certificate group:
1. Launch the Management Console - see the Starting the Management Console section.
4. In the menu on the left, expand Subsystems and Trust Management, and select ID
Certificates.
© 2023 CBA | All Rights Reserved | Unauthorized use prohibited. Page 142
5. In the Identity Certificate Group section, select the identity certificate group that contains the
certificate that has been signed:
6. Select the certificate which has been signed by the CA. This must be the same one that you
selected when you generated the CSR.
© 2023 CBA | All Rights Reserved | Unauthorized use prohibited. Page 143
9. Open the certificate you have received from the CA in a text editor, select all the contents,
including the start and end tags, copy them, and paste them into the Encoded Certificate
field.
Once the certificate is imported, the window will update to display any changed certificate details,
such as the issuer DN and the expiry date.
11. Restart each node in the cluster for the changes to take effect.
Before you can perform this procedure, you must configure FAS with the details of a server that
implements the SCEP protocol, such as an EJBCA server; see the Configuring FAS to use the
SCEP protocol section.
Normally you will choose an existing certificate to be signed by the SCEP server, but sometimes
you may need to generate a new certificate; see the Generating a New Identity Certificate
section.
1. Launch the Management Console - see the Starting the Management Console section.
4. In the menu on the left, expand Subsystems and Trust Management, and select SCEP
Configuration:
© 2023 CBA | All Rights Reserved | Unauthorized use prohibited. Page 144
5. Click Add to bring up the New SCEP Configuration dialog:
© 2023 CBA | All Rights Reserved | Unauthorized use prohibited. Page 145
Field Description
The SCEP server CGI URL. A typical value for an EJBCA server might
be:
Url
http://ejbca.example.com:8080/scepraserver/scep/pkiclient.exe
Profile The value of the SCEP profile, or identity, that you want to use
The string that will be prefixed to the CN= value when constructing the
Subject Distinguished Name in the X509 certificate. For example, if this
Subject DN Prefix field is set to C=GB,O=Cafex,OU=Test, then the resulting DN might be:
C=GB,O=Cafex,OU=Test,CN=example.com
7. Click Save.
1. Launch the Management Console - see the Starting the Management Console section.
4. In the menu on the left, expand Subsystems and Trust Management, and select ID
Certificates.
5. In the Identity Certificate Group section, select the identity certificate group that contains the
certificate that you want to be signed:
© 2023 CBA | All Rights Reserved | Unauthorized use prohibited. Page 146
6. In the Identity Certificate Group Management section, select the certificate that you want
signed, and click SCEP Sign.
This will generate the CSR, send it to the SCEP server (which will sign and return it), and import
the returned certificate into the identity certificate group directory automatically.
7. Restart each node in the cluster for the changes to take effect.
External traffic typically flows into FAS through the LBs. To allow TLS connections to the LBs
from external entities that use identity certificates signed by a CA that is not currently recognized,
a certificate from the unknown CA must be added to the trust certificate group.
1. Launch the Management Console - see the Starting the Management Console section.
4. In the menu on the left, expand Subsystems and Trust Management, and select Trust
Certificates:
© 2023 CBA | All Rights Reserved | Unauthorized use prohibited. Page 147
5. In the Trust Certificate Group section, select the trust certificate group that you want to
import the trust certificate into.
The name should preferably indicate the CA whose certificate is being imported.
© 2023 CBA | All Rights Reserved | Unauthorized use prohibited. Page 148
9. Open the certificate from the unknown CA in a text editor, select all the contents, including
the start and end tags, copy them, and paste them into the Encoded Certificate field.
11. Restart each node in the cluster for the changes to take effect.
Follow the instructions in either the Configuring with Certificates signed by a CA section or the
Configuring with Certificates signed by a SCEP Server section, choosing the mgmt-server-group
Identity Certificate Group, and the https Identity Certificate (by default, this is the only identity
certificate in this group).
To replace a certificate, follow the instructions in either the Configuring with Certificates signed
by a CA section or the Configuring with Certificates signed by a SCEP Server section, choosing
the certificate you want to replace. These instructions will obtain a new certificate (signed by
either a CA or the SCEP server), and replace the existing one with it.
1. Launch the Management Console - see the Starting the Management Console section.
4. In the menu on the left, expand Subsystems and Trust Management, and select ID
Certificates.
© 2023 CBA | All Rights Reserved | Unauthorized use prohibited. Page 149
5. In the Identity Certificate Group section, select the identity certificate group that contains the
certificate to be exported:
7. Click Export. The Management Console will ask for the certificate password.
© 2023 CBA | All Rights Reserved | Unauthorized use prohibited. Page 150
9. Copy the text, paste it into a text editor, and save the file.
You would typically remove a trust certificate to prevent TLS connections from machines that use
identity certificates signed by a specific CA that you no longer trust.
1. Launch the Management Console - see the Starting the Management Console section.
4. In the menu on the left, expand Subsystems and Trust Management, and select Trust
Certificates:
© 2023 CBA | All Rights Reserved | Unauthorized use prohibited. Page 151
5. In the Trust Certificate Group section, select the trust certificate group that contains the trust
certificate you want to remove.
6. In the Trust Certificate Management section, select the Trust Certificate you want to remove.
7. Click Remove:
8. Click Confirm.
9. Restart each host in the cluster for the changes to take effect.
© 2023 CBA | All Rights Reserved | Unauthorized use prohibited. Page 152
Generating a New Identity Certificate
1. Launch the Management Console - see the Starting the Management Console section.
4. In the menu on the left, expand Subsystems and Trust Management, and select ID
Certificates.
5. In the Identity Certificate Group section, select the identity certificate group that you want to
add a certificate to:
6. In the Identity Certificate Group Management section, click Generate Keypair to show the
Generate Keypair dialog:
© 2023 CBA | All Rights Reserved | Unauthorized use prohibited. Page 153
7. Enter a value for the Name, preferably indicating the component and transport type which
the new certificate is to be used for. For example, a certificate for SIP traffic on LBs could be
named sip-lb.
If you wished to add an organizationName attribute, you can enter the DN as e.g.
O=acme.com,CN=example.net.
9. Enter an Expiry Date, using either the date picker or by entering it manually in the form
yyyy-mm-dd.
© 2023 CBA | All Rights Reserved | Unauthorized use prohibited. Page 154
10. Enter the security Password.
11. Enter Subject Alternative Name records for each IP address (e.g. IP:172.16.1.8) or host
name (e.g. DNS:foo.bar.com) which will be used to access the machine.
The cluster IP address will be added by default, and in many cases you will need no other
entries. You can add other entries (not shown in the screenshot) by scrolling down, but in most
cases you can leave these at their default values.
The Management Console will add a new entry with the specified name to the list of certificates.
© 2023 CBA | All Rights Reserved | Unauthorized use prohibited. Page 155
Configuring SIP
The Fusion Application Server contains a SIP subsystem, which you can configure.
The attributes described in this section have not all been validated with FAS; it is therefore
recommended that you consult CBA Support before making any changes to them.
The SIP Servlet subsystem exposes many different attributes for configuration. All of the
attributes have default settings, so configuration of them is optional. These attributes can be
configured using the Management Console or the CLI.
1. Launch the Management Console - see the Starting the Management Console section.
4. From the menu on the left, expand Sip and select Sip Servlet.
© 2023 CBA | All Rights Reserved | Unauthorized use prohibited. Page 156
The basic SIP Servlet attributes are displayed at the top of the main content pane. These are the
attributes that you are most likely to need to change; for example External Address Mode, as
discussed in the Changing the External Address Modes section, and Cluster Address, as
discussed in the Changing Addresses section.
6. To view other attributes, which are less likely to require a configuration change, click on the
expand icon ( ) by the Advanced heading.
Note: To see a description of all the attributes, click the Need Help? link on the right.
Note: If the advanced attributes were displayed when you clicked Edit, all of the attributes are
available to edit. If they were not displayed, only the basic attributes are available to edit.
The pane reverts back to view mode, displaying the updated values.
© 2023 CBA | All Rights Reserved | Unauthorized use prohibited. Page 157
2. To return a list of the SIP subsystem attributes that can be configured, use:
/profile=ha/subsystem=sip/:read-resource
The list includes all of the SIP attributes, including the SIP connectors, which are described in the
Configuring SIP Connectors section, and the SIP stack properties, which are described in the
Configuring the SIP Stack section.
where <attribute name > is the name of the attribute, and <attribute value> is the new
value.
You can also configure the SIP connectors (for example, to allow the static address of LBs to be
set, or if you change external ports or IP addresses). All of the attributes have default settings, so
configuration of them is optional.
4. From the menu on the left, expand Sip and select Sip Servlet.
© 2023 CBA | All Rights Reserved | Unauthorized use prohibited. Page 158
6. In the Available Sip Connectors section, select the connector that you want to edit.
The attributes of the connector will show in the Selection section. To see a description of the
attributes, click the Need Help? link on the right.
7. Click Edit.
You will see the updated values in the Available Sip Connectors section.
/profile=ha/subsystem=sip/connector=<connector>:read-resource()
where <connector> is the SIP connector name ( sip-udp, sip-tcp, sip-tls, or sip-ws).
© 2023 CBA | All Rights Reserved | Unauthorized use prohibited. Page 159
/profile=ha/subsystem=sip/connector=<connector name>:write-attribute(name=
<attribute name>, value=<attribute value>)
where <connector> is the SIP connector name, <attribute name> is the name of the
attribute, and <attribute value> is the new value.
4. The changes will be pushed to each host in the cluster. Restart all the hosts to pick up the
new configuration.
FAS uses the NIST SIP stack (that is, the reference implementation of the JAIN SIP API). The
NIST SIP stack has a number of optional configuration properties (the names of which begin with
gov.nist.javax.sip), which can be configured using the Management Console or the CLI. Using
the Management Console, you can also remove an existing property or add a new one.
The following table lists some of the properties that could be edited to tune your FAS cluster. The
default values listed below reflect the values in a FAS installation, so some might differ from the
default values of the native NIST stack; not all are set, so if you wish to set them, they may need
to be added. For a full description of options, refer to the NIST SIP stack documentation.
gov.nist.javax.sip.LOG_
Set to false if you do not want to
true
MESSAGE_CONTENT capture message content in the log.
© 2023 CBA | All Rights Reserved | Unauthorized use prohibited. Page 160
Detected) response and passes it to the
server transaction.
© 2023 CBA | All Rights Reserved | Unauthorized use prohibited. Page 161
the AS will then drop, rather than
upgrade, a UDP message greater than
the MAX_MESSAGE_SIZE.
CACHE_CLIENT_
64 If specified, the stack will run the
listener using a thread from the thread
CONNECTIONS
pool. This allows you to manage the
level of concurrency to a fixed
maximum. Threads are pre-allocated
when the stack is instantiated.
© 2023 CBA | All Rights Reserved | Unauthorized use prohibited. Page 162
gov.nist.javax.sip.MAX_
Maximum number of simultaneous TCP
CONNECTIONS connections handled by the stack.
gov.nist.javax.sip.MAX_
Maximum size of the server transaction
SERVER_ table. Requests are selectively dropped
5000
if the table size goes over 80% of this
TRANSACTIONS size.
gov.nist.javax.sip.MAX_
Maximum number of active client
CLIENT_ transactions before the caller blocks
unlimited
and waits for the number to drop below
TRANSACTIONS a threshold.
© 2023 CBA | All Rights Reserved | Unauthorized use prohibited. Page 163
NON_INVITE INVITE transaction is supposed to live
in the stack. This is to avoid any leaks
in whatever state the transaction can be
in, even if the application misbehaves.
When the maximum time is reached, a
timeout event is sent to the application
listener, so that the application can take
action, and the transaction is removed
from the stack after a typical lingering
period of 8s. There is a specific property
for non-INVITE transactions because a
non-INVITE transaction is short-lived as
compared to INVITE, and so can be
collected more eagerly to save on
memory usage.
© 2023 CBA | All Rights Reserved | Unauthorized use prohibited. Page 164
transaction late and send it out after the
INVITE server transaction has been
terminated. This will, however, result in
protocol errors.
gov.nist.javax.sip.
How much time in milliseconds
CONGESTION_ messages are allowed to wait in the
8000
queue before being dropped due to the
CONTROL_TIMEOUT stack being too slow to respond.
© 2023 CBA | All Rights Reserved | Unauthorized use prohibited. Page 165
instructs the SIP stack to use a thread
pool and split the CPU load between
the number of threads specified. The
processing is split immediately after the
parsing of the message. It cannot be
split before the parsing because in TCP
the SIP message size is in the Content-
Length header of the message, and the
access to the TCP network stream has
to be synchronized. Additionally, in TCP
the message size can be larger. This
causes most of the parsing for all calls
to occur in a single thread, which might
have an impact on the performance in
trivial applications using a single socket
for all calls. In most applications, it
doesn't have any performance impact. If
the phones or clients use separate TCP
sockets for each call, this option doesn't
have much impact, except the slightly
increased memory footprint caused by
the thread pool.
© 2023 CBA | All Rights Reserved | Unauthorized use prohibited. Page 166
Maximum time that the original
transaction for which a forked response
is received is tracked. This property is
only relevant to dialog stateful
applications (User Agents or B2BUA).
gov.nist.javax.sip.MAX_ When a forked response is received in
this time interval from when the original
FORK_TIME_SECONDS
INVITE client transaction was sent, the
stack will place the original INVITE
client transaction in the response and
deliver that to the application. The event
handler can get the original transaction
from this event.
gov.nist.javax.sip.
Controls the priority of the threads
THREAD_PRIORITY started by the stack
© 2023 CBA | All Rights Reserved | Unauthorized use prohibited. Page 167
Minimum time between keep-alive pings
gov.nist.javax.sip.MIN_
(CRLF CRLF) from clients. If pings
KEEPALIVE_ -1 (do not arrive with less than this frequency a
respond) CRLF CRLF reply will be sent; if they
TIME_SECONDS arrive with greater frequency they will
be rejected.
gov.nist.javax.sip.
The number of ticks before a dialog that
DIALOG_
64 does not receive an ACK receives a
Timeout notification.
TIMEOUT_FACTOR
gov.nist.javax.sip.
© 2023 CBA | All Rights Reserved | Unauthorized use prohibited. Page 168
which connect without sending any data
from blocking the server.
1. Launch the Management Console - see the Starting the Management Console section.
4. From the menu on the left, expand Sip and select Sip Servlet.
© 2023 CBA | All Rights Reserved | Unauthorized use prohibited. Page 169
1. Start the CLI (see the Starting the CLI section).
/profile=ha/subsystem=sip/property=<property name>/:write-attribute(name=value,
value=<property value>)
where <property name> is the name of a property, and <property value> is the new value.
© 2023 CBA | All Rights Reserved | Unauthorized use prohibited. Page 170
Configuring JGroups
Fusion Application Server uses Infinispan to share state between cluster elements, and
Infinispan in turn uses JGroups as the transport mechanism for sharing this state. JGroups uses
multicast to discover other nodes, and then uses TCP to share state between nodes. Each
cluster has a unique cluster ID (set during installation), and nodes do not share state with other
nodes unless the cluster IDs match. Nodes only accept discovery requests from nodes with the
same cluster ID, but if you have several distinct clusters in the same subnet, you will see warning
messages in the log, stating that discovery requests have been rejected because the cluster IDs
do not match.
To avoid these warning messages, you can use the following process to set the multicast
address and port for JGroups, so that each cluster is restricted to a specific address and port.
You will first need to decide which multicast addresses and ports each cluster will use.
1. Launch the Management Console - see the Starting the Management Console section.
3. From the menu on the left, expand General Configuration section select Socket Binding:
© 2023 CBA | All Rights Reserved | Unauthorized use prohibited. Page 171
It doesn’t matter which profile you select for this change, as the settings you will change here are
not related to a specific profile.
© 2023 CBA | All Rights Reserved | Unauthorized use prohibited. Page 172
5. Select jgroups-mping in the Available Socket Bindings section, and click Edit.
© 2023 CBA | All Rights Reserved | Unauthorized use prohibited. Page 173
If you edit the address, replace the whole string with the new address. For example, to set the
address to 230.0.0.10, replace the whole string ${jboss.default.multicast.address:230.0.0.4} with
230.0.0.10.
8. Click Save.
The multicast address and port of jgroups-mping must match on the ha-sockets and lb-sockets.
© 2023 CBA | All Rights Reserved | Unauthorized use prohibited. Page 174
Configuring Performance
HA Performance Options
There are a number of options which control the flow of data between nodes in a multi-box
cluster, and which you can configure to improve performance or stability.
The timeout for removing transaction data from the cache can be configured by adding the
following configuration properties to the LBs:
transaction-data-expiry
The time to wait for a transaction to complete before removing it from the cache (default value
90).
transaction-data-expiry-time-units
The time units in which the previous value is expressed (default value MINUTES). Valid values
are:
DAYS
HOURS
MINUTES
SECONDS
MILLISECONDS
MICROSECONDS and NANOSECONDS will be accepted, but will be rounded down to the
nearest millisecond
1. Launch the Management Console - see the Starting the Management Console section.
© 2023 CBA | All Rights Reserved | Unauthorized use prohibited. Page 175
2. From the top right menu, select Profiles.
4. In the left hand menu, expand Subsystems and Load Balancer, and select Configuration.
7. Enter the Name and Value fields for the transaction-data-expiry property.
8. Click Save.
9. Repeat the above for the transaction-data-expiry-time-units property, if you did not enter the
transaction-data-expiry value in minutes.
timeout
The time to wait for a node to respond to a heartbeat ping in milliseconds (default value 2000).
max_tries
The number of times to retry connecting to a node before deciding it is unavailable (default value
4).
© 2023 CBA | All Rights Reserved | Unauthorized use prohibited. Page 176
Do this by modifying the values under the <FD> element for the appropriate JGroups stack in
the domain.xml file (udp or tcp for the profile in use), which is in the
<install_dir>/domain/configuration directory:
<stack name="udp">
or
<stack name="tcp">
as required.
<protocol type="FD">
5. Inside the <protocol> element, modify the values of the <property> elements:
<property name="timeout">2000</property>
<property name="max\_tries">4</property>
as required.
7. Restart FAS.
JVM Options
There are a number of JVM settings which you can edit to improve FAS performance. For
example, you can change the maximum heap size or the maximum permgen size (or metaspace
size in Java 1.8 or higher).
© 2023 CBA | All Rights Reserved | Unauthorized use prohibited. Page 177
For ASs and LBs in a development environment, the default JVM parameters usually work well.
Increasing the AS heap size to 2048m is usually more than sufficient for most co-hosted
application deployments. If the AS process requires more than 2048M, we recommend a 64-bit
system.
For LB processes, the memory allocated to the JVM can be smaller than that of the ASs.
To configure the LB JVM parameters independently of the AS settings, configure the JVM
settings at the server process level; see the Editing JVM Settings at the Server Process Level
section. If you want the JVM settings to be the same for both ASs and LBs, you can configure
them at the host level; see the Editing JVM Settings at the Host Level section.
1. Launch the Management Console - see the Starting the Management Console section.
4. From the menu on the left, expand Host Settings and select JVM Configuration:
5. If there is more than one JVM configuration, select the one you wish to change from the
Available JVM Configurations section.
© 2023 CBA | All Rights Reserved | Unauthorized use prohibited. Page 178
6. Click the Edit button in the Selection section.
Note: The Permgen Size and Max Permgen Size fields are only relevant when using a Java
runtime version less than 1.8. Newer versions of Java have replaced the PermGen space with
MetaSpace, which can be configured by adding one or both of the following options to the JVM
Options field:
\-XX:MetaspaceSize=<nnn>
and
\-XX:MaxMetaspaceSize=<nnn>
where <nnn> is a size expressed in GB, MB, or KB, and suffixed by the appropriate letter (e.g.
32g, 256M).
8. Click Save.
4. From the menu on the left, expand Server and select Server Configuration.
© 2023 CBA | All Rights Reserved | Unauthorized use prohibited. Page 179
5. Select the configuration you want to change from the Available Server Configurations
section, and click on the JVM Configuration tab beneath:
Note: The Permgen Size and Max Permgen Size fields are only relevant when using a Java
runtime version less than 1.8. Newer versions of Java have replaced the PermGen space with
MetaSpace, which can be configured by adding one or both of the following options to the JVM
Options field:
© 2023 CBA | All Rights Reserved | Unauthorized use prohibited. Page 180
\-XX:MetaspaceSize=<nnn>
and
\-XX:MaxMetaspaceSize=<nnn>
where <nnn> is a size expressed in GB, MB, or KB, and suffixed by the appropriate letter (e.g.
32g, 256M).
8. Click Save.
<jvm-options>
<option value="-server"/>
<option value="-XX:+UseG1GC"/>
<option value="-XX:MaxGCPauseMillis=50"/>
<option value="-XX:+HeapDumpOnOutOfMemoryError"/>
<option value="-XX:HeapDumpPath=./heapdump\_as.hprof"/>
<option value="-XX:MetaspaceSize=256m"/>
<option value="-XX:MaxMetaspaceSize=256m"/>
</jvm-options>
You can change these options by editing the domain.xml file directly, or from the Management
Console:
1. Launch the Management Console - see the Starting the Management Console section.
4. From the menu on the left, expand Server and select Server Groups.
5. In the Available Group Configurations section, select the server group you wish to change
the garbage collection options for, and click the JVM Configuration tab below.
© 2023 CBA | All Rights Reserved | Unauthorized use prohibited. Page 181
6. Click the Edit button.
For instance, you might wish to change the value of the -XX:MaxGCPauseMillis setting; this
setting controls the maximum time for a pause while garbage collection takes place.
8. Restart the affected server processes (ASs if you have changed the main-server-group, LBs
for the lb-server-group) for the changes to take effect.
There are a number of other garbage collection options that can be configured but are not
included in the domain.xml file by default. See the Oracle documentation at
http://www.oracle.com/webfolder/technetwork/tutorials/obe/java/G1GettingStarted/ for details of
these options. If you are changing several options on several server groups, you might find it
more convenient to edit the domain.xml file directly, and restart all the FAS nodes.
© 2023 CBA | All Rights Reserved | Unauthorized use prohibited. Page 182
Configuring FAS HA without Multicast
FAS relies on multicast to discover the elements that are in a multi-box cluster, but some
deployment environments (such as Amazon AWS) do not support multicast. The following
instructions show how you can configure a multi-box FAS installation to work in an environment
that does not allow multicast.
Note: We recommend that multicast should be used in deployment if possible. This procedure
should only be used if multicast is not an option.
You need to configure the JGroups subsystem on the master FAS node to use TCP Ping instead
of UDP multicast, so that FAS uses TCP sockets to discover the other nodes. You must set the
JGroups default-stack to TCP, and add TCPPING to the TCP stack configuration; the TCPPING
configuration contains a list of the FAS components. You need to do this for ha, management,
and lb profiles.
Note: The IP addresses and other properties in the TCPPING configurations given here are
examples only; see the JGroups documentation for TCPPING for further details.
1. Open domain.xml in a text editor, and search for the <socket-binding-groups> element.
<socket-binding-groups>
<socket-binding-group name="ha-sockets" default-interface="public">
...
<socket-binding name="jgroups-tcp" port="7600" />
...
</socket-binding-group>
<socket-binding-group name="lb-sockets" default-interface="public">
...
© 2023 CBA | All Rights Reserved | Unauthorized use prohibited. Page 183
<socket-binding name="jgroups-tcp" port="7580" />
...
</socket-binding-group>
</socket-binding-groups>
3. Note the port numbers used by jgroups-tcp socket binding in both the ha-sockets and lb-
sockets socket binding groups. ha-sockets maps to the ha profile, and lb-sockets to the lb
profile. In the above example, the port numbers are:
ha-sockets - 7600
lb-sockets - 7580
<profile name="ha">
You can find this line by searching for node-type=”AS”, and finding the <subsystem> element
which contains the <stack> element which contains the <transport> element which has this
attribute. Note that you will find two such stacks - one for UDP and one for TCP; ensure you are
working with the correct stack (the one which has the default-stack attribute is set to tcp as
above).
4. We want to use TCPPING, rather than MPING, so remove the MPING configuration line:
© 2023 CBA | All Rights Reserved | Unauthorized use prohibited. Page 184
<protocol type="TCPPING">
<property name="initial\_hosts">
192.168.0.1[7600],192.168.0.1[7580],192.168.0.2[7600],192.168.0.2[7580]
</property>
<property name="num\_initial\_members">1</property>
<property name="port\_range">3</property>
<property name="timeout">2000</property>
</protocol>
where the initial_hosts property is a comma-separated list of the IP addresses and port numbers
of all the nodes in the cluster (including the master node) which need to be pinged (if both an LB
and an AS are present on a cluster node, both will need to be pinged on the port numbers
discovered in the Find the Configured TCP Ports section). The num_initial_members property is
the number of responses to wait for; see the JGroups documentation for TCPPING for further
details.
The above example represents a two-box cluster where each box runs both an LB and an AS.
TCP pings are sent to 192.168.0.1 and 192.168.0.2 on all the ports within the port_range,
starting at 7600 (looking for the AS) and 7580 (looking for the LB).
<profile name="lb">
You can find this line by searching for node-type=”LB”, and finding the <subsystem>
element which contains the <stack> element which contains the <transport> element
which has this attribute. Note that you will find two such stacks - one for UDP and one for
TCP; ensure you are working with the correct stack (the one which has the default-stack
attribute is set to tcp as above).
© 2023 CBA | All Rights Reserved | Unauthorized use prohibited. Page 185
4. We want to use TCPPING, rather than MPING, so remove the MPING configuration line:
<protocol type="TCPPING">
<property name="initial\_hosts">
192.168.0.1[7600],192.168.0.1[7580],192.168.0.2[7600],192.168.0.2[7580]
</property>
<property name="num\_initial\_members">1</property>
<property name="port\_range">3</property>
<property name="timeout">2000</property>
</protocol>
where the initial_hosts property is a comma-separated list of the IP addresses and port numbers
of all the nodes in the cluster (including the master node) which need to be pinged (if both an LB
and an AS are present on a cluster node, both will need to be pinged on the port numbers
discovered in the Find the Configured TCP Ports section). The num_initial_members property is
the number of responses to wait for; see the JGroups documentation for TCPPING for further
details.
The above example represents a two-box cluster where each box runs both an LB and an AS.
TCP pings are sent to 192.168.0.1 and 192.168.0.2 on all the ports within the port_range,
starting at 7600 (looking for the AS) and 7580 (looking for the LB).
<profile name="management">
You can find this line by searching for node-type=”MGMT”, and finding the <subsystem>
element which contains the <stack> element which contains the <transport> element which
© 2023 CBA | All Rights Reserved | Unauthorized use prohibited. Page 186
has this attribute. Note that you will find two such stacks - one for UDP and one for TCP; ensure
you are working with the correct stack (the one which has the default-stack attribute is set to tcp
as above).
4. We want to use TCPPING, rather than MPING, so remove the MPING configuration line:
The above example represents a two-box cluster where each box runs both an LB and an AS.
TCP pings are sent to 192.168.0.1 and 192.168.0.2 on all the ports within the port_range,
starting at 7600 (looking for the AS) and 7580 (looking for the LB).
2. Restart the FAS nodes (see the Managing Cluster Components section).
© 2023 CBA | All Rights Reserved | Unauthorized use prohibited. Page 187
Monitoring
The host controller exposes MBeans over JMX, using the port 9999 (this is the same port used
for the native management interface).
In order for JConsole, or another JMX client, to connect, the client must have additional JBoss
remoting classes on the classpath. A script (jconsole.sh) is provided in the <install dir>/bin
directory which will add these classes to the classpath when starting JConsole. Since the
management port is secured, you will also need to provide the truststore containing the CA
certificate being used by FAS, which is in the <install‑dir>/domain/configuration/security/default-
trust directory.
1. Run the jconsole.sh script from the master FAS node (all on a single line):
© 2023 CBA | All Rights Reserved | Unauthorized use prohibited. Page 188
The connection URL takes the form: service:jmx:remoting-jmx://<fas address>:9999 , and
the default Username and Password are admin and changeit.
3. When JConsole is connected, it displays the usual JVM information, the MBeans which are
exposed, and an extra JBoss CLI tab.
From the MBeans tab, you can access the HotSpotDiagnostic and Threading MBeans:
© 2023 CBA | All Rights Reserved | Unauthorized use prohibited. Page 189
You can use these to dump the heap (the file name is the first argument, and the file will be
saved in the <install dir> directory), dump threads (these are dumped to an interactive
window), find deadlocked threads, and so on.
The MBeans are available to applications hosted in a server process which calls
ManagementFactory.getPlatformMBeanServer.
On the JBoss CLI tab, you can access the some of the same objects and their properties as you
can from the CLI.
© 2023 CBA | All Rights Reserved | Unauthorized use prohibited. Page 190
Right click the name of an object or attribute to access the operations availablee. In most cases,
you will find it most convenient to change these using the CLI(see the Command Line Interface
(CLI) section), which are more comprehensive; or the Management Console, for commonly
changed settings (see the Management Console section), which is less comprehensive but more
convenient.
Diagnostics
Fusion Application Server provides a script for collecting diagnostic information from a server
for further offline investigation. Running it produces a ZIP file containing configuration and
runtime information that might help you to diagnose problems:
3. Run:
./jdr.sh
© 2023 CBA | All Rights Reserved | Unauthorized use prohibited. Page 191
A ZIP file called sosreport-<host>-<date-time> is created in the <install dir>/bin
directory, where <host> is the host name, and <date-time> is the local date and time in ISO
format without separators (yyyyMMddHHmmss).
Logs for the host controller, process controller, and each server process.
Metadata about what modules are installed and what resources’ dependencies are
configured (module.xml files).
Core Dumps
In a production system, core dumps are normally disabled. To enable core dumps from FAS (for
all users), edit the /etc/security/limits.conf file, and add the lines:
© 2023 CBA | All Rights Reserved | Unauthorized use prohibited. Page 192
Ports
The following diagram shows the ports used by the Fusion Application Server cluster
components:
LB Ports
8080 HTTP
8443 HTTPS
© 2023 CBA | All Rights Reserved | Unauthorized use prohibited. Page 193
7580 JGroups replication internal
AS Ports
8100 HTTP
8463 HTTPS
© 2023 CBA | All Rights Reserved | Unauthorized use prohibited. Page 194
8161 SNMP listener
© 2023 CBA | All Rights Reserved | Unauthorized use prohibited. Page 195
Glossary
Term Description
Application Server
FAS node running at least an AS server process.
node (AS node)
Group of FAS nodes, of which one is the master and the others are
Cluster
slave nodes.
Domain Host A Host Controller that is in charge of all the others in a cluster, and
Controller the point from which the Server Groups in a domain are managed.
© 2023 CBA | All Rights Reserved | Unauthorized use prohibited. Page 196
Dynamic Model
A tree-structure representation of the FAS attributes that can be
Representation
configured.
(DMR)
Host Controller The FAS process that provides the management interfaces.
Load Balancer
A FAS node running at least an LB server process.
node (LB node)
Management A server process running on the FAS master node in a cluster (and
© 2023 CBA | All Rights Reserved | Unauthorized use prohibited. Page 197
Server only on the FAS master node).
The FAS node that hosts the Domain Host Controller, which the CLI
Master node
and Management Console connect to to manage the cluster.
The FAS process that manages the lifecycle of the other processes -
Process Controller
starting, stopping, and restarting as appropriate.
Server processes across one or more hosts are grouped into Server
Server Group Groups. Applications are deployed to Server Groups, so all hosts in
a Server Group will have the same set of applications deployed.
The FAS nodes within a cluster that are not the Master are slaves,
Slave which receive their configuration changes from the Domain Host
Controller running on the Master node.
SNMP Agent A process integrated with each Domain Host Controller and Host
Controller that collects information from the FAS platform, and
© 2023 CBA | All Rights Reserved | Unauthorized use prohibited. Page 198
applications hosted on FAS, and exposes this to the external
Network Management System. SNMP stands for Simple Network
Management Protocol.
© 2023 CBA | All Rights Reserved | Unauthorized use prohibited. Page 199