Load Balancing with Alkacon Clustering OCEE

From OpenCms Wiki
Revision as of 15:12, 20 April 2009 by Snatcho (Talk | contribs)
Jump to: navigation, search

Contents

Overview

Alkacon sells a non open-source module for OpenCMS that allows you to cluster multiple application servers running on one database without having to worry about the problems of caching and publishing data between the 2+ nodes.

Setup

The setup for the OCEE Cluster Package by Alkacon is of course well documented in the distribution Alkacon provides.

In basic lines, for an existing installation it consists in:

  1. Importing the required ocee modules.
  2. Copying sample new configuration files into /WEB-INF/config and configuring them (depending on your requirements, but at least ocee-license.xml)
  3. Editing existing configuration files to use the righ Alkacon OCEE classes (opencms.xml, opencms-system.xml, opencms.properties)

(Follow same steps for the second server of the cluster)

Issues

This section shows known issues getting OCEE to work. It is divided into application servers considering issues in one AS may not be reproducible in a different one.

JBoss

Description

When installing on JBoss Application Server, you may find an issue that avoids OCEE from getting servers status and therefore making the servers from the cluster seem not available. Symptoms are:

  • Active workplace server reports as unavailable (that means it can't reach itself)
  • Non-active workplace servers indicate they have been disabled due to the use of the same MAC address (null)

Alternatively, you may find in the logfiles something similar to

Error while getting instance information org.opencms.main.OpenCms.getSystemInfo().getServerName()
bsh.InterpreterError: Error loading classmanager: java.lang.ClassCastException:
bsh.classpath.ClassManagerImpl
        at bsh.BshClassManager.createClassManager(Unknown Source)
        at bsh.Interpreter.<init>(Unknown Source)
        at bsh.Interpreter.<init>(Unknown Source)
        at bsh.Interpreter.<init>(Unknown Source)
        at org.opencms.ocee.cluster.CmsClusterEventHandler.handleClusterGetInstanceInfo(CmsClusterEventHandler.java:527)
        at org.opencms.ocee.cluster.CmsClusterEventHandler.cmsEvent(CmsClusterEventHandler.java:220)
        at org.opencms.main.CmsEventManager.fireEventHandler(CmsEventManager.java:203)
        at org.opencms.main.CmsEventManager.fireEvent(CmsEventManager.java:127)
        at org.opencms.main.CmsEventManager.fireEvent(CmsEventManager.java:148)
        at org.opencms.main.OpenCms.fireCmsEvent(OpenCms.java:169)
        at org.opencms.ocee.cluster.CmsClusterRequestHandler.handle(CmsClusterRequestHandler.java:355)
 at org.opencms.main.OpenCmsServlet.invokeHandler(OpenCmsServlet.java:269)
        at org.opencms.main.OpenCmsServlet.doGet(OpenCmsServlet.java:149)
        at org.opencms.main.OpenCmsServlet.doPost(OpenCmsServlet.java:164)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:710)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
        at org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:96)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
        at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:230)
        at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)
        at org.jboss.web.tomcat.security.SecurityAssociationValve.invoke(SecurityAssociationValve.java:182)
        at org.jboss.web.tomcat.security.JaccContextValve.invoke(JaccContextValve.java:84)
        at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
        at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
        at org.jboss.web.tomcat.service.jca.CachedConnectionValve.invoke(CachedConnectionValve.java:157)
        at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
        at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:262)
        at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844)
        at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)
        at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:446)
        at java.lang.Thread.run(Thread.java:595)

Solution

As reported by Alkacon OpenCms Support Team, JBoss may provide versions of BeanShell jars that collide with the provided (as for version 2.1) bsh-core-2.0b4.jar. Solution is to remove (or safely rename without a .jar extension) the mentioned bsh-core-2.0b4.jar file and restarting the servers.

Pricing

At the moment of this document (April 2009), the pricing for Alkacon's OCEE Package is as follows:

TypePrice with basic supportPrice with medium supportPrice with advanced support*
Alkacon OCEE Server Enhancement Package1.500€2.500€3.500€
Alkacon OCEE Cluster Package2.500€3.500€6.500€

For the best reference of what each type of OCEE package includes, and what each support includes, visit Alkacon's OCEE Page (see #External Links) or download this file.

External Links

Alkacon's OCEE Page

Personal tools
Namespaces
Variants
Actions
Navigation
Toolbox