<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

<!--
  Licensed to the Apache Software Foundation (ASF) under one
  or more contributor license agreements.  See the NOTICE file
  distributed with this work for additional information
  regarding copyright ownership.  The ASF licenses this file
  to you under the Apache License, Version 2.0 (the
  "License"); you may not use this file except in compliance
  with the License.  You may obtain a copy of the License at
  
      http://www.apache.org/licenses/LICENSE-2.0
          
  Unless required by applicable law or agreed to in writing,
  software distributed under the License is distributed on an
  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
  KIND, either express or implied.  See the License for the
  specific language governing permissions and limitations
  under the License.
-->


<!-- Content Stylesheet for Site -->

        
<!-- start the processing -->
    <!-- ====================================================================== -->
    <!-- GENERATED FILE, DO NOT EDIT, EDIT THE XML FILE IN xdocs INSTEAD! -->
    <!-- Main Page Section -->
    <!-- ====================================================================== -->
    <html>
        <head>
            <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>

                                                    <meta name="author" content="
			OpenMeetings Team
		">
            <meta name="email" content="solomax@apache.org">
            
           
                                    
                        
            <title>Apache OpenMeetings - Clustering</title>
            <link rel="stylesheet" type="text/css" href="css/openmeetings.css">
            <link rel="stylesheet" type="text/css" href="css/jquery-ui-1.10.4.custom.css">
            <link rel="stylesheet" type="text/css" href="css/coin-slider-styles.css">
            <link rel="stylesheet" type="text/css" href="css/colorbox.css" />
            
			<!-- Add jQuery library -->
			<script type="text/javascript" src="js/jquery-1.11.0.min.js"></script>
		
			<!-- Add coinslider plugins -->
			<script type="text/javascript" src="js/coin-slider.min.js"></script>
			
			<!-- Add colorbox plugin -->
			<script type="text/javascript" src="js/jquery.colorbox.js"></script>
		
			<script src="js/jquery-ui-1.10.4.custom.min.js"></script>
			
			<script type="text/javascript">
				$(function() {
					$("#accordion").accordion({
						heightStyle: 'content',
						icons: false
					});
					var idx = location.href.lastIndexOf('/');
					if (idx > -1) {
						var url = '.' + location.href.substring(idx);
						var a = $('#accordion a[href="' + url + '"]');
						a.addClass('active');
						var id = a.parent()[0].id;
						var idx1 = id.lastIndexOf('-');
						if (idx1 > -1) {
							$("#accordion").accordion("option", "active", parseInt(id.substring(idx1 + 1)));
						} 
					}
					$('.fancybox-buttons').colorbox({rel:'fancybox-buttons',width:"75%", height:"75%"});
					$('#coin-slider').coinslider({ width: 640,height: 500, delay: 4000  });					
				});
			</script>
			
			<style type="text/css">
				.fancybox-custom .fancybox-outer {
					box-shadow: 0 0 50px #222;
				}
			</style>
        </head>

        <body bgcolor="#ffffff" text="#000000" link="#123465" vlink="#123465" alink="#000000">  
        	<div class="mainbody" style="min-width: 960px; width: 94%;">
        	<div class="superbody" style="width: 100%;">
            <table border="0" width="100%" cellspacing="0">
                <!-- TOP IMAGE -->
                <tr>
                    <td align="left">
<a href="http://openmeetings.apache.org/"><img src="./images/logo-2.jpg" alt="Apache OpenMeetings" border="0"/></a>
</td>
                    <td width="80%" align="right" valign="top" >
	<a href="demo.html">Demo</a>
	<span>|</span> 
	<a href="downloads.html" target="_PARENT">Download</a>
	<span>|</span> 
	<a href="installation.html" target="_PARENT">Installation</a>
	<span>|</span> 
	<a href="https://cwiki.apache.org/confluence/display/OPENMEETINGS" target="_BLANK">Wiki</a>
	<span>&nbsp;</span>
</td>
                </tr>
            </table>
            <table border="0" width="100%" cellspacing="4">
                <tr><td colspan="2">
                    <hr noshade="noshade" size="1"/>
                </td></tr>

                <tr>
                    <!-- LEFT SIDE NAVIGATION -->
                    <td width="20%" valign="top" nowrap="nowrap">

                    <!-- special ACon Logo - leave here for next time
                    <a href="http://apachecon.com/2005/US/">
                        <img src="http://apache.org/images/ac2005us_blue_125x125.jpg" height="125"
                             width="125" border="0" alt="ApacheCon US 2005" />
                    </a>  -->

                   <!-- regular menu -->

                    
    <!-- ============================================================ -->
    <div id="accordion" style="width: 100%">
    
            	<h3><a href="#General">General</a></h3>
    	<div>
	        	            	            	    <a href="./index.html">Home</a>
