Wednesday, 5 February 2020

Clustering with Maximo and WebSphere 8.5.5 - Part 2 - JMS Configuration

Clustering with Maximo and WebSphere 8.5.5 - Part 2 - JMS Configuration

Body

Previously I had posted a blog on creating a horizontal cluster across multiple nodes in WebSphere 8.5.5. If you haven't read that posting, please head on over Clustering with Maximo and WebSphere 8.5.5 - Part 1 - Configuration and take a look. Today we will be continuing forward with JMS configuration. I was going to do this series in 2 parts, but I will separate this out in 3 parts due to the length of the topic. 
In the original blog posting we configured the following.
mxcluster1
  • DMGR
  • IHS
  • Node 1 w/ MAXIMOUI1
mxcluster2
  • Node 2 w/ MAXIMOUI2, MAXIMOIF
This is a basic configuration, for larger companies, more UI's could be added, as well as clusters for CRON and BROS functionality.  In our example the MIF JVM will function as a CRON JVM as well.
Today we will be going over the JMS queue configuration.
JMS\Queue configuration
Before we get into the Maximo stuff, we will want to configure the queues to run on the correct JVMs. We want all incoming transactions to be processed by the MIF JVM and all outbound transaction to be processed by the MAXIMOUI.
  • SQOUT - MAXIMOUI
  • SQIN - MAXIMOIF
  • CQIN - MAXIMOIF
  • CQINERR - MAXIMOIF

1. To start off we will create our JDBC Provider, expand 'Resources' - > 'JDBC' and click on 'JDBC Provider'. Set the scope to your cell level as seen below then click on 'New'
image

2. On the next screen you will be prompted for your JDBC provider Configuration info. We are using DB2 for our Database, but you will want to choose the Database Driver and Type associated with the Database you are running Maximo on.
image

3. Next we want to point to the database driver for DB2, this is db2jcc.jar, for Oracle it would be oraclethin and SQL Server opta. In the example below I pointed the class path directly to the DB2 folder with the DB2 driver. This driver will be required to exist on each of the nodes in the cluster. Click Apply, Next and Finish.
image

4. Now that we have the driver configured that we will be using to connect to our database, we want to create two data sources, one for the UI and one for the MIF. Each of these data sources need to point to different unique schema's. We left our UI data source pointing to the Maximo schema and created a separate schema for the MIF data source. Our MIF data source will be called 'maximomif' with a JNDI name of 'jdbc/maximomif'. Click next.
image

5. On the next screen select the JDBC driver created in step two and click next
image

7. On the next step of creating the data source we will need to point to our database for 'maximomif' we created our new schema under the Maximo database, so this is where we are going to point the data source. We will point to the specific schema in the bus configuration.
image

8. We will skip the security configuration for now and setup our component-managed authentication alias in the next step. Click next and finish.
image


9. Once your 'maximomif' data source is created, click on it from the main data source page in WebSphere. Under related items click on 'JAAS- J2C authentication data.'
image


10. Click on new, give this an authentication alias of maximomif and enter in the userid and password that will be used to connect to the schema from your data source.Click Apply.
image

11. Head back to the 'maximomif' data source configuration page, at the bottom select your 'maximomif' alias in the 'Component-Managed authentication alias' drop down. Click Apply and save to the master configuration.
image

12. Repeat steps 4 to 11 for a data source with a name of 'maximoui' and JNDI name of jdbc/maximoui. Create the authentication alias called maximoui for a user that has access to the schema the UI data source will be connecting to ( in our case UI will be connecting to the maximo schema)
13. Now that our Data Sources are created we will want to create our buses. 'mifjmsbus' will run on the MAXIMOIF jvm and 'uijmsbus' will run on the UI Cluster. From the WebSphere Console expand 'Service Integration' - > 'Buses' and click on New. Enter in the first bus name 'mifjmsbus' and uncheck 'Bus Security'. Click Next and Finish. Repeat this step to create a bus for your user cluster called 'uijmsbus'

image

14. Once both of your buses are created click on the 'mifjmsbus' then click 'Bus members' then click 'Add'image

