How to Configure a JBoss 7.x / JBoss 6 EAP Cluster For CA IdentityMinder 12.x using HornetQ Clustering

1. CA Install process Configures Master Cluster.

2. In standalone.sh, change the node to “nodeNN” where NN is unique over the same broadcast

network. Suggestion:

a. Production: Node11, Node12

b. Cert: Node31, Node32

c. DR: Node21, Node 22

d. Example is below

# ———————– start CA IAM FW changes ———————–

STANDALONE_CONFIGURATION=”standalone-full-ha.xml”

BIND_ADDRESS=”0.0.0.0″

NODE_NAME=”node31″

MULTI_CAST_ADDRESS=”230.0.0.4″

JGROUPS_BIND_ADDRESS=”192.168.7.17″

JGROUPS_INITIAL_HOSTS=””

JAVA_HOME=”/usr/java/latest”

IDM_OPTS=”-Dnete.j2ee.vendor=jboss”

#Uncomment the line below if IPv6 Only stack is used

#IDM_OPTS=”$IDM_OPTS -Djava.net.preferIPv6Addresses=true”

#Uncomment the line below if IPv6 Dual stack is used

#IDM_OPTS=”$IDM_OPTS -Djava.net.preferIPv4Stack=true”

SERVER_OPTS=”$SERVER_OPTS -c $STANDALONE_CONFIGURATION -b $BIND_ADDRESS -u

$MULTI_CAST_ADDRESS -Djboss.node.name=$NODE_NAME –

Djgroups.bind_addr=$JGROUPS_BIND_ADDRESS $IDM_OPTS”

# ———————– end CA IAM FW changes ————————-

Configure the JBoss Cluster Nodes

Master Node

This should be done by the CA installer by choosing the Cluster option. The Node name needs to be

changed from the default Node1 and Node2 to a unique node number, say Node31 and Node 32. These

need to match the workers.properties node definitions.

We show the live hornet server section:

<hornetq-server>

<persistence-enabled>true</persistence-enabled>

<security-enabled>false</security-enabled>

<cluster-user>guest</cluster-user>

<cluster-password>guest</cluster-password>

<journal-file-size>102400</journal-file-size>

<failover-on-shutdown>true</failover-on-shutdown>

<allow-failback>true</allow-failback>

<shared-store>false</shared-store>

<journal-min-files>2</journal-min-files>

<journal-type>NIO</journal-type>

<backup-group-name>node31</backup-group-name>

<check-for-live-server>true</check-for-live-server>

<paging-directory path=”live-hornetq/paging”/>

<bindings-directory path=”live-hornetq/bindings”/>

<journal-directory path=”live-hornetq/journal”/>

<large-messages-directory path=”live-hornetq/large-messages”/>

<connectors>

<connector name=”netty”>

<factory-

class>org.hornetq.core.remoting.impl.netty.NettyConnectorFactory</factory-class>

<param key=”host” value=”${jgroups.bind_addr:127.0.0.1}”/>

<param key=”port” value=”5456″/>

</connector>

<netty-connector name=”netty-throughput” socket-

binding=”messaging-throughput”>

<param key=”batch-delay” value=”50″/>

</netty-connector>

<in-vm-connector name=”in-vm” server-id=”0″/>

</connectors>

<acceptors>

<acceptor name=”netty”>

<factory-

class>org.hornetq.core.remoting.impl.netty.NettyAcceptorFactory</factory-class>

<param key=”host” value=”${jgroups.bind_addr:127.0.0.1}”/>

<param key=”port” value=”5456″/>

</acceptor>

<netty-acceptor name=”netty-throughput” socket-binding=”messaging-

throughput”>

<param key=”batch-delay” value=”50″/>

<param key=”direct-deliver” value=”false”/>

</netty-acceptor>

<in-vm-acceptor name=”in-vm” server-id=”0″/>

</acceptors>

<broadcast-groups>