<br/>
	        		        	            	            	    <a href="./license.html">License</a>
<br/>
	        		        	            	            	    <a href="http://www.apache.org/">ASF</a>
<br/>
	        		        	            	            	    <a href="./downloads.html">Downloads</a>
<br/>
	        		        	            	            	    <a href="./commercial-support.html">Commercial Support</a>
<br/>
	        		            	</div>
        	<h3><a href="#InstallationandUpgrade">Installation and Upgrade</a></h3>
    	<div>
	        	            	            	    <a href="./installation.html">Installation</a>
<br/>
	        		        	            	            	    <a href="./Upgrade.html">Upgrade</a>
<br/>
	        		        	            	            	    <a href="https://cwiki.apache.org/confluence/display/OPENMEETINGS/Tutorials+for+installing+OpenMeetings+and+Tools">Tutorials</a>
<br/>
	        		        	            	            	    <a href="./CommandLineAdmin.html">Command Line Admin</a>
<br/>
	        		            	</div>
        	<h3><a href="#Community">Community</a></h3>
    	<div>
	        	            	            	    <a href="./get-involved.html">Get Involved</a>
<br/>
	        		        	            	            	    <a href="./team-list.html">Committers</a>
<br/>
	        		        	            	            	    <a href="./mail-lists.html">Mailing Lists</a>
<br/>
	        		        	            	            	    <a href="http://cwiki.apache.org/confluence/display/OPENMEETINGS/">Wiki</a>
<br/>
	        		            	</div>
        	<h3><a href="#Development">Development</a></h3>
    	<div>
	        	            	            	    <a href="./svn.html">Source Code</a>
<br/>
	        		        	            	            	    <a href="http://issues.apache.org/jira/browse/OPENMEETINGS">Bugs / Issues (JIRA)</a>
<br/>
	        		        	            	            	    <a href="./dependencies.html">Dependencies</a>
<br/>
	        		        	            	            	    <a href="./BuildInstructions.html">Build Instructions</a>
<br/>
	        		        	            	            	    <a href="./JUnitTesting.html">JUnit Testing</a>
<br/>
	        		        	            	            	    <a href="./ManualTesting.html">Manual Testing</a>
<br/>
	        		        	            	            	    <a href="./ReleaseGuide.html">Release Guide</a>
<br/>
	        		        	            	            	    <a href="./WebsiteGuide.html">Website Guide</a>
<br/>
	        		            	</div>
        	<h3><a href="#Integration">Integration</a></h3>
    	<div>
	        	            	            	    <a href="./SoapRestAPI.html">SOAP/REST API</a>
<br/>
	        		        	            	            	    <a href="./RestAPISample.html">REST API Sample</a>
<br/>
	        		        	            	            	    <a href="./LdapAndADS.html">Ldap and ADS</a>
<br/>
	        		        	            	            	    <a href="./oauth2.html">OAuth2</a>
<br/>
	        		        	            	            	    <a href="./voip-sip-integration.html">VoIP and SIP</a>
<br/>
	        		        	            	            	    <a href="./ErrorsTable.html">Errors table</a>
<br/>
	        		            	</div>
        	<h3><a href="#Plugins">Plugins</a></h3>
    	<div>
	        	            	            	    <a href="./MoodlePlugin.html">Moodle Plugin</a>
<br/>
	        		        	            	            	    <a href="./SakaiPlugin.html">Sakai Plugin</a>
<br/>
	        		        	            	            	    <a href="./JiraPlugin.html">Jira Plugin</a>
<br/>
	        		        	            	            	    <a href="./JoomlaPlugin.html">Joomla Plugin</a>
<br/>
	        		        	            	            	    <a href="./DrupalPlugin.html">Drupal Plugin</a>
<br/>
	        		        	            	            	    <a href="./BitrixPlugin.html">Bitrix Plugin</a>
<br/>
	        		        	            	            	    <a href="./ConfluencePlugin.html">Confluence Plugin</a>
<br/>
	        		        	            	            	    <a href="./SugarCRMPlugin.html">SugarCRM Plugin</a>