15. the 'mifjmsbus' will be be assigned the MAXIMOIF JVM as it's member.  Click Next and choose Data Store for your type of message store.
image

16. Enter your data source JNDI name for the MIF data source 'jdbc/maximomif'. Here is where we will be specifying the schema we created unique to the maximomif data source, ours is called 'maximomif' as well. Then select the the authentication alias created earlier and check the 'Create Tables' box. Click next and finish.
image

17. As you did in step 14 for the 'mifjmsbus', click on the 'uijmsbus' and then click on 'Bus members' then click 'Add'. Instead of choosing an individual server, we will choose the MAXCLUSTER we created for the UI.
image

18. Again choose data store as your message store and enter in the JNDI name, schema name and authentication alias for for your UI data source. Check create tables and click Next and Finish. image

19. Now we have our Data Sources and Buses configured for both the UI Cluster and MIF JVM's. We now need to create the destinations on each of the buses. Click on the 'mifjmsbus' once more under 'Destination Resources' choose 'Destinations' Click on new, choose 'Queue' then click Next.
image

20. Your first queue will be called 'cqindb' click Next
image

21. Assign this Queue to the MAXIMOIF bus member. Click Next and Finish. Now Repeat steps 19 - 21 for 'sqinbd' and 'cqindberr'.
image

22. Now click on the 'uijmsbus' once more under 'Destination Resources' choose 'Destinations' click on new, choose 'Queue' then click Next. We now want to create 'sqoutbd'
image

23. Assign this to the MAXCLUSTER bus member, click Next and Finish.
image

24.The queues are now created and assigned to the appropriate bus members. The next step is creating our connections factories. From the WebSphere console expand 'Resources' - > 'JMS'  and click on 'Queue Connection Factories'. Change the scope to the cell level and click on new, choose 'Default messaging provider' and click OK.  Give the connection factory the following properties and save the record.
Name: mifconfact
JNDI name: jms/maximo/int/cf/intcfmif
Bus Name: mifjmsbus
image

25. Now we need to repeat the last step for the UI connection factory with the following properties
Name: uiconfact
JNDI name: jms/maximo/int/cf/intcfui
Bus Name: uijmsbus
image

26. Now expand 'Resources' - > 'JMS' and click 'Queues'. Set the scope to the cell level and click new. The first queue we will create here is the CQINERR with the following properties.
Name: CQINERR
JNDI name: jms/maximo/int/queue/cqinerr
Bus name: mifjmsbus
Queue name: cqinbderr
image

27. Repeat step 26 for CQIN with the following properties
Name: CQIN
JNDI name: jms/maximo/int/queue/cqin
Bus name: mifjmsbus
Queue name: cqinbd
image

28. Repeat step 26 for SQIN with the following properties
Name: SQIN
JNDI name: jms/maximo/int/queue/sqin
Bus name: mifjmsbus
Queue name: sqinbd
image

29. Repeat step 26 for SQOUT for the 'uijmsbus'
Repeat step 26 for SQIN
Name: SQOUT
JNDI name: jms/maximo/int/queue/sqout
Bus name: uijms
Queue name: sqoutbd
image


30. Our last steps for the WebSphere JMS configuration is the Activation Specification for the CQIN and CQINERR. From the WebSphere Console expand 'Resource' - > 'JMS' and click on 'Activation specifications'. Set the scope to the cell level click on 'new' and choose 'Default messaging provider'. Create the first Activation Specification with the following properties.
Name: intjmsact
JNDI name: intjmsact
Destination Type: Queue
Destination JNDI name: jms/maximo/int/queues/cqin
Bus name: mifjmsbus

image

Now repeat the above steps for another Activation spec with the following properties.
Name: intjmsacterr
JNDI name: intjmsacterr
Destination Type: Queue
Destination JNDI name: jms/maximo/int/queues/cqinerr
Bus name: mifjmsbus