<broadcast-group name=”bg-group1″>

<socket-binding>messaging-group</socket-binding>

<broadcast-period>5000</broadcast-period>

<connector-ref>

netty

</connector-ref>

</broadcast-group>

</broadcast-groups>

<discovery-groups>

<discovery-group name=”dg-group1″>

<socket-binding>messaging-group</socket-binding>

<refresh-timeout>10000</refresh-timeout>

</discovery-group>

</discovery-groups>

<cluster-connections>

<cluster-connection name=”my-cluster”>

<address>jms</address>

<connector-ref>netty</connector-ref>

<discovery-group-ref discovery-group-name=”dg-group1″/>

</cluster-connection>

</cluster-connections>

<security-settings>

<security-setting match=”#”>

<permission roles=”guest” type=”send”/>

<permission roles=”guest” type=”consume”/>

<permission roles=”guest” type=”createNonDurableQueue”/>

<permission roles=”guest” type=”deleteNonDurableQueue”/>

<permission roles=”guest” type=”createDurableQueue”/>

<permission roles=”guest” type=”deleteDurableQueue”/>

</security-setting>

</security-settings>

<address-settings>

<!–default for catch all–>

<address-setting match=”#”>

<dead-letter-address>jms.queue.DLQ</dead-letter-address>

<expiry-address>jms.queue.ExpiryQueue</expiry-address>

<redelivery-delay>0</redelivery-delay>

<max-size-bytes>10485760</max-size-bytes>

<address-full-policy>BLOCK</address-full-policy>

<message-counter-history-day-limit>10</message-counter-

history-day-limit>

<redistribution-delay>1000</redistribution-delay>

</address-setting>

</address-settings>

<jms-connection-factories>

<connection-factory name=”InVmConnectionFactory”>

<connectors>

<connector-ref connector-name=”in-vm”/>

</connectors>

<entries>

<entry name=”java:/ConnectionFactory”/>

</entries>

<connection-ttl>600000</connection-ttl>

</connection-factory>

<connection-factory name=”RemoteConnectionFactory”>

<connectors>

<connector-ref connector-name=”netty”/>

</connectors>

<entries>

<entry name=”RemoteConnectionFactory”/>

<entry

name=”java:jboss/exported/jms/RemoteConnectionFactory”/>

</entries>

<ha>true</ha>

<client-failure-check-period>10</client-failure-check-

period>

<retry-interval>1000</retry-interval>

<retry-interval-multiplier>1.5</retry-interval-multiplier>

<max-retry-interval>60000</max-retry-interval>

<reconnect-attempts>3</reconnect-attempts>

<connection-ttl>600000</connection-ttl>

</connection-factory>

<connection-factory name=”wpConnectionFactory”>

<connectors>

<connector-ref connector-name=”netty”/>

</connectors>

<entries>

<entry name=”jms/wpConnectionFactory”/>

<entry name=”wpConnectionFactory”/>

<entry name=”java:jboss/exported/jms/wpConnectionFactory”/>

</entries>

<client-failure-check-period>300000</client-failure-check-period>

<connection-ttl>600000</connection-ttl>

</connection-factory>

<pooled-connection-factory name=”hornetq-ra”>

<transaction mode=”xa”/>

<connectors>

<connector-ref connector-name=”in-vm”/>

</connectors>

<entries>

<entry name=”java:/JmsXA”/>

</entries>

<connection-ttl>600000</connection-ttl>

</pooled-connection-factory>

</jms-connection-factories>

<jms-destinations>

<jms-queue name=”testQueue”>

<entry name=”queue/test”/>

<entry name=”java:jboss/exported/jms/queue/test”/>

</jms-queue>

<jms-queue name=”iam.im.jms.queue.RuntimeStatusDetailQueue”>

<entry name=”queue/iam/im/jms/queue/RuntimeStatusDetailQueue”/>

<entry

name=”java:jboss/exported/jms/queue/iam/im/jms/queue/RuntimeStatusDetailQueue”/>