<br/>
	        		        	            	            	    <a href="./RedminePlugin.html">Redmine Plugin</a>
<br/>
	        		            	</div>
        	<h3><a href="#Configuration">Configuration</a></h3>
    	<div>
	        	            	            	<b>DB Sample Configurations</b><br/>
	            			            			    <a href="./ApacheDerbyConfig.html">Apache Derby</a>
<br/>
	            			            			    <a href="./IBMDB2Config.html">IBM DB2</a>
<br/>
	            			            			    <a href="./OracleConfig.html">Oracle</a>
<br/>
	            			            			    <a href="./MySQLConfig.html">MySQL</a>
<br/>
	            			            			    <a href="./PostgresConfig.html">Postgres</a>
<br/>
	            			            			    <a href="./MSSQLConfig.html">MSSQL</a>
<br/>
	            			        		        	            	            	<b>Localization and languages</b><br/>
	            			            			    <a href="./Internationalisation.html">Internationalisation</a>
<br/>
	            			            			    <a href="./LanguageEditor.html">LanguageEditor</a>
<br/>
	            			            			    <a href="./TimeZoneHandling.html">TimeZoneHandling</a>
<br/>
	            			            			    <a href="./EditTemplates.html">EditTemplates</a>
<br/>
	            			        		        	            	            	<b>NAT Port Settings</b><br/>
	            			            			    <a href="./PortSettings.html">Port settings</a>
<br/>
	            			        		        	            	            	<b>Performance</b><br/>
	            			            			    <a href="./JVMPerformanceTuning.html">JVM performance tuning</a>
<br/>
	            			        		        	            	            	<b>User Interface</b><br/>
	            			            			    <a href="./themes-and-branding.html">Themes</a>
<br/>
	            			            			    <a href="./Dashboard.html">Dashboard</a>
<br/>
	            			            			    <a href="./WebcamResolutions.html">Webcam resolutions</a>
<br/>
	            			            			    <a href="./ConferenceRoomLayoutOptions.html">Room layout options</a>
<br/>
	            			            			    <a href="./HotKeys.html">Hot Keys</a>
<br/>
	            			        		        	            	            	<b>Customization</b><br/>
	            			            			    <a href="./WebappNamePath.html">Webapp name/path</a>
<br/>
	            			            			    <a href="./Navigation.html">Navigation</a>
<br/>
	            			            			    <a href="./CalendarAndTimezone.html">Calendar and timezone</a>
<br/>
	            			            			    <a href="./CustomRoomTypeHowTo.html">Custom room type</a>
<br/>
	            			            			    <a href="./CustomCryptMechanism.html">Custom ctypt mechanism</a>
<br/>
	            			            			    <a href="./GeneralConfiguration.html">General Configuration</a>
<br/>
	            			        		        	            	            	<b>Security</b><br/>
	            			            			    <a href="./RestrictedAccess.html">Restricted Access</a>
<br/>
	            			            			    <a href="./RTMPSAndHTTPS.html">RTMPS and HTTPS</a>
<br/>
	            			        		        	            	            	<b>Converters</b><br/>
	            			            			    <a href="./OpenOfficeConverter.html">OpenOffice Converter</a>
<br/>
	            			            			    <a href="./FFMPEGVersionSwitch.html">FFMPEG Version Switch</a>
<br/>
	            			        		        	            	            	<b>Clustering</b><br/>
	            			            			    <a href="./Clustering.html">Clustering</a>
<br/>
	            			        		        	            	            	<b>Misc</b><br/>
	            			            			    <a href="./GetVersionInfo.html">Get version info</a>
