| <!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> </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 -> 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"><property name="openjpa.RemoteCommitProvider" value="tcp(Addresses=10.1.1.1;10.1.1.2)" /></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">
|
| <!-- Need to be uncommented and set to the real ID if in cluster mode--><br />
|
| <property name="serverId" value="1" />
|
| </div>
|
| and input the unique value for each node.
|
| </li>
|
| <li>
|
| Replace <tt><ref bean="openmeetings.HashMapStore" /> <!-- Memory based session cache by default --></tt><br />
|
| with <tt><ref bean="openmeetings.DatabaseStore" /></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 -> Users</tt> and create Webservice user (only access via SOAP).</li>
|
| <li>
|
| Go to the <tt>Administration -> 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 > 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 © 2003-2014, The Apache Software Foundation |
| </em></font></div> |
| </td></tr> |
| </table> |
| </div> |
| </div> |
| </body> |
| </html> |
| <!-- end the processing --> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |