IBM Support

Simple TPAE Functional JVM Separation Process

Question & Answer


Question

What is quickest and easiest method for splitting out Tivoli Process Automation Engine (TPAE) front end and backend functionality into separate Java Virtual Machines (JVMs)?

Cause

This technote applies to you if you are running WebSphere Application Server (WAS) but your user load is not large enough to warrant the full "Advanced System Configuration" treatment. The architecture in the illustration below would serve environments of up to approximately 100 concurrent users. This technote is derived from an actual customer case, where they only had 21 concurrent users, with lightly used reporting and integrations, but still wanted to implement a system with enterprise level resilience and stability.

Where available and affordable a second physical WAS node can be added very simply, and the cluster(s) extended to them, to both remove the hardware as a single point of failure and to add more capacity if and when user load warrants it.

Answer

Setting up an enterprise level TPAE environment means not only separating the JVMs functionally to make the UI more stable, but also trying to eliminate single points of failure, where possible and sensible according to user load. The methodologies covered here have been culled from those detailed in Chapter 12 of the System Administrators Guide under the Advanced System Configuration section and also in the V7 Report Performance book in the Clustering Configuration section.

In this instance the Cron/Escalations and Reporting functions are lightly used, and so may be served by a single JVM. If this situation changed, or that JVM was getting overloaded, this could easily be extended to its own cluster. The UI Cluster consists of two JVMs sharing load, primarily for system resilience. Also, for simplicity of configuration, and because Integrations are rarely used, we leave that function as part of the UI. The configuration I detail below will result in a system that looks like the following.


Notes:
  1. For the above architecture you would require at least an 8Gig, quad-core server. Each additional JVM added would require at least 1 additional core and approximately 2Gig of RAM on a 32-bit system.
  2. This technote does not cover database high availability at all - please consult your Database Administrator to cater for that.
  3. There is no need to build separate EAR files as we're going to use Instance Properties to tell each application what its job is.
  4. The originally deployed MXServer JVM will be left as is, but not started so that it can be used to test any required installs of add-ons, fix packs, etc. This also allows the automated installers to still deploy automatically.
  5. This technote does not and cannot take into account any customisations you may have implemented.

The process is as follows, specifying location in square brackets:
  1. [WAS ISC] Create an MXServer JVM template – this will make it easier to add new JVMs in future.
    1. From Servers > Application Servers hit Templates... and then New.
    2. Select MXServer from the list and click OK.
    3. Specify a name for the template, such as “MXServer” and a description such as “MXServer Template”.
    4. Hit OK and then Save to create the template.
  2. [WAS ISC] Create a UI JVM.
    1. From Servers > Application Servers hit New to create a new application server called (e.g.) MXUIServer1. Select ctgNode01 and hit Next.
    2. Select the “MXServer” template and then hit Next.
    3. Allow “Generate Unique Ports” to default (checked) and hit Next again.
    4. Then hit Finish on the Confirmation screen and Save.
    5. Select new JVM and expand Ports under Communications. Take note of the WC_defaulthost port number.
    6. Deploy your standard MAXIMO.EAR into your new JVM.
      Note: You will need to give the application a different name (e.g. “UIMAXIMO”) but all other settings can
      match the MXServer deployment.
    7. From Applications > Enterprise Applications click on your new application.
    8. Select Manage Modules and ensure all Modules in the list are associated with both your UI Cluster and your webserver, e.g. “webserver1”.
    9. Select Virtual hosts and ensure all Web modules are associated with the correct host for the UI, e.g. “maximo_host”.
  3. [WAS ISC] Create UI Cluster:
    1. From Servers > Clusters hit New and create a cluster called (e.g.) MXUICluster. Hit Next.
    2. On Create first cluster member screen select “Create the member by converting an existing application server” and select your new MXUIServer1 from the list. Hit Next.
    3. On Create additional cluster members screen set a Member name of (e.g.) MXUIServer2 on ctgNode01 and hit the Add Member button.
    4. Select the member you just added and then hit Next.
    5. Hit Finish and then click Save.
  4. [WAS ISC] Update the “maximo_host” Virtual Host for the UI Cluster.
    1. From Environment > Virtual Hosts click on “maximo_host”.
      Note: This is the default virtual host name – you may use something different in your environment. It can be checked by going to Virtual hosts from the enterprise application.
    2. Go to Host Aliases and click New.
    3. Set Host Name to “*” and Port to the first UI WC_defaulthost port you noted above.
    4. Click OK.
    5. Repeat from step 2 for each UI JVM you added above.
    6. When done click OK and then Save.
    7. From Environment > Update global web server plug-in configuration click OK.
  5. [WAS ISC] Create Cron/BROS JVM.
    1. From Servers > Application Servers hit New to create a new application server called (e.g.) MXBEServer1. Select ctgNode01 and hit Next.
    2. Select the “MXServer” template and then hit Next.
    3. Allow “Generate Unique Ports” to default (checked) and hit Next again.
    4. Then hit Finish on the Confirmation screen and Save.
    5. Select new JVM and expand Ports under Communications. Take note of the WC_defaulthost port number (it will probably be 9083).
    6. Deploy your standard MAXIMO.EAR into your new JVM.
      Note: You will need to give the application a different name (e.g. “BEMAXIMO”) but all other settings can match the UI deployment.
  6. [WAS ISC] Set JVM instance names for each new JVM so that we can specify unique properties for them.
    1. From Servers > Application Servers select a new JVM you created.
    2. Go to Java and Process Management > Process Definition > Java Virtual Machine > Custom Properties and click New.
    3. As the Name enter “mxe.name”
    4. As the value enter the name of the JVM, e.g. “MXUIServer1”.
      Note that this name can be anything but I find it least confusing and most flexible to set it the same as the application server name.
    5. Click OK and then Save.
    6. Repeat steps 1 – 5 for the other JVMs you created above.
  7. [WAS ISC] Enable JMSQSEQCONSUMER.SEQQOUT Cron Tasks instance for each JVM in the UI Cluster.
    1. From Servers > Application Servers select the first JVM in the UI Cluster, e.g. MXUIServer1.
    2. Go to Java and Process Management > Process Definition > Java Virtual Machine > Custom Properties and click New.
    3. As the Name enter “JMSQSEQCONSUMER.SEQQOUT”
    4. As the value enter “1”. This will ensure UI users are still able to manually export and import data using the integration facility.
    5. Click OK and then Save.
    6. Repeat steps 1 – 5 for the other JVM in the UI Cluster (e.g. “MXUIServer2”).
  8. All application servers and the webserver will need to be restarted for the changes above to take effect.
  9. [TPAE Cron Task Setup] Setup JMSQSEQCONSUMER.
    1. Select the SEQQOUT Cron Task Instance.
    2. Select the TARGETENABLED Parameter.
    3. Set the Value to 1.
    4. Hit Save.
    5. Select Reload Request from the Select Action menu.
  10. [TPAE System Properties] Set Global System Properties.
    1. Under Global Properties look for the “mxe.report.birt.disablequeuemanager ” property. If not found click New Row and set Property Name to “mxe.report.birt.disablequeuemanager ”.
    2. Set the Global Value to “1”.
    3. Ensure Live Refresh is ticked.
    4. Hit Save. This property stops scheduled reports from running in any JVM. We will re-enable it for the reporting JVM only.
    5. Next select the “mxe.report.birt.viewerurl” global property.
    6. Set the Global Value to “http://<hostname>.<fully-qualified-domain-name>:< WC_defaulthost>/”, e.g http://tpae.example.com:9083/
    7. Hit Save. This property will redirect all ad-hoc BIRT reports that users request to the correct JVM.
    8. Tick the check-box next to the modified properties and select Live Refresh from the Select Action menu.
    9. Click OK in the Live Refresh dialog..
  11. [TPAE System Properties] Set System Properties for UI Cluster.
    1. Under Instance Properties click New Row and set Property Name to “mxe.crontask.donotrun”.
    2. Set the Value to all cron task instances except "JMSQSEQCONSUMER.SEQQOUT" in a comma delimited list.
      Note: This field is 150 characters long and may require a DB Config to extend – see Hints section below for more details.
    3. Set the Server to your first JVM in your UI Cluster, e.g. MXUIServer1. This disables all crontasks from running in this JVM.
    4. Repeat steps 1 – 3 for the other JVM in your UI Cluster, e.g. MXUIServer2.
  12. [TPAE System Properties] Set System Properties for Cron/BROS JVM.
    1. Under Instance Properties click New Row and set Property Name to “mxe.report.birt.disablequeuemanager”.
    2. Set the Value to “0”.
    3. Set the Server to your Cron/Reporting JVM, e.g. MXBEServer1. This property re-enables scheduled reporting for this JVM only.
Hints:
  1. The following bash command (all on one line) will list all the currently active cron tasks from your JVM log and reformat them into the format required by the “mxe.crontask.donotrun” parameter, but of course you will still need to include specific instances of JMSQSEQCONSUMER other than SEQQOUT:
    cat SystemOut.log | grep "Cron task name" | awk '{print $23}' | awk -F . '{print $1"."}' | sort -u | tr '\n' ' ' | sed "s/\. /, /g"
    Your mileage may vary, and you may need to tweak the results from these commands.
  2. TPAE APAR IZ85980 (included in fix pack 7.1.1.7) may be required in your environment for ad-hoc reporting to correctly redirect the user to the TASK JVM.

[{"Product":{"code":"SSLKT6","label":"Maximo Asset Management"},"Business Unit":{"code":"BU005","label":"IoT"},"Component":"Not Applicable","Platform":[{"code":"PF025","label":"Platform Independent"}],"Version":"7.1;7.1.1;7.1.2;7.2;7.2.1;7.5;7.6","Edition":""},{"Product":{"code":"SS6HJK","label":"Tivoli Service Request Manager"},"Business Unit":{"code":"BU004","label":"Hybrid Cloud"},"Component":" ","Platform":[{"code":"","label":""}],"Version":"","Edition":""},{"Product":{"code":"SSKTXT","label":"Tivoli Change and Configuration Management Database"},"Business Unit":{"code":"BU004","label":"Hybrid Cloud"},"Component":" ","Platform":[{"code":"","label":""}],"Version":"","Edition":""},{"Product":{"code":"SSLKTY","label":"Tivoli Asset Management for IT"},"Business Unit":{"code":"BU004","label":"Hybrid Cloud"},"Component":" ","Platform":[{"code":"","label":""}],"Version":"","Edition":""}]

Document Information

Modified date:
17 June 2018

UID

swg21570544