<br/>
	            			        		            	</div>
        
    </div>
     
    <br/>
    
                    </td>
                    <td width="80%" align="left" valign="top">
                                                                    <table border="0" cellspacing="0" cellpadding="0" cellspacing="0" width="100%">
      <tr><td ><!-- bgcolor="#EEEEEE" -->
        <font color="#000000" face="verdana,arial,helvetica,sanserif">
          <a name="Description"><strong>Description</strong></a>
        </font>
        <hr style="width:100%; color:#999999; background-color:#999999; height:1px; border:0px;"/>
      </td></tr>
      <tr><td>
        <blockquote>
                                    <p>
				OpenMeetings 2.1 or later is required to use clustering. One database is used for all OpenMeetings 
				servers, so all database tables are shared across OM instances. Certain folders should be shared 
				between all servers to allow access to the files/recording.</p>
                            </blockquote>
      </td></tr>
      <tr><td><br/></td></tr>
    </table>
                                                <table border="0" cellspacing="0" cellpadding="0" cellspacing="0" width="100%">
      <tr><td ><!-- bgcolor="#EEEEEE" -->
        <font color="#000000" face="verdana,arial,helvetica,sanserif">
          <a name="Configuration"><strong>Configuration</strong></a>
        </font>
        <hr style="width:100%; color:#999999; background-color:#999999; height:1px; border:0px;"/>
      </td></tr>
      <tr><td>
        <blockquote>
                                    <ul>
				<li>
					Multiple OM servers should be set up as described in
					<a href="installation.html" target="_BLANK">
						<b>Installation</b>
					</a>
				</li>
				<li>All servers should be configured to have same Time zone (To avoid
					Schedulers to drop user sessions as outdated)
				</li>
				<li>All servers should be configured to use the same DB</li>
				<li>Servers should be added in Administration -&gt; Servers section</li>
			</ul>
                            </blockquote>
      </td></tr>
      <tr><td><br/></td></tr>
    </table>
                                                <table border="0" cellspacing="0" cellpadding="0" cellspacing="0" width="100%">
      <tr><td ><!-- bgcolor="#EEEEEE" -->
        <font color="#000000" face="verdana,arial,helvetica,sanserif">
          <a name="Database"><strong>Database</strong></a>
        </font>
        <hr style="width:100%; color:#999999; background-color:#999999; height:1px; border:0px;"/>
      </td></tr>
      <tr><td>
        <blockquote>
                                    <ul>
				<li>Add users who can connect to the database remotely</li>
				<li>Update <tt>/opt/red5/webapps/openmeetings/WEB-INF/classes/META-INF/persistence.xml</tt>
					set correct server address, login and password. Also add the following section:
					<div class="xmlcode">&lt;property name="openjpa.RemoteCommitProvider" value="tcp(Addresses=10.1.1.1;10.1.1.2)" /&gt;</div>
					Instead of the 10.1.1.1 and 10.1.1.2 set semicolon separated IPs of all nodes of the cluster.
				</li>
			</ul>
                            </blockquote>
      </td></tr>
      <tr><td><br/></td></tr>
    </table>
                                                <table border="0" cellspacing="0" cellpadding="0" cellspacing="0" width="100%">
      <tr><td ><!-- bgcolor="#EEEEEE" -->
        <font color="#000000" face="verdana,arial,helvetica,sanserif">
          <a name="File systems"><strong>File systems</strong></a>
        </font>
        <hr style="width:100%; color:#999999; background-color:#999999; height:1px; border:0px;"/>
      </td></tr>
      <tr><td>
        <blockquote>
                                    <ul>
				<li>Install NFS to the data server. In the file <tt>/etc/exports</tt> add the following lines:
					<div class="xmlcode">
						/opt/red5/webapps/openmeetings/upload 10.1.1.2(rw,sync,no_subtree_check,no_root_squash)<br />
						/opt/red5/webapps/openmeetings/streams 10.1.1.2(rw,sync,no_subtree_check,no_root_squash)
					</div>
					Here 10.1.1.2 - is node ip for NFS remote access. Add these lines for all nodes except node with 
					folders.
				</li>
				<li>
					Install NFS common tools to other nodes. In the file <tt>/etc/fstab</tt> do the following:
					<div class="xmlcode">
						10.1.1.1:/opt/red5/webapps/openmeetings/upload/<br />
						/opt/red5/webapps/openmeetings/upload nfs timeo=50,hard,intr<br />
						10.1.1.1:/opt/red5/webapps/openmeetings/streams/<br />
						/opt/red5/webapps/openmeetings/streams nfs timeo=50,hard,intr
					</div>
					Here 10.1.1.1 – data server ip. And run the command:
					<div class="xmlcode">
						mount -a
					</div>
				</li>
			</ul>
                            </blockquote>
      </td></tr>
      <tr><td><br/></td></tr>
    </table>
                                                <table border="0" cellspacing="0" cellpadding="0" cellspacing="0" width="100%">
      <tr><td ><!-- bgcolor="#EEEEEE" -->
        <font color="#000000" face="verdana,arial,helvetica,sanserif">
          <a name="OM nodes configuration"><strong>OM nodes configuration</strong></a>
        </font>
        <hr style="width:100%; color:#999999; background-color:#999999; height:1px; border:0px;"/>
      </td></tr>
      <tr><td>
        <blockquote>
                                    <tt>/opt/red5/webapps/openmeetings/WEB-INF/openmeetings-applicationContext.xml</tt>
                                                <ul>
				<li>
					For each node uncomment line:
					<div class="xmlcode">
						&lt;!-- Need to be uncommented and set to the real ID if in cluster mode--&gt;<br />
						&lt;property name="serverId" value="1" /&gt;
					</div>
					and input the unique value for each node.
				</li>
				<li> 
					Replace <tt>&lt;ref bean="openmeetings.HashMapStore" /&gt;  &lt;!-- Memory based session cache by default --&gt;</tt><br />
					with <tt>&lt;ref bean="openmeetings.DatabaseStore" /&gt;</tt> 
					(Currently commented out with following comment: <tt>"The following section should be used in clustering mode"</tt>)
				</li>
			</ul>
                            </blockquote>
      </td></tr>
      <tr><td><br/></td></tr>
    </table>
                                                <table border="0" cellspacing="0" cellpadding="0" cellspacing="0" width="100%">
      <tr><td ><!-- bgcolor="#EEEEEE" -->
        <font color="#000000" face="verdana,arial,helvetica,sanserif">
          <a name="Configuring cluster in Administration"><strong>Configuring cluster in Administration</strong></a>
        </font>
        <hr style="width:100%; color:#999999; background-color:#999999; height:1px; border:0px;"/>
      </td></tr>
      <tr><td>
        <blockquote>
                                    <ul>
				<li>Go to the <tt>Administration -&gt; Users</tt> and create Webservice user (only access via SOAP).</li>
				<li>
					Go to the <tt>Administration -&gt; Servers</tt> and add all cluster nodes with the following settings:
					<div class="xmlcode">
						Server Name = node name;<br />
						Active = check the checkbox. If the checkbox is checked it means node is active and you can use this node;<br />
						Server Address = node ip;<br />
						HTTP Port = 5080 - port for http part of Openmeetings;<br />
						User (SOAP Access) = login of Webservice user from the previous step;<br />
						Password = password of Webservise user;<br />
						Webapp path = openmeetings - path where OM installed on this node, it would be better if this path will be the same for all nodes;<br />
						Protocol = http.
					</div>
				</li> 
			</ul>
                                                <img src="./images/cluster1.png" width="650" height="461" align="middle">
                            </blockquote>
      </td></tr>
      <tr><td><br/></td></tr>
    </table>
                                                <table border="0" cellspacing="0" cellpadding="0" cellspacing="0" width="100%">
      <tr><td ><!-- bgcolor="#EEEEEE" -->
        <font color="#000000" face="verdana,arial,helvetica,sanserif">
          <a name="Ensure everything works as expected"><strong>Ensure everything works as expected</strong></a>
        </font>
        <hr style="width:100%; color:#999999; background-color:#999999; height:1px; border:0px;"/>
      </td></tr>
      <tr><td>
        <blockquote>
                                    <ul>
				<li>Set up the cluster and loggin with two users, go to the same room (also check before room 
				entering that the status page with the room list shows the correct number of participants before 
				entering the room). You should login to the same server initially, the server will redirect you 
				for the conference room to the appropriate server automatically. Both users should be in the same room.
				</li>
				<li>Do the same with only two users but go to _different_ rooms. The calculation should send 
				both users to different servers, cause based on the calculation two different rooms on a cluster 
				with two nodes should go exactly one room for each node. You can now loggin really to node1 
				and node2 of your cluster while those users are loggedin and go to <tt>Administration &gt; Connections</tt>
				and check in the column "servers" where they are located. They should be on different server.
				</li>
			</ul>
                                                <img src="./images/cluster2.png" width="650" height="369" align="middle">
                            </blockquote>
      </td></tr>
      <tr><td><br/></td></tr>
    </table>
                                        </td>
                </tr>

                <!-- FOOTER -->
                <tr><td colspan="2">
                    <hr noshade="noshade" size="1"/>
                </td></tr>
                <tr><td colspan="2">
                    <div align="center"><font color="#123465" size="-1"><em>
                    Copyright &#169; 2003-2014, The Apache Software Foundation
                    </em></font></div>
                </td></tr>
            </table>
            </div>
            </div>
        </body>
    </html>
<!-- end the processing -->






