That should do it for today's post, at this point your cluster is configured with 2 UI JVM's and a separate MIF\Cron JVM. The JMS configuration is setup to run the sqout on the UI and the cqin,cqinerr and cqin on the MIF JVM. Part 3 will finish off the series with the Maximo file configuration,Virtual Host\Deployment of the ear files and separating the cron task\escalations to the MIF JVM.

Clustering with Maximo and WebSphere 8.5.5 - Part 1 - Configuration

Clustering with Maximo and WebSphere 8.5.5 - Part 1 - Configuration

Body

I'm back again, changing things up a bit this week from the usual LDAP blog.  Today we are going to talk about clustering and go into a detail step by step guide to configuring WebSphere 8.5.5 in a horizontal cluster. Unlike a vertical cluster which is built up on the same server, a horizontal cluster spans multiple servers/nodes to allow for another layer of fail over.
Clustering is appropriate for implementations with a large user load, as you add more users you may need to add additional JVM's to either the existing nodes or new nodes that are created.
In this scenario we are going to keep it simple, our configuration will use 2 nodes in a horizontal cluster, 1 UI on each node and a single integration\cron JVM on the second node.  Our servers are going to be 'mxcluster1' and 'mxcluster2' and will be set up as follows.
mxcluster1
  • DMGR
  • IHS
  • Node 1 w/ MAXIMOUI1
mxcluster2
  • Node 2 w/ MAXIMOUI2, MAXIMOIF
As we are using WebSphere IHS for load balancing we will only have one DMGR as a node can not be federated multiple times. If your using an external hardware or software to load balance instead of a single web server, you could have multiple DMGRs configured, one for each node. The load balancer would then balance to each of the web servers on the nodes and continue on from there.
There will be three parts to this first blog, if you already have WebSphere 8.5.5 installed on a single node and currently running Maximo skip to part 2 which is the configuration of the second node, part 3 will be creating the cluster from the admin console. Then there will be a follow up blog (Part 2) to go over the queue configuration as well as cron task configuration and deployment
Part 1 - Installing WebSphere 8.5.5 on mxcluster1
*Note* some panels have been excluded from the screenshots, these are license agreement panels or panels with no configuration.
1. We will start assuming the WebSphere Network Deployment and Supplemental packages have been downloaded and extracted. Once that is done before you start the install you must configure your repositories for the Installation Manager.
From the IBM Installation Manager Menu, choose file - > preferences then add the repository.config for each of the packages. Once done click OK.
image

After clicking OK choose Install from the ISM menu.
2. For the purpose of a basic cluster we will need the following packages selected from the install packages screen. Click next.
image

3.  On the next install packages screen you are prompted for installation paths for each of the components, each component needs to be changed individually by clicking on its package group name.
image

4. For the IHS configuration, choose the port you want to have configured for your web server. This is the port users will access Maximo on that load balances between the two nodes. For our scenario we will not be installing a web server on the second node. The log on account is the account used to start the HTTP Server service, this can be the logged on local system account, or an account specified. Click Next.
image

5. The IHS is the only initial configuration from the install. Once the install completes you will then need to create your Deployment Management and Application Server profiles. To do this click on the circle beside 'Profile Management Tool to create a profile' Then click finish.
image

6. Once the Profile Management Tool launches click on 'Create'. Your next screen will prompt you to choose your type of environment, as this server hosts our DMGR we want to choose the cell option. This will create our DMGR profile as well as a profile for the application server on this Node (DMGR01, APPSRV01). Click Next.

image

7. Choose Typical profile creation, if you wish to change the names of your profiles as well as location change advanced. For the purpose of this tutorial we are choosing typical. Click Next.
image

8. Now enable WebSphere security, this is the username and password you will use to access the WebSphere Administrative Console. If you uncheck the box you will be able to log in as a guest. Click next and create.
image

9. After your profile creation is finished you will be able see the profiles and their configuration in the WebSphere Customization Toolbox as seen below.
image

Now we have our main server configuration with a Deployment Manager, Application Server and an IHS\webserver.  Our next steps is to create another node on a separate box and federate that node to the Deployment Manager on 'mxcluster1'
Before continuing ensure you have configured your IHS Plugin, if you haven't please see one of my previous blogs for these steps.