</jms-queue>

<jms-queue name=”iam.im.jms.queue.com.netegrity.ims.msg.queue”>

<entry name=”queue/iam/im/jms/queue/com.netegrity.ims.msg.queue”/>

<entry

name=”java:jboss/exported/jms/queue/iam/im/jms/queue/com.netegrity.ims.msg.queue”/

>

</jms-queue>

<jms-queue name=”iam.im.jms.queue.wpEventQueue”>

<entry name=”queue/iam/im/jms/queue/wpEventQueue”/>

<entry

name=”java:jboss/exported/jms/queue/iam/im/jms/queue/wpEventQueue”/>

</jms-queue>

<jms-queue name=”iam.im.jms.queue.wpServAutoActQueue”>

<entry name=”queue/iam/im/jms/queue/wpServAutoActQueue”/>

<entry

name=”java:jboss/exported/jms/queue/iam/im/jms/queue/wpServAutoActQueue”/>

</jms-queue>

<jms-queue name=”iam.im.jms.queue.wpUtilQueue”>

<entry name=”queue/iam/im/jms/queue/wpUtilQueue”/>

<entry name=”java:jboss/exported/jms/queue/iam/im/jms/queue/wpUtilQueue”/>

</jms-queue>

<jms-queue name=”iam_imAnalyticsNotificationQueue”>

<entry

name=”iam/im/jms/queue/analytics/AnalyticsNotificationQueue”/>

</jms-queue>

<jms-topic name=”testTopic”>

<entry name=”topic/test”/>

<entry name=”java:jboss/exported/jms/topic/test”/>

</jms-topic>

<jms-topic name=”iam.im.jms.topic.ServerCommandTopic”>

<entry name=”topic/iam/im/jms/topic/ServerCommandTopic”/>

<entry

name=”java:jboss/exported/jms/queue/iam/im/jms/topic/ServerCommandTopic”/>

</jms-topic>

</jms-destinations>

</hornetq-server>

 
The backup hornet is configured as follows: Again change node name from default.

<hornetq-server name=”backup”>

<clustered>true</clustered>

<persistence-enabled>true</persistence-enabled>

<security-enabled>false</security-enabled>

<cluster-user>guest</cluster-user>

<cluster-password>guest</cluster-password>

<journal-file-size>102400</journal-file-size>

<backup>true</backup>

<allow-failback>true</allow-failback>

<failover-on-shutdown>true</failover-on-shutdown>

<shared-store>false</shared-store>

<live-connector-ref connector-name=”netty-live”/>

<journal-min-files>2</journal-min-files>

<journal-type>NIO</journal-type>

<jmx-domain>backup</jmx-domain>

<jmx-management-enabled>true</jmx-management-enabled>

        <backup-group-name>node32</backup-group-name>

<paging-directory path=”backup-hornetq/paging”/>

<bindings-directory path=”backup-hornetq/bindings”/>

<journal-directory path=”backup-hornetq/journal”/>

<large-messages-directory path=”backup-hornetq/large-messages”/>

<connectors>

<connector name=”netty-connector”>

<factory-

class>org.hornetq.core.remoting.impl.netty.NettyConnectorFactory</factory-class>

<param key=”host”

value=”${jgroups.bind_addr:127.0.0.1}”/>

<param key=”port” value=”5545″/>

</connector>

<netty-connector name=”netty-throughput” socket-

binding=”messaging-throughput”>

<param key=”batch-delay” value=”50″/>

</netty-connector>

<in-vm-connector name=”in-vm” server-id=”1″/>

</connectors>

<acceptors>

<acceptor name=”netty-connector”>

<factory-

class>org.hornetq.core.remoting.impl.netty.NettyAcceptorFactory</factory-class>

<param key=”host”

value=”${jgroups.bind_addr:127.0.0.1}”/>

<param key=”port” value=”5545″/>

</acceptor>

<netty-acceptor name=”netty-throughput” socket-

binding=”messaging-throughput”>

<param key=”batch-delay” value=”50″/>

<param key=”direct-deliver” value=”false”/>

</netty-acceptor>

<in-vm-acceptor name=”in-vm” server-id=”1″/>

</acceptors>

<broadcast-groups>

<broadcast-group name=”bg-group1″>

<socket-binding>messaging-group</socket-binding>

<broadcast-period>5000</broadcast-period>

<connector-ref>

netty-connector

</connector-ref>

</broadcast-group>

</broadcast-groups>

<discovery-groups>

<discovery-group name=”dg-group1″>

<socket-binding>messaging-group</socket-binding>

<refresh-timeout>10000</refresh-timeout>

</discovery-group>

</discovery-groups>

<cluster-connections>

<cluster-connection name=”my-cluster”>

<address>jms</address>

<connector-ref>netty-connector</connector-ref>

<!–

<retry-interval>500</retry-interval>

<forward-when-no-consumers>false</forward-when-no-

consumers>

–>

<discovery-group-ref discovery-group-name=”dg-group1″/>

</cluster-connection>

</cluster-connections>

<security-settings>

<security-setting match=”#”>

<permission roles=”guest” type=”send”/>

<permission roles=”guest” type=”consume”/>

<permission roles=”guest” type=”createNonDurableQueue”/>

<permission roles=”guest” type=”deleteNonDurableQueue”/>

</security-setting>

</security-settings>

<address-settings>

<address-setting match=”#”>

<dead-letter-address>jms.queue.DLQ</dead-letter-address>

<expiry-address>jms.queue.ExpiryQueue</expiry-address>

<redelivery-delay>0</redelivery-delay>

<max-size-bytes>10485760</max-size-bytes>

<address-full-policy>BLOCK</address-full-policy>

<message-counter-history-day-limit>10</message-counter-

history-day-limit>

<redistribution-delay>1000</redistribution-delay>

</address-setting>

</address-settings>

</hornetq-server>

 
Secondary/Additional Nodes

Additional node needs to have its standalone-full-ha.xml changed to cross the node names (as this is a backup hornet server, we need to reverse the node names such that the Live Hornet becomes backup and vice versa)

We show the live hornet server section:
        <hornetq-server>

<persistence-enabled>true</persistence-enabled>

<security-enabled>false</security-enabled>

<cluster-user>guest</cluster-user>

<cluster-password>guest</cluster-password>

<journal-file-size>102400</journal-file-size>

<failover-on-shutdown>true</failover-on-shutdown>

<allow-failback>true</allow-failback>

<shared-store>false</shared-store>

<journal-min-files>2</journal-min-files>

<journal-type>NIO</journal-type>

     <backup-group-name>node32</backup-group-name>

<check-for-live-server>true</check-for-live-server>

<paging-directory path=”live-hornetq/paging”/>

<bindings-directory path=”live-hornetq/bindings”/>

<journal-directory path=”live-hornetq/journal”/>

<large-messages-directory path=”live-hornetq/large-messages”/>

<connectors>

<connector name=”netty”>

<factory-

class>org.hornetq.core.remoting.impl.netty.NettyConnectorFactory</factory-

class>

<param key=”host” value=”${jgroups.bind_addr:127.0.0.1}”/>

<param key=”port” value=”5456″/>

</connector>

<netty-connector name=”netty-throughput” socket-

binding=”messaging-throughput”>

<param key=”batch-delay” value=”50″/>

</netty-connector>

<in-vm-connector name=”in-vm” server-id=”0″/>

</connectors>

<acceptors>

<acceptor name=”netty”>

<factory-

class>org.hornetq.core.remoting.impl.netty.NettyAcceptorFactory</factory-

class>

<param key=”host” value=”${jgroups.bind_addr:127.0.0.1}”/>

<param key=”port” value=”5456″/>

</acceptor>

<netty-acceptor name=”netty-throughput” socket-binding=”messaging-

throughput”>

<param key=”batch-delay” value=”50″/>

<param key=”direct-deliver” value=”false”/>

</netty-acceptor>

<in-vm-acceptor name=”in-vm” server-id=”0″/>

</acceptors>

<broadcast-groups>

<broadcast-group name=”bg-group1″>

<socket-binding>messaging-group</socket-binding>

<broadcast-period>5000</broadcast-period>

<connector-ref>

netty

</connector-ref>

</broadcast-group>

</broadcast-groups>

<discovery-groups>

<discovery-group name=”dg-group1″>

<socket-binding>messaging-group</socket-binding>

<refresh-timeout>10000</refresh-timeout>

</discovery-group>

</discovery-groups>

<cluster-connections>

<cluster-connection name=”my-cluster”>

<address>jms</address>

<connector-ref>netty</connector-ref>

<discovery-group-ref discovery-group-name=”dg-group1″/>

</cluster-connection>

</cluster-connections>

<security-settings>

<security-setting match=”#”>

<permission roles=”guest” type=”send”/>

<permission roles=”guest” type=”consume”/>

<permission roles=”guest” type=”createNonDurableQueue”/>

<permission roles=”guest” type=”deleteNonDurableQueue”/>

<permission roles=”guest” type=”createDurableQueue”/>

<permission roles=”guest” type=”deleteDurableQueue”/>

</security-setting>

</security-settings>

<address-settings>

<!–default for catch all–>

<address-setting match=”#”>

<dead-letter-address>jms.queue.DLQ</dead-letter-address>

<expiry-address>jms.queue.ExpiryQueue</expiry-address>

<redelivery-delay>0</redelivery-delay>

<max-size-bytes>10485760</max-size-bytes>

<address-full-policy>BLOCK</address-full-policy>

<message-counter-history-day-limit>10</message-counter-

history-day-limit>

<redistribution-delay>1000</redistribution-delay>

</address-setting>

</address-settings>

<jms-connection-factories>

<connection-factory name=”InVmConnectionFactory”>

<connectors>

<connector-ref connector-name=”in-vm”/>

</connectors>

<entries>

<entry name=”java:/ConnectionFactory”/>

</entries>

<connection-ttl>600000</connection-ttl>

</connection-factory>

<connection-factory name=”RemoteConnectionFactory”>

<connectors>

<connector-ref connector-name=”netty”/>

</connectors>

<entries>

<entry name=”RemoteConnectionFactory”/>

<entry name=”java:jboss/exported/jms/RemoteConnectionFactory”/>

</entries>

<ha>true</ha>

<client-failure-check-period>10</client-failure-check-period>

<retry-interval>1000</retry-interval>

<retry-interval-multiplier>1.5</retry-interval-multiplier>

<max-retry-interval>60000</max-retry-interval>

<reconnect-attempts>3</reconnect-attempts>

<connection-ttl>600000</connection-ttl>

</connection-factory>

<connection-factory name=”wpConnectionFactory”>

<connectors>

<connector-ref connector-name=”netty”/>

</connectors>

<entries>

<entry name=”jms/wpConnectionFactory”/>

<entry name=”wpConnectionFactory”/>

<entry name=”java:jboss/exported/jms/wpConnectionFactory”/>

</entries>

<client-failure-check-period>300000</client-failure-check-period>

<connection-ttl>600000</connection-ttl>

</connection-factory>

<pooled-connection-factory name=”hornetq-ra”>

<transaction mode=”xa”/>

<connectors>

<connector-ref connector-name=”in-vm”/>

</connectors>

<entries>

<entry name=”java:/JmsXA”/>

</entries>

<connection-ttl>600000</connection-ttl>

</pooled-connection-factory>

</jms-connection-factories>

<jms-destinations>

<jms-queue name=”testQueue”>

<entry name=”queue/test”/>

<entry name=”java:jboss/exported/jms/queue/test”/>

</jms-queue>

<jms-queue name=”iam.im.jms.queue.RuntimeStatusDetailQueue”>

<entry name=”queue/iam/im/jms/queue/RuntimeStatusDetailQueue”/>

<entry

name=”java:jboss/exported/jms/queue/iam/im/jms/queue/RuntimeStatusDetailQueue”/>

</jms-queue>

<jms-queue name=”iam.im.jms.queue.com.netegrity.ims.msg.queue”>

<entry name=”queue/iam/im/jms/queue/com.netegrity.ims.msg.queue”/>

<entry

name=”java:jboss/exported/jms/queue/iam/im/jms/queue/com.netegrity.ims.

msg.queue”/>

</jms-queue>

<jms-queue name=”iam.im.jms.queue.wpEventQueue”>

<entry name=”queue/iam/im/jms/queue/wpEventQueue”/>

<entry

name=”java:jboss/exported/jms/queue/iam/im/jms/queue/wpEventQueue”/>

</jms-queue>

<jms-queue name=”iam.im.jms.queue.wpServAutoActQueue”>

<entry name=”queue/iam/im/jms/queue/wpServAutoActQueue”/>

<entry

name=”java:jboss/exported/jms/queue/iam/im/jms/queue/wpServAutoActQue

ue”/>

</jms-queue>

<jms-queue name=”iam.im.jms.queue.wpUtilQueue”>

<entry name=”queue/iam/im/jms/queue/wpUtilQueue”/>

<entry

name=”java:jboss/exported/jms/queue/iam/im/jms/queue/wpUtilQueue”/>

</jms-queue>

<jms-queue name=”iam_imAnalyticsNotificationQueue”>

<entry

name=”iam/im/jms/queue/analytics/AnalyticsNotificationQueue”/>

</jms-queue>

<jms-topic name=”testTopic”>

<entry name=”topic/test”/>

<entry name=”java:jboss/exported/jms/topic/test”/>

</jms-topic>

<jms-topic name=”iam.im.jms.topic.ServerCommandTopic”>

<entry name=”topic/iam/im/jms/topic/ServerCommandTopic”/>

<entry

name=”java:jboss/exported/jms/queue/iam/im/jms/topic/ServerCommandTopi

c”/>

</jms-topic>

</jms-destinations>

</hornetq-server>

The backup hornet is configured as follows:

<hornetq-server name=”backup”>

<clustered>true</clustered>

<persistence-enabled>true</persistence-enabled>

<security-enabled>false</security-enabled>

<cluster-user>guest</cluster-user>

<cluster-password>guest</cluster-password>

<journal-file-size>102400</journal-file-size>

<backup>true</backup>

<allow-failback>true</allow-failback>

<failover-on-shutdown>true</failover-on-shutdown>

<shared-store>false</shared-store>

<live-connector-ref connector-name=”netty-live”/>

<journal-min-files>2</journal-min-files>

<journal-type>NIO</journal-type>

<jmx-domain>backup</jmx-domain>

<jmx-management-enabled>true</jmx-management-enabled>

     <backup-group-name>node31</backup-group-name>

<paging-directory path=”backup-hornetq/paging”/>

<bindings-directory path=”backup-hornetq/bindings”/>

<journal-directory path=”backup-hornetq/journal”/>

<large-messages-directory path=”backup-hornetq/large-messages”/>

<connectors>

<connector name=”netty-connector”>

<factory-

class>org.hornetq.core.remoting.impl.netty.NettyConnectorFactory</factory-

class>

<param key=”host” value=”${jgroups.bind_addr:127.0.0.1}”/>

<param key=”port” value=”5545″/>

</connector>

<netty-connector name=”netty-throughput” socket-

binding=”messaging-throughput”>

<param key=”batch-delay” value=”50″/>

</netty-connector>

<in-vm-connector name=”in-vm” server-id=”1″/>

