JBoss.orgCommunity Documentation

Chapter 2. Installation

2.1. Setup the target environment
2.1.1. JBoss EAP
2.1.2. Fuse
2.2. Install RTGov
2.3. Post-installation steps
2.3.1. JBoss EAP
2.3.2. Fuse
2.4. Configuration
2.4.1. Database
2.5. Test the installation using the samples
2.5.1. JBoss EAP
2.5.2. Fuse
2.6. JBoss EAP Specific Information
2.6.1. SQL Database
2.6.2. Caching

This section will describe how to install Overlord Runtime Governance in different environments.

This section provides information about how to setup the target environments in which rtgov can be installed.

  • Download the JBoss EAP distribution (version 6.1 and 6.3 are currently supported), and unpack it in a suitable location.
  • If using rtgov with switchyard, then download SwitchYard (version 2.0.0.Final or higher) and install it into the JBoss EAP environment. We recommend using the switchyard installer, which can be unpacked in a temporary location, and run ant in the root folder to be prompted for the location of the JBoss EAP environment.

Note

If switchyard is not installed, then you won’t be able to use the quickstarts, which are based around providing runtime governance for a switchyard application.

This section describes how to install Overlord Runtime Governance (RTGov).

ant [ -Dappserver.id=<target> ] [ -Dpath=<root-folder> ] [ -Dtype=<installation-type> ]

The <target> represents the target environment into which rtgov is being installed:

ValueDescription

jboss-eap-6

This is the default value. Target environment is JBoss EAP 6.x

fuse-6.1

Target environment is JBoss Fuse 6.1

If the <root-folder> is not explicitly provided on the command line, then the user will be prompted for the information.

The <installation-type> value can be:

ValueDescription

all

This will result in the full server configuration being installed into the server, including activity collector (for obtaining activities generated within that server), activity server (for receiving activity information whether from a remote client or internal activity collector), event processor network (to analyse the events), active collections (to maintain result information) and a collection of REST services to support remote access to the information. This is the default value.

client

This will result in only the activity collector functionality being installed, using a RESTful client to communicate with a remote Runtime Governance server.

To uninstall, simply perform the following command in the root folder of the installation:

ant uninstall [ -Dappserver.id=<target> ] [ -Dpath=<root-folder> ] [ -Dtype=<installation-type> ]

The configuration properties for the Runtime Governance capability are common across all platforms. However their location varies:

ValueDescription

jboss-eap-6

The properties are found in the standalone*.xml files in the <root>/standalone/configuration folder, or domain.xml file in <root>/domain/configuration folder. The properties are defined under a configuration element with an attribute "name=overlord-rtgov".

fuse-6.1

The properties are found in the <root>/etc/overlord-rtgov.properties file.

Although there will be some properties that are independent of the installation type, some will be specific and therefore are listed in separate sections below.

Common

The common properties available across all installation types are:

PropertyDescription

collectionEnabled

This property will determine whether activity information is collected when the server is initially started. This value can be changed at runtime using the ActivityCollector MBean (see the chapter on Managing the Infrastructure).

ActivityServerLogger.activityListQueueSize

This property defines the queue size for pending activity lists, that are awaiting being reported to the Activity Server.

ActivityServerLogger.durationBetweenFailureReports

To avoid logs being overlorded with failure reports, failures will only be reported once within the defined time interval (in milliseconds).

ActivityServerLogger.freeActivityListQueueSize

This property defines the queue size to manage free activity lists that can be reused.

ActivityServerLogger.maxThreads

This property is an integer that represents the maximum number of threads that should be used to report activity events to the server (whether remote or embedded).

BatchedActivityUnitLogger.maxTimeInterval

The maximum wait interval (in milliseconds) before sending any held activity units to the Activity Server.

BatchedActivityUnitLogger.maxUnitCount

The maximum number of activity units that should be held before sending as a batch to the Activity Server.

All Type

PropertyDescription

ActiveCollectionManager.houseKeepingInterval

Time interval (in milliseconds) between house keeping tasks being invoked.