Part 2 - Installing a single node for WebSphere 8.5.5 on mxcluster2
1. As we are just installing the node on mxcluster2 we can follow pretty much the same steps as above but with some minor changes. As we are not installing an IHS or webserver on this machine, we will not need the supplemental repositories added to our installation manager as we did previously. This can be removed so only the WebSphere Network Deployment repository exists.
After removing the supplemental repository click install and you will be brought to the screen where the Network Deployment is your only install option. Click Next.
image

2.  Continue through the install screen, specifying the path you wish to install WebSphere to then click install. As there is no IHS, no other configuration options are provided at this point. Once the install finishes you will again be prompted to create a profile. 'Click on the Profile Management to create a profile' again.
image

3.  This time our profile is going to be created a little differently, instead of choosing cell, we want to choose 'Custom profile'. The reason for this is because we will not be hosting a deployment manager on this machine, and a the node can only be federated to a single deployment manager, which we want to exist on mxcluster1. Click Next.
image

4. After clicking next in the screen above you will be brought to the federation screen. From here you will want to point to your deployment manager, in our case it's on mxcluster1. After entering the username and password and clicking next the wizard will create the custom profile and federate the node to the deployment manager. Click Next.
image

If you choose to federate the node after the profile is created you can use the addNode command from ibm\WebSphere\AppServer\profiles\bin
At this point both nodes will be accessible and we have the configuration stated below without our application servers.
mxcluster1
  • DMGR
  • IHS
  • Node 1
mxcluster2
  • Node 2
So lets move on to the next part, creating the cluster from the WebSphere console.

Part 3 - Creating the cluster in WebSphere.

1. From the WebSphere Administrative console, on the server were your deployment manager is, expand Clusters and click on 'WebSphere application server clusters'
image

2. From the 'WebSphere application server clusters' page click on new to create your new cluster.
image

3. Create your cluster, we have called ours MAXCLUSTER.
image
4. On this screen we will specify our first cluster member, MAXIMOUI1 in the node drop down both of our nodes will exist. MAXIMOU1 will exist on mxcluster1Node01, leave the rest of the fields defaulted, click next.

image