</connectors>

<acceptors>

<acceptor name=”netty-connector”>

<factory-

class>org.hornetq.core.remoting.impl.netty.NettyAcceptorFactory</factory-

class>

<param key=”host” value=”${jgroups.bind_addr:127.0.0.1}”/>

<param key=”port” value=”5545″/>

</acceptor>

<netty-acceptor name=”netty-throughput” socket-binding=”messaging-

throughput”>

<param key=”batch-delay” value=”50″/>

<param key=”direct-deliver” value=”false”/>

</netty-acceptor>

<in-vm-acceptor name=”in-vm” server-id=”1″/>

</acceptors>

<broadcast-groups>

<broadcast-group name=”bg-group1″>

<socket-binding>messaging-group</socket-binding>

<broadcast-period>5000</broadcast-period>

<connector-ref>

netty-connector

</connector-ref>

</broadcast-group>

</broadcast-groups>

<discovery-groups>

<discovery-group name=”dg-group1″>

<socket-binding>messaging-group</socket-binding>

<refresh-timeout>10000</refresh-timeout>

</discovery-group>

</discovery-groups>

<cluster-connections>

<cluster-connection name=”my-cluster”>

<address>jms</address>

<connector-ref>netty-connector</connector-ref>

<!–

<retry-interval>500</retry-interval>

<forward-when-no-consumers>false</forward-when-no-

consumers>

–>

<discovery-group-ref discovery-group-name=”dg-group1″/>

</cluster-connection>

</cluster-connections>

<security-settings>

<security-setting match=”#”>

<permission roles=”guest” type=”send”/>

<permission roles=”guest” type=”consume”/>

<permission roles=”guest” type=”createNonDurableQueue”/>

<permission roles=”guest” type=”deleteNonDurableQueue”/>

</security-setting>

</security-settings>

<address-settings>

<address-setting match=”#”>

<dead-letter-address>jms.queue.DLQ</dead-letter-address>

<expiry-address>jms.queue.ExpiryQueue</expiry-address>

<redelivery-delay>0</redelivery-delay>

<max-size-bytes>10485760</max-size-bytes>

<address-full-policy>BLOCK</address-full-policy>

<message-counter-history-day-limit>10</message-counter-

history-day-limit>

<redistribution-delay>1000</redistribution-delay>

</address-setting>

</address-settings>

</hornetq-server>

Configure Jakarta Connector

1. Follow instructions in CA documentation to install Jakarta connector

2. Copy the sample workers.properties and uriworkermap from the CA IdentityMinder tools folder

3. Define the workers in such a way that it matches the node identification configuration in startup

script. Forexample, if the primary node is

NODE_NAME=”node31″

and the secondary node is

NODE_NAME=”node32″

Then the workers.properties file should be:

# The advanced router LB worker

worker.list=router,jkstatus

# Define a worker using ajp13

# worker name should match jvmRoute argument value of <Engine … > element in the tomcat

server.xml file

worker.node31.port=8009

# host name should match -b argument in the run script

worker.node31.host=primary.acclaimconsulting.com

worker.node31.type=ajp13

worker.node31.lbfactor=1

worker.node31.ping_mode=A

worker.node31.fail_on_status=400,404,500,503

worker.node31.recovery_options=28

# Define another worker using ajp13

# worker name should match jvmRoute argument value of <Engine … > element in the tomcat

server.xml file

worker.node32.port=8009

# host name should match -b argument in the run script

worker.node32.host=backup. acclaimconsulting.com

worker.node32.type=ajp13

worker.node32.lbfactor=1

worker.node32.ping_mode=A

worker.node32.fail_on_status=400,404,500,503

worker.node32.recovery_options=28

# Define the LB worker

worker.router.type=lb

worker.router.balance_workers=node31,node32

worker.router.sticky_session=1

# Define a ‘jkstatus’ worker using status

worker.jkstatus.type=status