blob: 58686b1337f5a71811bd0b02acbe0ac8dece2786 [file] [log] [blame]
<!DOCTYPE html>
<!--
| Generated by Apache Maven Doxia Site Renderer 1.7.1 at 2016-09-23
| Rendered using Apache Maven Fluido Skin 1.5
-->
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<meta name="author" content="Apache OpenMeetings Team" />
<meta name="Date-Revision-yyyymmdd" content="20160923" />
<meta http-equiv="Content-Language" content="en" />
<title>Apache OpenMeetings Project &#x2013; Clustering</title>
<link rel="stylesheet" href="./css/apache-maven-fluido-1.5.min.css" />
<link rel="stylesheet" href="./css/site.css" />
<link rel="stylesheet" href="./css/print.css" media="print" />
<script type="text/javascript" src="./js/apache-maven-fluido-1.5.min.js"></script>
<script type="text/javascript" src="http://openmeetings.apache.org/js/site.js"></script>
</head>
<body class="topBarDisabled">
<div class="container-fluid">
<div id="banner">
<div class="pull-left">
<a href="index.html" id="bannerLeft">
<img src="images/logo.png" alt="Apache OpenMeetings"/>
</a>
</div>
<div class="pull-right"> <a href="http://apache.org" id="bannerRight">
<img src="http://apache.org/img/asf_logo.png" alt="Apache"/>
</a>
</div>
<div class="clear"><hr/></div>
</div>
<div id="breadcrumbs">
<ul class="breadcrumb">
<li id="publishDate">Last Published: 2016-09-23
</li>
<li class="pull-right">
<span class="divider">|</span>
<a href="https://cwiki.apache.org/confluence/display/OPENMEETINGS" class="externalLink" title="Wiki">
Wiki</a>
</li>
<li class="pull-right">
<span class="divider">|</span>
<a href="installation.html" title="Installation">
Installation</a>
</li>
<li class="pull-right">
<span class="divider">|</span>
<a href="downloads.html" title="Download">
Download</a>
</li>
<li class="pull-right">
<a href="demo.html" title="Demo">
Demo</a>
</li>
</ul>
</div>
<div class="row-fluid">
<div id="leftColumn" class="span2">
<div class="well sidebar-nav">
<ul class="nav nav-list">
<li>
<a href="#general" title="General">
<span class="icon-chevron-down"></span>
General</a>
<ul class="nav nav-list">
<li>
<a href="index.html" title="Home">
<span class="none"></span>
Home</a>
</li>
<li>
<a href="demo.html" title="Demo">
<span class="none"></span>
Demo</a>
</li>
<li>
<a href="license.html" title="License">
<span class="none"></span>
License</a>
</li>
<li>
<a href="http://www.apache.org/" class="externalLink" title="ASF">
<span class="none"></span>
ASF</a>
</li>
<li>
<a href="downloads.html" title="Downloads">
<span class="none"></span>
Downloads</a>
</li>
<li>
<a href="CallForLogo.html" title="Call For Logo">
<span class="none"></span>
Call For Logo</a>
</li>
<li>
<a href="NewsArchive.html" title="News archive">
<span class="none"></span>
News archive</a>
</li>
<li>
<a href="security.html" title="Security">
<span class="none"></span>
Security</a>
</li>
<li>
<a href="commercial-support.html" title="Commercial Support">
<span class="none"></span>
Commercial Support</a>
</li>
</ul>
</li>
<li>
<a href="#installation" title="Installation and Upgrade">
<span class="icon-chevron-down"></span>
Installation and Upgrade</a>
<ul class="nav nav-list">
<li>
<a href="installation.html" title="Installation">
<span class="none"></span>
Installation</a>
</li>
<li>
<a href="Upgrade.html" title="Upgrade">
<span class="none"></span>
Upgrade</a>
</li>
<li>
<a href="https://cwiki.apache.org/confluence/display/OPENMEETINGS/Tutorials+for+installing+OpenMeetings+and+Tools" class="externalLink" title="Tutorials">
<span class="none"></span>
Tutorials</a>
</li>
<li>
<a href="CommandLineAdmin.html" title="Command Line Admin">
<span class="none"></span>
Command Line Admin</a>
</li>
</ul>
</li>
<li>
<a href="#community" title="Community">
<span class="icon-chevron-down"></span>
Community</a>
<ul class="nav nav-list">
<li>
<a href="get-involved.html" title="Get Involved">
<span class="none"></span>
Get Involved</a>
</li>
<li>
<a href="team-list.html" title="Committers">
<span class="none"></span>
Committers</a>
</li>
<li>
<a href="mail-lists.html" title="Mailing Lists">
<span class="none"></span>
Mailing Lists</a>
</li>
<li>
<a href="http://cwiki.apache.org/confluence/display/OPENMEETINGS/" class="externalLink" title="Wiki">
<span class="none"></span>
Wiki</a>
</li>
</ul>
</li>
<li>
<a href="#dev" title="Development">
<span class="icon-chevron-down"></span>
Development</a>
<ul class="nav nav-list">
<li>
<a href="source-repository.html" title="Source Code">
<span class="none"></span>
Source Code</a>
</li>
<li>
<a href="issue-tracking.html" title="Bugs / Issues">
<span class="none"></span>
Bugs / Issues</a>
</li>
<li>
<a href="dependencies.html" title="Dependencies">
<span class="none"></span>
Dependencies</a>
</li>
<li>
<a href="integration.html" title="Continuous Integration">
<span class="none"></span>
Continuous Integration</a>
</li>
<li>
<a href="BuildInstructions_3.0.x.html" title="Build Instructions 3.0.x">
<span class="none"></span>
Build Instructions 3.0.x</a>
</li>
<li>
<a href="BuildInstructions.html" title="Build Instructions">
<span class="none"></span>
Build Instructions</a>
</li>
<li>
<a href="JUnitTesting.html" title="JUnit Testing">
<span class="none"></span>
JUnit Testing</a>
</li>
<li>
<a href="ManualTesting.html" title="Manual Testing">
<span class="none"></span>
Manual Testing</a>
</li>
<li>
<a href="ReleaseGuide.html" title="Release Guide">
<span class="none"></span>
Release Guide</a>
</li>
<li>
<a href="WebsiteGuide.html" title="Website Guide">
<span class="none"></span>
Website Guide</a>
</li>
</ul>
</li>
<li>
<a href="#integration" title="Integration">
<span class="icon-chevron-down"></span>
Integration</a>
<ul class="nav nav-list">
<li>
<a href="openmeetings-webservice/apidocs/index.html" target="_blank" title="SOAP/REST API">
<span class="none"></span>
SOAP/REST API</a>
</li>
<li>
<a href="RestAPISample.html" title="REST API Sample">
<span class="none"></span>
REST API Sample</a>
</li>
<li>
<a href="LdapAndADS.html" title="Ldap and ADS">
<span class="none"></span>
Ldap and ADS</a>
</li>
<li>
<a href="oauth2.html" title="OAuth2">
<span class="none"></span>
OAuth2</a>
</li>
<li>
<a href="voip-sip-integration.html" title="VoIP and SIP">
<span class="none"></span>
VoIP and SIP</a>
</li>
<li>
<a href="errorvalues.html" title="Errors table">
<span class="none"></span>
Errors table</a>
</li>
</ul>
</li>
<li>
<a href="#plugins" title="Plugins">
<span class="icon-chevron-down"></span>
Plugins</a>
<ul class="nav nav-list">
<li>
<a href="MoodlePlugin.html" title="Moodle Plugin">
<span class="none"></span>
Moodle Plugin</a>
</li>
<li>
<a href="SakaiPlugin.html" title="Sakai Plugin">
<span class="none"></span>
Sakai Plugin</a>
</li>
<li>
<a href="JiraPlugin.html" title="Jira Plugin">
<span class="none"></span>
Jira Plugin</a>
</li>
<li>
<a href="JoomlaPlugin.html" title="Joomla Plugin">
<span class="none"></span>
Joomla Plugin</a>
</li>
<li>
<a href="DrupalPlugin.html" title="Drupal Plugin">
<span class="none"></span>
Drupal Plugin</a>
</li>
<li>
<a href="BitrixPlugin.html" title="Bitrix Plugin">
<span class="none"></span>
Bitrix Plugin</a>
</li>
<li>
<a href="ConfluencePlugin.html" title="Confluence Plugin">
<span class="none"></span>
Confluence Plugin</a>
</li>
<li>
<a href="SugarCRMPlugin.html" title="SugarCRM Plugin">
<span class="none"></span>
SugarCRM Plugin</a>
</li>
<li>
<a href="RedminePlugin.html" title="Redmine Plugin">
<span class="none"></span>
Redmine Plugin</a>
</li>
</ul>
</li>
<li>
<a href="#config" title="Configuration">
<span class="icon-chevron-down"></span>
Configuration</a>
<ul class="nav nav-list">
<li>
<a href="#db" title="DB Sample Configurations">
<span class="icon-chevron-down"></span>
DB Sample Configurations</a>
<ul class="nav nav-list">
<li>
<a href="ApacheDerbyConfig.html" title="Apache Derby">
<span class="none"></span>
Apache Derby</a>
</li>
<li>
<a href="IBMDB2Config.html" title="IBM DB2">
<span class="none"></span>
IBM DB2</a>
</li>
<li>
<a href="OracleConfig.html" title="Oracle">
<span class="none"></span>
Oracle</a>
</li>
<li>
<a href="MySQLConfig.html" title="MySQL">
<span class="none"></span>
MySQL</a>
</li>
<li>
<a href="PostgresConfig.html" title="Postgres">
<span class="none"></span>
Postgres</a>
</li>
<li>
<a href="MSSQLConfig.html" title="MSSQL">
<span class="none"></span>
MSSQL</a>
</li>
</ul>
</li>
<li>
<a href="#localization" title="Localization and languages">
<span class="icon-chevron-down"></span>
Localization and languages</a>
<ul class="nav nav-list">
<li>
<a href="Internationalisation.html" title="Internationalisation">
<span class="none"></span>
Internationalisation</a>
</li>
<li>
<a href="LanguageEditor.html" title="LanguageEditor">
<span class="none"></span>
LanguageEditor</a>
</li>
<li>
<a href="TimeZoneHandling.html" title="TimeZoneHandling">
<span class="none"></span>
TimeZoneHandling</a>
</li>
<li>
<a href="EditTemplates.html" title="EditTemplates">
<span class="none"></span>
EditTemplates</a>
</li>
</ul>
</li>
<li>
<a href="#port" title="NAT Port Settings">
<span class="icon-chevron-down"></span>
NAT Port Settings</a>
<ul class="nav nav-list">
<li>
<a href="PortSettings.html" title="Port settings">
<span class="none"></span>
Port settings</a>
</li>
</ul>
</li>
<li>
<a href="#performance" title="Performance">
<span class="icon-chevron-down"></span>
Performance</a>
<ul class="nav nav-list">
<li>
<a href="JVMPerformanceTuning.html" title="JVM performance tuning">
<span class="none"></span>
JVM performance tuning</a>
</li>
<li>
<a href="NetworkCalculator.html" title="Network bandwidth calculator">
<span class="none"></span>
Network bandwidth calculator</a>
</li>
</ul>
</li>
<li>
<a href="#interface" title="User Interface">
<span class="icon-chevron-down"></span>
User Interface</a>
<ul class="nav nav-list">
<li>
<a href="themes-and-branding.html" title="Themes">
<span class="none"></span>
Themes</a>
</li>
<li>
<a href="Dashboard.html" title="Dashboard">
<span class="none"></span>
Dashboard</a>
</li>
<li>
<a href="WebcamResolutions.html" title="Webcam resolutions">
<span class="none"></span>
Webcam resolutions</a>
</li>
<li>
<a href="ConferenceRoomLayoutOptions.html" title="Room layout options">
<span class="none"></span>
Room layout options</a>
</li>
<li>
<a href="HotKeys.html" title="Hot Keys">
<span class="none"></span>
Hot Keys</a>
</li>
</ul>
</li>
<li>
<a href="#customize" title="Customization">
<span class="icon-chevron-down"></span>
Customization</a>
<ul class="nav nav-list">
<li>
<a href="WebappNamePath.html" title="Webapp name/path">
<span class="none"></span>
Webapp name/path</a>
</li>
<li>
<a href="Navigation.html" title="Navigation">
<span class="none"></span>
Navigation</a>
</li>
<li>
<a href="CalendarAndTimezone.html" title="Calendar and timezone">
<span class="none"></span>
Calendar and timezone</a>
</li>
<li>
<a href="CustomRoomTypeHowTo.html" title="Custom room type">
<span class="none"></span>
Custom room type</a>
</li>
<li>
<a href="CustomCryptMechanism.html" title="Custom crypt mechanism">
<span class="none"></span>
Custom crypt mechanism</a>
</li>
<li>
<a href="GeneralConfiguration.html" title="General Configuration">
<span class="none"></span>
General Configuration</a>
</li>
</ul>
</li>
<li>
<a href="#security" title="Security">
<span class="icon-chevron-down"></span>
Security</a>
<ul class="nav nav-list">
<li>
<a href="RestrictedAccess.html" title="Restricted Access">
<span class="none"></span>
Restricted Access</a>
</li>
<li>
<a href="RTMPSAndHTTPS.html" title="RTMPS and HTTPS">
<span class="none"></span>
RTMPS and HTTPS</a>
</li>
</ul>
</li>
<li>
<a href="#convert" title="Converters">
<span class="icon-chevron-down"></span>
Converters</a>
<ul class="nav nav-list">
<li>
<a href="OpenOfficeConverter.html" title="OpenOffice Converter">
<span class="none"></span>
OpenOffice Converter</a>
</li>
<li>
<a href="FFMPEGVersionSwitch.html" title="FFMPEG Version Switch">
<span class="none"></span>
FFMPEG Version Switch</a>
</li>
</ul>
</li>
<li>
<a href="#cluster" title="Clustering">
<span class="icon-chevron-down"></span>
Clustering</a>
<ul class="nav nav-list">
<li class="active">
<a href="#"><span class="none"></span>Clustering</a>
</li>
</ul>
</li>
<li>
<a href="#misc" title="Misc">
<span class="icon-chevron-down"></span>
Misc</a>
<ul class="nav nav-list">
<li>
<a href="GetVersionInfo.html" title="Get version info">
<span class="none"></span>
Get version info</a>
</li>
</ul>
</li>
</ul>
</li>
</ul>
<hr />
<div id="poweredBy">
<div class="clear"></div>
<div class="clear"></div>
<div class="clear"></div>
<div class="clear"></div>
<a href="http://maven.apache.org/" title="Built by Maven" class="poweredBy">
<img class="builtBy" alt="Built by Maven" src="./images/logos/maven-feather.png" />
</a>
</div>
</div>
</div>
<div id="bodyColumn" class="span10" >
<div class="section">
<h2><a name="Description"></a>Description</h2>
<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>
</div>
<div class="section">
<h2><a name="Configuration"></a>Configuration</h2>
<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>
</div>
<div class="section">
<h2><a name="Database"></a>Database</h2>
<p>All servers should be configured to use the same database. It can be on the server or on the one node
of the cluster.</p>
<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="source"><pre class="prettyprint">&lt;property name=&quot;openjpa.RemoteCommitProvider&quot; value=&quot;tcp(Addresses=10.1.1.1;10.1.1.2)&quot; /&gt;</pre></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>
</div>
<div class="section">
<h2><a name="File_systems"></a>File systems</h2>
<p>If files and recordings using the same physical folders the files and recordings will be available for
each node. You can do this using Samba or NFS, for example. For using NFS do the following:</p>
<ul>
<li>Install NFS to the data server. In the file <tt>/etc/exports</tt> add the following lines:
<div class="source"><pre class="prettyprint">
/opt/red5/webapps/openmeetings/upload 10.1.1.2(rw,sync,no_subtree_check,no_root_squash)
/opt/red5/webapps/openmeetings/streams 10.1.1.2(rw,sync,no_subtree_check,no_root_squash)
</pre></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="source"><pre class="prettyprint">
10.1.1.1:/opt/red5/webapps/openmeetings/upload/
/opt/red5/webapps/openmeetings/upload nfs timeo=50,hard,intr
10.1.1.1:/opt/red5/webapps/openmeetings/streams/
/opt/red5/webapps/openmeetings/streams nfs timeo=50,hard,intr
</pre></div>
Here 10.1.1.1 &#x2013; data server ip. And run the command:
<div class="source"><pre class="prettyprint">mount -a</pre></div>
</li>
</ul>
</div>
<div class="section">
<h2><a name="OM_nodes_configuration"></a>OM nodes configuration</h2>
<p>In the file <tt>/opt/red5/webapps/openmeetings/WEB-INF/classes/openmeetings-applicationContext.xml</tt>:</p>
<ul>
<li>
For each node uncomment line:
<div class="source"><pre class="prettyprint">
&lt;!-- Need to be uncommented and set to the real ID if in cluster mode--&gt;
&lt;property name=&quot;serverId&quot; value=&quot;1&quot; /&gt;
</pre></div>
and input the unique value for each node.
</li>
<li>
Replace <tt>&lt;ref bean=&quot;openmeetings.HashMapStore&quot; /&gt; &lt;!-- Memory based session cache by default --&gt;</tt><br />
with <tt>&lt;ref bean=&quot;openmeetings.DatabaseStore&quot; /&gt;</tt>
(Currently commented out with following comment: <tt>&quot;The following section should be used in clustering mode&quot;</tt>)
</li>
</ul>
</div>
<div class="section">
<h2><a name="Configuring_cluster_in_Administration"></a>Configuring cluster in Administration</h2>
<p>Run red5 on each node. Login to the system as admin.</p>
<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="source"><pre class="prettyprint">
Server Name = node name;
Active = check the checkbox. If the checkbox is checked it means node is active and you can use this node;
Server Address = node ip;
HTTP Port = 5080 - port for http part of Openmeetings;
User (SOAP Access) = login of Webservice user from the previous step;
Password = password of Webservise user;
Webapp path = openmeetings - path where OM installed on this node, it would be better if this path will be the same for all nodes;
Protocol = http.
</pre></div>
</li>
</ul>
<img src="images/cluster1.png" alt="" width="650" height="461" />
</div>
<div class="section">
<h2><a name="Ensure_everything_works_as_expected"></a>Ensure everything works as expected</h2>
<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 &quot;servers&quot; where they are located. They should be on different server.
</li>
</ul>
<img src="images/cluster2.png" alt="" width="650" height="369" />
</div>
</div>
</div>
</div>
<hr/>
<footer>
<div class="container-fluid">
<div class="row-fluid">
<p >Copyright &copy; 2012&#x2013;2016
<a href="http://apache.org">Apache Software Foundation</a>.
All rights reserved.
</p>
</div>
</div>
</footer>
</body>
</html>