How to setup 17.1 service catalog clustering nodes

Document ID : KB000113780
Last Modified Date : 14/09/2018
Show Technical Document Details
Introduction:
Service Catalog uses Tomcat Apache for clustering  .   You   need to “configure” catalog to use the underline  tomcat to do clustering work accordingly  .  
 In 17.1 ,   both Tomcat and Java versions are updated to use tomcat 8 and Java 8 .     Comparing to the old tomcat version ,  very  small changes  relating to cluster section in server.xml need to be paid attention to.  .   
Background:
set up service catalog clustering nodes  in 17.1 
Environment:
Service Catalog 17.1 
Instructions:
A.   Setup catalog clustering : 

1.   The following document has the detail information about how to setup catalog clustering
https://docops.ca.com/ca-service-management/17-1/en/installing/post-installation-tasks/ca-service-catalog-post-installation-tasks/ca-service-catalog-clustering

2.  Please pay attention to the information in the following page :
  https://docops.ca.com/ca-service-management/17-1/en/installing/post-installation-tasks/ca-service-catalog-post-installation-tasks/ca-service-catalog-clustering/horizontal-clustering 

Due to the web page document formatting issue ,   the information in Step 3   are  confusing  and not very clear  ,  it should be 

-------------------------------------------
     3 . After uncommenting  the cluster tags , ensure to make these configuration changes to support CA Service Catalog clustering: 
a. 
 change :
          
            <Interceptor className="org.apache.catalina.tribes.group.interceptors.MessageDispatch15Interceptor"/>
 to :
            <Interceptor className="org.apache.catalina.tribes.group.interceptors.MessageDispatchInterceptor "/>
 
b.   if there is line  <ClusterListener className="org.apache.catalina.ha.session.JvmRouteSessionIDBinderListener"/>   in Cluster tag section ,  it needs to be   removed .  
 
Note :  17.1 catalog is using Tomcat Apache 8 .   With  Tomcat Apache 8 ,  "class org.apache.catalina.tribes.group.interceptors.MessageDispatch15Interceptor"   is changed to org.apache.catalina.tribes.group.interceptors.MessageDispatchInterceptor and   org.apache.catalina.ha.session.JvmRouteSessionIDBinderListener is removed . 

----------------------------------------



B.   After catalog nodes are setup for clustering ,  you can do the following  on all clustered nodes  to validate  it  :

1.  make a backup copy of log4.xml under USM_HOME\view\conf\

2.   Edit log4j.xml  .   locate  the following section in log4.xml 

                      <logger name="org.apache.catalina.session" additivity="false">
                         <level value="INFO" />
                          <appender-ref ref="tomcat_view" />
                       </logger>

After the logger section above ,  add  the following logger section :

                       <logger name="org.apache.catalina.cluster" additivity="false">
                            <level value="TRACE" />
                             <appender-ref ref="tomcat_view" />
                       </logger>
          

3.  save log4j.xml 

4.  recycling catalog service 

5.  If catalog's tomcat clustering setup properly ,  you will see the logging messages like the following  in ServiceCatalog.log (  ServiceCatalog.log is under USM_HOME\logs\view\ folder )  :
------------
...
INFO   | jvm 1    | 2018/09/13 14:25:21 | Sep 13, 2018 2:25:21 PM org.apache.catalina.ha.tcp.SimpleTcpCluster memberAdded
INFO   | jvm 1    | 2018/09/13 14:25:21 | INFO: Replication member added:org.apache.catalina.tribes.membership.MemberImpl[tcp://{10, 162, 7, 4}:4000,{10, 162, 7, 4},4000, alive=1025, securePort=-1, UDP Port=-1, id={-120 116 59 -100 -123 -34 67 9 -68 59 -109 2 -88 -87 121 -29 }, payload={}, command={}, domain={}, ]
INFO   | jvm 1    | 2018/09/13 14:37:30 | Sep 13, 2018 2:37:29 PM org.apache.catalina.ha.tcp.SimpleTcpCluster memberAdded
INFO   | jvm 1    | 2018/09/13 14:37:30 | INFO: Replication member added:org.apache.catalina.tribes.membership.MemberImpl[tcp://{10, 162, 7, 144}:4001,{10, 162, 7, 144},4001, alive=1024, securePort=-1, UDP Port=-1, id={77 -14 -120 112 -89 26 66 -75 -119 -76 -43 85 59 86 124 -31 }, payload={}, command={}, domain={}, ]


...
-------------



 
Additional Information:
https://tomcat.apache.org/migration-8.html
"The addition of the HttpServletRequest.changeSessionId() method in Servlet 3.1 made the org.apache.catalina.ha.session.JvmRouteSessionIDBinderListener unnecessary so it has been removed. It must be removed from cluster configurations when upgrading to Tomcat 8."
 
https://tomcat.apache.org/tomcat-8.5-doc/cluster-howto.html
"We can see that class org.apache.catalina.tribes.group.interceptors.MessageDispatch15Interceptor is changed to org.apache.catalina.tribes.group.interceptors.MessageDispatchInterceptor and org.apache.catalina.ha.session.JvmRouteSessionIDBinderListener is removed."