Setting up BMC Remedy Smart Reporting as a cluster and onboard users
This topic describes the procedure to set up BMC Remedy Smart Reporting as a cluster.
Consider the following points for installing BMC Remedy Smart Reporting in a clustered environment:
- Install primary BMC Remedy Smart Reporting server with a new or existing database.
- Install Secondary server with the database used by the primary node.
If you have already performed the Onboarding process before the installation of the secondary server, then do not install the secondary node with the same database. Instead, create a blank or dummy database for the secondary server installation. After the successful installation, change the secondary node database details. For more information, see How To Change Smart Reporting Repository Database HostName On Existing Deployment.
The installation may overwrite the existing tables. Hence, BMC recommends installing the secondary node with a dummy database. If it is not possible to create a dummy database, then you can clone the primary server.
Click to view a quick video for an example on setting up BMC Remedy Smart Reporting as a cluster.
To set up BMC Remedy Smart Reporting as a cluster (Tomcat only), perform the following steps:
Note
Before you configure the cluster, ensure that all the severs in cluster are in same time zone and are in sync. Also, ensure that BMC Remedy Smart Reporting is installed on all the nodes pointing to primary node repository.
Install the BMC Remedy Smart Reporting on each node.
On each node update the web.xml file located at <SmartReportingInstallDir>/appserver/webapps/ROOT/WEB-INF:
Update and add the following:
<!-- Cluster Management --> <servlet> <servlet-name>ClusterManagement</servlet-name> <servlet-class>com.hof.mi.servlet.ClusterManagement</servlet-class> <init-param> <param-name>ClusterType</param-name> <param-value>DYNAMIC</param-value> </init-param> <init-param> <param-name>SerialiseWebserviceSessions</param-name> <param-value>true</param-value> </init-param> <init-param> <param-name>CheckSumRows</param-name> <param-value>true</param-value> </init-param> <init-param> <param-name>EncryptSessionId</param-name> <param-value>true</param-value> </init-param> <init-param> <param-name>EncryptSessionData</param-name> <param-value>true</param-value> </init-param> <init-param> <param-name>AutoTaskDelegation</param-name> <param-value>true</param-value> </init-param> <load-on-startup>11</load-on-startup> </servlet>
If you are upgrading to Remedy Smart Reporting version 19.02, then in the web.xml file, under
Cluster Management
, add the following code:<init-param> <param-name>TaskTypes</param-name> <param-value> REPORT_BROADCAST_BROADCASTTASK, FILTER_CACHE, REPORT_BROADCAST_MIREPORTTASK, SOURCE_FILTER_REFRESH, SOURCE_FILTER_UPDATE_REMINDER, ORGREF_CODE_REFRESH, THIRD_PARTY_AUTORUN </param-value> </init-param> <init-param> <param-name>MaxParallelTaskCounts</param-name> <param-value> 5, 5, 5, 5, 5, 5, 5 </param-value> </init-param>
On the MIStartup Servlet block, update the following:
<init-param> <param-name>DisableTaskScheduler</param-name> <param-value>TRUE</param-value> </init-param>
Note
In a clustered environment, each Smart Reporting node is configured by default to run background tasks that also includes publishing reports. This could result in sending the reports multiple times. Thus, it is recommended that you enable the background tasks on only one node. You can do this by changing the param-value to FALSE and save the web.xml file. Additionally, if the
AutoTaskDelegation
parameter is set to true, the background tasks are automatically delegated to the next available node if the server goes down.Comment the following:
<servlet> <servlet-name>SystemTaskManager</servlet-name> <servlet-class>com.hof.servlet.SystemTaskManager</servlet-class> <load-on-startup>8</load-on-startup> </servlet>
Add <distributable/> tag
The following is a sample snippet:<web-app> <distributable/> <!-- System Event and Debug classes --> <listener> <listener-class>com.hof.servlet.SysSessionListener</listener-class> </listener>
Perform this step if HTTPS traffic is offloaded at Load Balancer and Smart Reporting is configured to run on HTTP:
In the
server.xml
file (Tomcat configuration file), set the HTTP Connector proxyPort and scheme to the values displayed in the following code snippet. The path ofserver.xml
file is<AR Installation Path>\SmartReporting\appserver\conf\server.xml
<Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" proxyPort="443" scheme="https" disableUploadTimeout="true"/>
proxyPort is the port of the LB (F5)
Add the following lines of code to the catalina.sh file on a Linux system or the catalina.bat file on a Windows system:
JAVA_OPTS="$JAVA_OPTS -Djava.net.preferIPv4Stack=true" JAVA_OPTS="$JAVA_OPTS -Djgroups.udp.mcast_addr=<multi-cast IP Address>" JAVA_OPTS="$JAVA_OPTS -Djgroups.udp.mcast_port=<multi-cast Port>" Example: JAVA_OPTS="$JAVA_OPTS -Djava.net.preferIPv4Stack=true" JAVA_OPTS="$JAVA_OPTS -Djgroups.udp.mcast_addr=228.0.0.5" JAVA_OPTS="$JAVA_OPTS -Djgroups.udp.mcast_port=5555"
Note
Ensure that the
multi-cast IP Address
that you specify is available and themulti-cast Port
islistening
.
After the cluster is set up, on board the tenant.
For more information, see Onboarding users and importing content in BMC Remedy Smart Reporting.
Comments
Reading the note at 3.b but got confused which param to edit actually. Thanks.
Hello,
In the web.xml file update the value for
DisableTaskScheduler
parameter to True in the MIStartup Servlet block.Hope that helps!
Thanks,
Prachi
These instructions appear to be written for an installation that uses the tomcat bundled with SmartReporting running on Linux (assumed because of the catalina.sh instead of .bat file). Our F5 team requires our own tomcat so we can control the context part of the URL, which is what the F5 uses to route requests to our SmartReporting cluster. On our Windows VM, using our own tomcat, it's not clear where these changes should be made. I've got a couple of web.xml's, but no WEB-INF in the reporting application. Have any guidance for users trying to cluster SmartReporting using a non-bundled tomcat?
Hello Doug,
Sorry for responding late. I will check this with the SME and will inform you.
Regards,
Anagha
Hello Doug,
Yes, this document is specific to bundled Tomcat. We are working on updating the same. Following are the paths for correct paths for the web.xml and server.xml files.
Web.xml:
<Tomcat Directory>\webapps\SmartReporting\WEB-INF
Server.xml :
<Tomcat Directory>\conf
Catalina.bat :
<Tomcat Directory>\bin
Regards,
Anagha
Hello. Could you please give some more information about point "f"?
In a typical configuration with two Smart Reporting instances in a cluster under a load balancer, what's the multicast IP address and port to be used for each of the nodes?
Thanks
Hello Daniele,
Sorry for the delay in responding.
There is a standard range of Mcast address and ports that are not generalized. However, the only condition is that the IP and port should not be in use for other processes. In a typical scenario, if you have one Smart Reporting cluster with two nodes, then the IP and port should be same for that cluster. Using this IP and port, the SR nodes communicate with each other, So this IP and port is cluster specific and not node specific.
Thanks and regards,
Surabhee
Hi,
Regarding point c. - do we comment the SystemTask block on all servers in the cluster or all but 1 ? It is not clear?
c.Comment the following:
SystemTaskManager
com.hof.servlet.SystemTaskManager
8
Hello Allen,
I will check this with the SME and will respond to you.
Regards,
Anagha
Hi Allen,
You need to comment it only for one node.
Regards,
Vrishali
Please can you also document on how to disable cluster configuration?
Hello Andreas,
To disable the cluster configuration, comment the Cluster Management tag (Step. 3) from the web.xml file and restart the tomcat server.
Thanks & Regards,
Vrishali
For Step F - Add the following lines of code to the catalina.sh file:
JAVA_OPTS="$JAVA_OPTS -Djava.net.preferIPv4Stack=true" JAVA_OPTS="$JAVA_OPTS -Djgroups.udp.mcast_addr=" JAVA_OPTS="$JAVA_OPTS -Djgroups.udp.mcast_port=" Example: JAVA_OPTS="$JAVA_OPTS -Djava.net.preferIPv4Stack=true" JAVA_OPTS="$JAVA_OPTS -Djgroups.udp.mcast_addr=228.0.0.5" JAVA_OPTS="$JAVA_OPTS -Djgroups.udp.mcast_port=5555"
What do and = refer to, and where do we find these values? Do we use the values provided in the example or are they unique to our installation?
Hello Christopher,
I will check your query with the SME and will write back to you.
Regards,
Anagha
I have questions regarding the inputs, as i dont believe they should be added to the end. The video doesn't show this information.:
A) does it matter where in the file I put this update B) If this is not in the file do we need add it in C) my web.xml has this set already D) where in the file should this be added e) where should this be added in the file, does it matter where it is added
regard to the catalina.sh f) where abouts in the file should this be added
Hi Sarah,
I will check with the SMEs and get back to you on this.
Regards,
Vrishali
Hello Sarah,
In the web.xml file, you can add the xml tags anywhere. However, it is recommended that you add the tags at the bottom of the file. For specific tags, we have mentioned the servlet names where the tags need to be added/updated. For eg, see Step 3b.
Hope this helps.
Regards,
Vrishali
Hello,
I'd like to see an example that how I setting a LB for smart reporting cluster, I didn't find anywhere.
Regards,
Hello Martins, I will check with the SMEs if we can come up with an example and get back to you soon.
Regards, Vrishali
Hello Marcel, I checked this with my SMEs. Load balancer is not a part of application clustering. Since it is more of an infrastructure level configuration, it is not covered under product documentation.
Regards, Vrishali