ActivityStore.class

The class associated with the Activity Store implementation to be used.

Elasticsearch.server

URL to the Elasticsearch server (HTTP port).

infinispan.container

The infinispan container to use.

MVELSeverityAnalyzer.scriptLocation

Optional location of a MVEL script used to determine severity levels for nodes and links within the service overview diagram.

SituationStore.class

The class associated with the Situation Store implementation to be used.

Note

Activity and Situation Store implementation specific properties will be discussed in the database section below.

Client Type

This installation type is used to configure an execution environment that will be sending its activity information to a remote Runtime Governance server using REST. The relevant properties are:

PropertyDescription

RESTActivityServer.serverURL

This is the URL of the activity server collecting the activity events.

RESTActivityServer.serverUsername

The username used to access the REST service.

RESTActivityServer.serverPassword

The password used to access the REST service.

This section described the configuration of the supported database options.

When RTGov has been installed, try out the samples to get an understanding of its capabilities, and check that your environment has been correctly installed/configured.

To install the samples into JBoss EAP go to the samples folder in the distribution. You will need to install Apache Maven to be able to use the examples.

The key examples are explained below. Each quickstart also has a readme providing the instructions for use.

To try out the samples in Fuse, you will need to start up the Fuse console.

To install an OSGi application to provide a simple order management capabilty, with an Event Processor Network to convert exceptions into Situations, run the following command from the fuse console:

features:install rtgov-samples-ordermgmt-epn

Send some requests to the order management service, at the URL http://localhost:8181/cxf/orderservice/orders/submit, with basic authentication username=admin, password=admin (as defined in the etc/user.properties file). For example, send the message:

{"orderId":"1","itemId":"BUTTER","quantity":100,"customer":"Fred"}

which should return the result:

{
    "total": 125,
    "accepted": true,
    "customer": "Fred",
    "orderId": "1",
    "status": "Order Accepted"
}

If you then send:

{"orderId":"6","itemId":"ERROR","quantity":100,"customer":"Fred"}

you will get the response:

Failed with an error

and a Situation will be created in the RTGov UI.

To install a policy that will check for SLA violations, run the following command from the fuse console:

features:install rtgov-samples-sla

Send some requests to the order management service, at the URL http://localhost:8181/cxf/orderservice/orders/submit, with basic authentication username=admin, password=admin (as defined in the etc/user.properties file). For example, send the message:

{"orderId":"3","itemId":"JAM","quantity":100,"customer":"Fred"}

which should return the result after a slight delay:

{
    "total": 240,
    "accepted": true,
    "customer": "Fred",
    "orderId": "3",
    "status": "Order Accepted"
}

The delay is caused by the request for itemId JAM, and results in the policy detecting a SLA violation which are reported as two Situation events that can be viewed in the RTGov UI.

To install a policy that will be evaluated immediately, to prevent a customer from invoking a service more than once within two seconds, run the following comand from the fuse console:

features:install rtgov-samples-policy-sync

Send the following request twice in quick succession, to the order management service at the URL http://localhost:8181/cxf/orderservice/orders/submit, with basic authentication username=admin, password=admin (as defined in the etc/user.properties file):

{"orderId":"1","itemId":"BUTTER","quantity":100,"customer":"Fred"}

The first request will return the expected:

{
    "total": 125,
    "accepted": true,
    "customer": "Fred",
    "orderId": "1",
    "status": "Order Accepted"
}

However the second invocation (if performed within two seconds of the first) will return:

Customer 'Fred' cannot perform more than one request every 2 seconds

To install a policy that will evaluate a customer’s debt level, and suspend their account if it becomes too high, run the following comand from the fuse console:

features:install rtgov-samples-policy-async

Send some requests to the order management service, at the URL http://localhost:8181/cxf/orderservice/orders/submit, with basic authentication username=admin, password=admin (as defined in the etc/user.properties file). For example, send the message:

{"orderId":"1","itemId":"BUTTER","quantity":100,"customer":"Fred"}