5. On the next screen you will add the rest of your cluster members. As the MIF server will exist outside the cluster ( we don't want users load balancing to it) we will create it separately. Type in MAXIMOUI2, select mxcluster2Node01 from the node drop down this time and click add member then next.
image

6. Click back to Application servers now and you will see both of our UI servers, one exists on each node. After deploying the ear to the cluster the web server will load balance users between the two servers. Now we will add you Integration server, click on 'New'
image

7. Select mxcluster2Node01 from the drop down and enter the server name MAXIMOIF, click next through the screens choosing the defaults to create the Integration Framework server.
image
Now the configuration of your cluster from a WebSphere perspective is done as we have multiple UI load balancing over multiple nodes.
mxcluster1
  • DMGR
  • IHS
  • Node 1 w/ MAXIMOUI1
mxcluster2
  • Node 2 w/ MAXIMOUI2, MAXIMOIF
image

In Part 2 of this series (which should be posted in one week's time), we will discuss the queue creation, building multiple maximo ears, deployment of the application to the cluster and separating out crontasks to run only on a specific server. If you have any questions related to the topic, or on the configuration above please comment below.

Installing an interim fix in Maximo 7.6.x

Step by steps instructions to install a Maximo 7.6.x interim fix

Body

Download the interim fix from Fix Central.

Shut down the Maximo application server, for example, MXServer.*

Run IBM Installation Manager.
        Windows: Start > All Programs > IBM Installation Manager > IBM Installation Manager (or C:\Program Files\IBM\Installation Manager\eclipse\IBMIM.exe)
Select Installation Manager
        UNIX: Start a Terminal window in /opt/IBM/InstallationManager/eclipse directory, then ./IBMIM

Installation Manager directory
Installation Manager main window
From the Installation Manager main window, select File > Preferences...
Select Preferences

   Preferences pane
Click Add Repository.
Add Repository dialog
Click Browse. Navigate to the location of the interim fix compressed file, and click Open.
Browse to interim fix location
 
Check repository
In the Add Repositories dialog box, click Apply, and then click OK.
At the Installation Manager main window, click Update.
Update Icon
In Update Packages, select the package group to update: in this example, IBM Tivoli's process automation suite.
Update Packages
Click Next.
Update Packages listing
Follow the onscreen instructions to complete the installation. The following images show progress bars leading to the Update Packages screen.
 
  Progress Information
Update packages summary
A sample Progress bar:Sample progress bar
  The packages are updated.
When the installation is complete, exit IBM Installation Manager.

Installation Manager deployed all of the files for the interim fix. Following the readme file in the interim fix, use either Tivoli's process automation suite configuration tool (ConfigUI) tool to update the database and rebuild and redeploy the ear files, or do these tasks manually. The example here uses the ConfigUI tool.

Again, following the interim fix readme file, complete all required manual steps before updating the database and rebuilding and redeploying the application EAR files. The Readme.zip archive includes a spreadsheet called ListofAPARs.xslx. In that file, in the Manual Changes column, locate Required Manual Steps. After completing required changes, launch the ConfigUI tool. (Windows: ConfigUI.exe; Linux: ./ConfigUI)

Next, start the configuration program:
Windows: Use Start > Programs > Tivoli's process automation suite > Configuration Program (default location C:\IBM\SMP\ConfigTool\ConfigUI.exe)
UNIX: In the <installLocation>/ConfigTool directory run ConfigUI, for example, /opt/IBM/SMP/ConfigTool/ConfigUI

Config UI - Update Database and Build and Deploy Application EAR Files
In the Deployment Operations pane, click Update Database, Build and Deploy Application EAR Files. Click Finish.
Update summary
Click Next.
Apply Deployment Operations

Click Finish. The Config tool will execute all selected tasks. Take note of status and error messages scrolling at the bottom of the Configuration View Console pane.
Apply Deployment Operation Tasks completed
The Config tool has completed its tasks. It has updated the database, rebuilt and redeployed the ear files, and started the Maximo application server. Log in to Maximo and check System Information:
System Information

*If you do not shut it down, the Configuration Tool might display an error that the process automation engine (=Maximo application server) is running and that it must be shut down manually:
Configuration and Deployment Error
Click OK.
Error message CTGIN5080E
To resolve this error, log in to the Application Server console and stop the Maximo server.

Maximo Asset Management 7.6.1.0 interim fix 008 released

As with all interim fixes, Maximo Asset Management 7.6.1.0 interim fix 008 cumulative. It includes all fixes contained in earlier interim fixes, with the addition of new fixes listed in this post.

Body

Tivoli's process automation engine 7.6.1.0 interim fix 008 is available at Fix Central.
APAR
Application Name
Description
IJ10617
Start Center
If you add the Maximo login URL to an Excel spreadsheet, if you select the link more than once, an error occurs when you open the Start Center.
IJ14027
Graphical Assignment
If you use interim fix 006 or earlier for IBM Maximo Asset Management version of 7.6.1, in the Graphical Assignment application, you cannot schedule an assignment from an uninterruptible WO during a non-working time.
IJ12619
Launch in Context
If you use Internet Explorer version 11, you cannot use any options that are built from the launch in context feature if the option opens a new tab or screen in the current browser.
IJ14113
Locations
In any application, if a value is already specified in the Location field and you select Go to > Locations, when you select Open Drilldown > Show Path to Top and open a parent location in the hierarchy path, a new window opens that does not have a location specified in it.
IJ14183
Assets
In the Assets application, when using web maps, the selection tool shows linked records as unlinked.
IJ10577
Cron Task Setup
In the Cron Task Setup application, when you sync existing phone records, the task tries to insert a new phone instead of updating an existing phone record, and an error occurs.
IJ15103
Graphical Assignment
In the Graphical Assignment application, if the server time zone is different from the user time zone, the date validation that is in the Assignment view can be incorrect.
IJ14767
Graphical Assignment
In the Graphical Assignment application, if you run optimization for a spatial scheduling scenario that is for a work order and select the Include Travel Time in Total Time checkbox, the optimization engine does not optimize the schedule to avoid unnecessary travel time.
IJ10149
Graphical Assignment
In the Graphical Assignment application, when a work order has an appointment required option set to true and you used the right click to lock the assignment, you can move the record to a new date.
IJ14256
Graphical Assignment
In the Graphical Assignment application, when publishing a Spatial scenario, you receive the error that the record has been updated by another user. The scenario is not published and the work orders are not committed.
IJ12796
Graphical Assignment
In the Graphical Assignment application, when you create an assignment the week before it will be used, the next Monday, you can no longer open the assignment.
IJ14108
Graphical Assignment
In the Graphical Assignment application, you cannot drag and drop scenarios in the Dispatch view.
IJ14056
Graphical Scheduling
In the Graphical Scheduling application, if you right-click on a work order and in the menu, select Change Status to change the work order status, the menu that appears when you right-click on a work order does not appear again.
IJ14162
Graphical Scheduling
In the Graphical Scheduling application, on the Graphical View tab, if you right-click on a work bar in the Gantt chart and then select Move to Day, when you select a date, the Gantt chart changes to another, earlier date period.
IJ14054
Graphical Scheduling
In the Graphical Scheduling application, when you create a new schedule, on the More Information tab, the Scenario Allowed checkbox is automatically unchecked if you update the record.
IJ08983
Purchase Orders
In the Purchase Orders application, when a rotating item is listed on a purchase order on multiple lines and a full receipt is done, the inventory balance is not always updated correctly.
IJ12671
Time Zone Rules
In the Time Zone Rules application, the time zone conversion is completed in the wrong direction.
IJ14583
Work Order Tracking
In the Work Order Tracking application, if you use a time zone that is earlier than the time zone for your server, and you close a completed work order, the start time and finish time for the work order are not converted to the server's time zone.
IJ12938
Work Order Tracking
In the Work Order Tracking application, in the Asset field, if you select Open Map, the map does not load if the Asset field is empty.
IJ13065
System UI Security Scans
Security defect; User enumeration. CVE-2019-4048; CVSS Base Score: 2.1; CVSS Temporal Score: See https://exchange.xforce.ibmcloud.com/vulnerabilities/156311 for the current score.
IJ10788
System User Interface
When a look up dialog box is displayed, some read-only fields are editable.
IJ12929
UpdateDB Utitlity
When upgrading to Maximo Asset Management version 7.6.0.9 and Maximo Spatial Asset Management version 7.6.0.3, the upgrade fails.
IJ12949
System User Interface
When you use IBM Maximo Asset Management version 7.6.1 and the IoT18 skin, if you make a field read-only, the field color does not change to grey.
IJ13038
All Applications
When you use the IoT18 skin, if you change the size property for a text box to larger than 34, the text box size does not increase.
IJ12761
System User Interface
In the Start Center, the Inbox/Assignments portlet includes wrapped lines of text. To edit how text is wrapped in the Inbox/Assignments portlet, you can now update the System property webclient.portletwraplength. If the value is -1, the text never wraps. If the value is 0, the text wraps at an undefined length. If the value is 1 or higher, the text wraps at the number of characters that the value indicates.
IJ12950
System Object
A number of Maximo Asset Management token licensing defects exist.
IBM Control Desk 7.6.1.0 and 7.6.1.1 use Tivoli's process automation engine 7.6.1.0. This interim fix can be applied to Control Desk 7.6.1.0 and 7.6.1.1.
For product compatibility, see Control Desk, Maximo and TPAE version compatibility.

IBM Readme for IBM Maximo Asset Management 7.6.1.3 Fix Pack

  Fix Readme Abstract This fix pack updates IBM® Maximo® Asset Management version 7.6.1, 7.6.1.1, and 7.6.1.2 Content IBM Maximo Asset Manag...