When the credit limit has been reached, the customer will be suspended, resulting in a response "Customer Fred has been suspended".

If we then sent the following request, to clear some of customer Fred’s debt:

{"amount":400,"customer":"Fred"}

we will then be able to send further order requests.

The database is defined by the datasource configuration located here: $JBOSS_HOME/standalone/deployment/overlord-rtgov/rtgov-ds.xml as part of the server installation type.

The default SQL database is the H2 file based database, and is created during the installation of the all type.

Note

The following sections discuss changes to the standalone-full.xml configuration file. If using a clustered environment, then these changes should be applied to the standalone-full-ha.xml instead.

MySQL

  • Create the folder $JBossAS/modules/mysql/main.
  • Put the MySQL driver jar in the $JBossAS/modules/mysql/main folder, e.g. mysql-connector-java-5.1.12.jar.
  • Create a module.xml file, within the $JBossAS/modules/mysql/main folder, with the contents:
<module xmlns="urn:jboss:module:1.1" name="mysql">
   <resources>
     <resource-root path="mysql-connector-java-5.1.12.jar"/>
   </resources>
   <dependencies>
     <module name="javax.api"/>
     <module name="javax.transaction.api"/>
   </dependencies>
</module>
  • Edit the $JBossAS/standalone/configuration/standalone-full.xml file to include the MySQL driver:

<subsystem xmlns="urn:jboss:domain:datasources:1.0">
        <datasources>
            .....
            <drivers>
                ...
                <driver name="mysql" module="mysql">
                    <xa-datasource-class>com.mysql.jdbc.jdbc2.optional.MysqlXADataSource</xa-datasource-class>
                </driver>
            </drivers>
        </datasources>
    </subsystem>
  • Update the rtgov datasource file, $JBossAS/standalone/deployments/overlord-rtgov/rtgov-ds.xml, the contents should be:

<?xml version="1.0" encoding="UTF-8"?>
<datasources>
    <datasource jndi-name="java:jboss/datasource/OverlordRTGov" pool-name="OverlordRTGov" enabled="true" use-java-context="true">
        <connection-url>jdbc:mysql://localhost:3306/rtgov</connection-url>
        <driver>mysql</driver>
        <security>
            <user-name>root</user-name>
            <password></password>
        </security>
    </datasource>
</datasources>

Postgres

  • Create the $JBossAS/modules/org/postgresql/main folder.
  • Put the postgresql driver jar in the $JBossAS/modules/org/postgresql/main folder, e.g. postgresql-9.1-902.jdbc4.jar.
  • Create a module.xml file, within the $JBossAS/modules/org/postgresql/main folder, with the contents:
<module xmlns="urn:jboss:module:1.1" name="org.postgresql">
   <resources>
     <resource-root path="postgresql-9.1-902.jdbc4.jar"/>
   </resources>
   <dependencies>
     <module name="javax.api"/>
     <module name="javax.transaction.api"/>
   </dependencies>
</module>
  • Edit the $JBossAS/standalone/configuration/standalone-full.xml file to include the PostgresSQL driver:

<subsystem xmlns="urn:jboss:domain:datasources:1.0">
        <datasources>
            .....
            <drivers>
                ...
                <driver name="postgresql" module="org.postgresql">
                    <xa-datasource-class>org.postgresql.xa.PGXADataSource</xa-datasource-class>
                </driver>
            </drivers>
        </datasources>
    </subsystem>
  • Update the rtgov datasource file, $JBossAS/standalone/deployments/overlord-rtgov/rtgov-ds.xml, the contents should be:

<?xml version="1.0" encoding="UTF-8"?>
<datasources>
        <datasource jndi-name="java:jboss/datasource/OverlordRTGov" pool-name="OverlordRTGov" enabled="true" use-java-context="true">
        <connection-url>jdbc:postgresql://localhost:5432/rtgov</connection-url>
        <driver>postgresql</driver>
        <security>
            <user-name>....</user-name>
            <password>....</password>
        </security>
    </datasource>
</datasources>