geronimo-scm mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From conflue...@apache.org
Subject [CONF] Apache Geronimo v3.0 > Running multiple Geronimo instances
Date Tue, 28 Feb 2012 17:25:00 GMT
<html>
<head>
    <base href="https://cwiki.apache.org/confluence">
            <link rel="stylesheet" href="/confluence/s/2042/9/4/_/styles/combined.css?spaceKey=GMOxDOC30&amp;forWysiwyg=true"
type="text/css">
    </head>
<body style="background: white;" bgcolor="white" class="email-body">
<div id="pageContent">
<div id="notificationFormat">
<div class="wiki-content">
<div class="email">
    <h2><a href="https://cwiki.apache.org/confluence/display/GMOxDOC30/Running+multiple+Geronimo+instances">Running
multiple Geronimo instances</a></h2>
    <h4>Page <b>edited</b> by             <a href="https://cwiki.apache.org/confluence/display/~rglaue">Russell
E Glaue</a>
    </h4>
        <div id="versionComment">
        <b>Comment:</b>
        Updating to reflect changes to procedures for creating multiple repositories, and
indicating that a second repository for each Geronimo instance is recommended.<br />
    </div>
        <br/>
                         <h4>Changes (9)</h4>
                                 
    
<div id="page-diffs">
                    <table class="diff" cellpadding="0" cellspacing="0">
    
            <tr><td class="diff-snipped" >...<br></td></tr>
            <tr><td class="diff-unchanged" >* var <br> <br></td></tr>
            <tr><td class="diff-changed-lines" >These are also read-write but
are not part of the minimally necessary directories and files for running a Geronimo instance,
but may be desired. The <span class="diff-changed-words"><span class="diff-added-chars"style="background-color:
#dfd;">{{</span>deploy<span class="diff-added-chars"style="background-color: #dfd;">}}</span></span>
and <span class="diff-changed-words"><span class="diff-added-chars"style="background-color:
#dfd;">{{</span>repository<span class="diff-added-chars"style="background-color:
#dfd;">}}</span></span> directories will be automatically created when you
start Geronimo if <span class="diff-deleted-words"style="color:#999;background-color:#fdd;text-decoration:line-through;">it
does</span> <span class="diff-added-words"style="background-color: #dfd;">they
do</span> not already exist. <br>* repository  (this is <span class="diff-added-words"style="background-color:
#dfd;">under {{&lt;geronimo_home&gt;/&lt;instance_name&gt;}}, and is</span>
not the same as the primary shared repository) <br></td></tr>
            <tr><td class="diff-unchanged" >* deploy <br>* hotbundles <br></td></tr>
            <tr><td class="diff-snipped" >...<br></td></tr>
            <tr><td class="diff-unchanged" ># Create a directory {{foo}} under
{{&lt;geronimo_home&gt;}}. <br># Copy {{var}} and {{etc}} directories to {{foo}}.
You can use the command [deploy:new-server-instance|gogo commands for Geronimo#gogocommandsforGeronimo-gogocommandnewserverinstance]
to help you with this step. <br></td></tr>
            <tr><td class="diff-changed-lines" ># <span class="diff-deleted-words"style="color:#999;background-color:#fdd;text-decoration:line-through;">Optionally</span>
<span class="diff-added-words"style="background-color: #dfd;">Recommended:</span>
create {{foo/repository}} and set it up as a second repository for the Geronimo instance.
See [Configuring multiple Repositories] <br></td></tr>
            <tr><td class="diff-unchanged" ># Edit {{foo/var/config/config-substitutions.properties}}
and change the portOffset. Try using any integers such as 1, 2, 10, 20, 30.. for various instances.
<br> <br></td></tr>
            <tr><td class="diff-snipped" >...<br></td></tr>
            <tr><td class="diff-unchanged" ># Set the {{org.apache.geronimo.server.name}}
system property to define a server name before you start the server. This system property
is null by default, defining the server instance at {{&lt;geronimo_home&gt;}} as the
default instance. Use the syntax {{\-Dorg.apache.geronimo.server.name=foo}} to change the
server name to an instance named {{foo}} located at {{&lt;geronimo_home&gt;/foo}}.
Add this to your {{GERONIMO_OPTS}} environment variable: <br> <br></td></tr>
            <tr><td class="diff-changed-lines" >* On a Windows system: {{set <span
class="diff-deleted-words"style="color:#999;background-color:#fdd;text-decoration:line-through;">GERONIMO_OPTS=-Dorg.apache.geronimo.server.name=foo}}</span>
<span class="diff-added-words"style="background-color: #dfd;">GERONIMO_OPTS &quot;-Dorg.apache.geronimo.server.name=foo&quot;}}</span>
<br>* On a Unix-like system: {{export <span class="diff-changed-words">GERONIMO_OPTS=<span
class="diff-added-chars"style="background-color: #dfd;">&quot;</span>-Dorg.apache.geronimo.server.name=foo<span
class="diff-added-chars"style="background-color: #dfd;">&quot;</span>}}</span>
<br></td></tr>
            <tr><td class="diff-unchanged" > <br># Start the server using
startup <br></td></tr>
            <tr><td class="diff-snipped" >...<br></td></tr>
            <tr><td class="diff-unchanged" ># To shutdown this instance, use the
port number of RMI Naming port (default 1099). For the new instance {{foo}}, the port number
should be 1099 plus portOffset specified in {{foo/var/config/config-substitutions.properties}}.
<br>{noformat:borderStyle=solid} <br></td></tr>
            <tr><td class="diff-changed-lines" >&lt;geronimo_home&gt;/bin/shutdown
--port <span class="diff-changed-words">&lt;<span class="diff-added-chars"style="background-color:
#dfd;">RMI_</span>port_num&gt;</span> <br></td></tr>
            <tr><td class="diff-unchanged" >{noformat} <br># To deploy applications
to this instance use the port number of RMI Naming port <br></td></tr>
            <tr><td class="diff-added-lines" style="background-color: #dfd;">-
This deploys to the primary Geronimo repository <br></td></tr>
            <tr><td class="diff-unchanged" >{noformat:borderStyle=solid} <br></td></tr>
            <tr><td class="diff-changed-lines" >&lt;geronimo_home&gt;/bin/deploy
--port <span class="diff-changed-words">&lt;<span class="diff-added-chars"style="background-color:
#dfd;">RMI_</span>port_num&gt;</span> deploy &lt;applications&gt;
<br></td></tr>
            <tr><td class="diff-unchanged" >{noformat} <br></td></tr>
            <tr><td class="diff-added-lines" style="background-color: #dfd;">-
This deploys to a secondary Geronimo repository exclusive to the Geronimo server defined in
{{org.apache.geronimo.server.name=foo}} . See [Configuring multiple Repositories] for more
detailed instructions. <br>{noformat:borderStyle=solid} <br>&lt;geronimo_home&gt;/bin/deploy
--port &lt;RMI_port_num&gt; deploy --targets &lt;foo_repo_name&gt; &lt;applications&gt;
<br>{noformat} <br></td></tr>
            <tr><td class="diff-unchanged" > <br> <br></td></tr>
            <tr><td class="diff-snipped" >...<br></td></tr>
            <tr><td class="diff-unchanged" >* We&#39;ll create two Geronimo
instances named gserv1 and gserv2 <br>** Create the Geronimo instance directories as
{{/opt/geronimo3/gserv1}} and {{/opt/geronimo3/gserv2}} <br></td></tr>
            <tr><td class="diff-changed-lines" >** Copy the directories <span
class="diff-changed-words">{{var}}<span class="diff-deleted-chars"style="color:#999;background-color:#fdd;text-decoration:line-through;">,
{{etc}},</span></span> and <span class="diff-deleted-words"style="color:#999;background-color:#fdd;text-decoration:line-through;">{{repository}}</span>
<span class="diff-added-words"style="background-color: #dfd;">{{etc}}</span> to
each instance directory <br></td></tr>
            <tr><td class="diff-added-lines" style="background-color: #dfd;">**
Create a {{repository}} directory within each instance directory and set it up as a second
repository for the corresponding Geronimo instance. See [Configuring multiple Repositories]
<br></td></tr>
            <tr><td class="diff-unchanged" >** Modify the {{gservN/var/config/config-substitutions.properties}}
file for each Geronimo instance changing the {{PortOffset}}. We&#39;ll set the {{PortOffset}}
for {{gserv1}} to 100 and the {{PortOffset}} for {{gserv2}} to 200 for our example. <br>**
Create a start script in each Geronimo instance directory to make it easier to start each
instance <br></td></tr>
            <tr><td class="diff-snipped" >...<br></td></tr>
    
            </table>
    </div>                            <h4>Full Content</h4>
                    <div class="notificationGreySide">
        <style type='text/css'>/*<![CDATA[*/
table.ScrollbarTable  {border: none;padding: 3px;width: 100%;padding: 3px;margin: 0px;background-color:
#f0f0f0}
table.ScrollbarTable td.ScrollbarPrevIcon {text-align: center;width: 16px;border: none;}
table.ScrollbarTable td.ScrollbarPrevName {text-align: left;border: none;}
table.ScrollbarTable td.ScrollbarParent {text-align: center;border: none;}
table.ScrollbarTable td.ScrollbarNextName {text-align: right;border: none;}
table.ScrollbarTable td.ScrollbarNextIcon {text-align: center;width: 16px;border: none;}

/*]]>*/</style><div class="Scrollbar"><table class='ScrollbarTable'><tr><td
class='ScrollbarPrevIcon'><a href="/confluence/display/GMOxDOC30/Running+Geronimo+as+a+service"><img
border='0' align='middle' src='/confluence/images/icons/back_16.gif' width='16' height='16'></a></td><td
width='33%' class='ScrollbarPrevName'><a href="/confluence/display/GMOxDOC30/Running+Geronimo+as+a+service">Running
Geronimo as a service</a>&nbsp;</td><td width='33%' class='ScrollbarParent'><sup><a
href="/confluence/display/GMOxDOC30/Running+Geronimo"><img border='0' align='middle'
src='/confluence/images/icons/up_16.gif' width='8' height='8'></a></sup><a
href="/confluence/display/GMOxDOC30/Running+Geronimo">Running Geronimo</a></td><td
width='33%' class='ScrollbarNextName'>&nbsp;</td></tr></table></div>


<div class='panelMacro'><table class='noteMacro'><colgroup><col width='24'><col></colgroup><tr><td
valign='top'><img src="/confluence/images/icons/emoticons/warning.gif" width="16" height="16"
align="absmiddle" alt="" border="0"></td><td>Regarding both Geronimo javaee6
and minimal release bundles. While it is certain that multiple installations can safely run
side-by-side by completely copying the server folder to another, and start a 2nd instance
after changing its portOffset value, we are undergoing final work for safely running multiple
instances within a single installation. Follow <a href="https://issues.apache.org/jira/browse/GERONIMO-6270"
class="external-link" rel="nofollow">GERONIMO-6270</a> and its sub-tasks for details
on the progress.

<p>The startup scripts provided in this documentation provide the proper startup procedures
for multiple instances in a safe manner, even though run-rime safety is still being investigated.
Each Geronimo instance should ideally have a second repository for itself in oder to keep
deployments from interfering with each other. See <a href="/confluence/display/GMOxDOC30/Configuring+multiple+repositories"
title="Configuring multiple repositories">Configuring multiple repositories</a>.</p></td></tr></table></div>


<p>It is possible to run multiple instances of Geronimo on the same machine.<br/>
Currently multiple instances of Geronimo share the following directories in <tt>&lt;geronimo_home&gt;</tt>,
the directory where you installed Geronimo. These are read-only.</p>
<ul>
	<li>bin</li>
	<li>jsr88</li>
	<li>lib</li>
	<li>schema</li>
</ul>


<p>The repository is shared, and contains lots of basic and important libraries are
required to bootstrap server. It is possible to configure second repositories, one for each
instance. See <a href="/confluence/display/GMOxDOC30/Configuring+multiple+repositories"
title="Configuring multiple repositories">Configuring multiple repositories</a>.</p>
<ul>
	<li>repository</li>
</ul>


<p>Each instance gets its own copy of the following at <tt>&lt;geronimo_home&gt;/&lt;instance_name&gt;</tt>
. These are read-write and are necessary for each Geronimo instance.</p>
<ul>
	<li>etc</li>
	<li>var</li>
</ul>


<p>These are also read-write but are not part of the minimally necessary directories
and files for running a Geronimo instance, but may be desired. The <tt>deploy</tt>
and <tt>repository</tt> directories will be automatically created when you start
Geronimo if they do not already exist.</p>
<ul>
	<li>repository  (this is under <tt>&lt;geronimo_home&gt;/&lt;instance_name&gt;</tt>,
and is not the same as the primary shared repository)</li>
	<li>deploy</li>
	<li>hotbundles</li>
</ul>


<p>The bin, lib and schema directories are read-only, and thus are shared between instances.
The repository is also shared, which means that an application deployed in one instance will
show up in the list of deployed modules for all instances. Thus creating the second repository
for each instance should be desired. See <a href="/confluence/display/GMOxDOC30/Configuring+multiple+repositories"
title="Configuring multiple repositories">Configuring multiple repositories</a></p>

<h1><a name="RunningmultipleGeronimoinstances-Creatinganewserverinstance"></a>Creating
a new server instance</h1>

<p>Start with a fresh image of Geronimo. Do not use an image that has been used to run
the default instance.</p>

<p>To create an instance named <tt>foo</tt> do the following. All your instance
data will be put in <tt>&lt;geronimo_home&gt;/foo</tt>. All the directories
named below are relative to <tt>&lt;geronimo_home&gt;</tt>.<br/>
Follow the procedures as below:</p>
<ol>
	<li>Create a directory <tt>foo</tt> under <tt>&lt;geronimo_home&gt;</tt>.</li>
	<li>Copy <tt>var</tt> and <tt>etc</tt> directories to <tt>foo</tt>.
You can use the command <a href="/confluence/display/GMOxDOC30/gogo+commands+for+Geronimo#gogocommandsforGeronimo-gogocommandsforGeronimogogocommandnewserverins...">deploy:new-server-instance</a>
to help you with this step.</li>
	<li>Recommended: create <tt>foo/repository</tt> and set it up as a second
repository for the Geronimo instance. See <a href="/confluence/display/GMOxDOC30/Configuring+multiple+repositories"
title="Configuring multiple repositories">Configuring multiple repositories</a></li>
	<li>Edit <tt>foo/var/config/config-substitutions.properties</tt> and change
the portOffset. Try using any integers such as 1, 2, 10, 20, 30.. for various instances.</li>
</ol>



<h1><a name="RunningmultipleGeronimoinstances-Runninganinstance"></a>Running
an instance</h1>

<ol>
	<li>Set the <tt>org.apache.geronimo.server.name</tt> system property to
define a server name before you start the server. This system property is null by default,
defining the server instance at <tt>&lt;geronimo_home&gt;</tt> as the
default instance. Use the syntax <tt>&#45;Dorg.apache.geronimo.server.name=foo</tt>
to change the server name to an instance named <tt>foo</tt> located at <tt>&lt;geronimo_home&gt;/foo</tt>.
Add this to your <tt>GERONIMO_OPTS</tt> environment variable:</li>
</ol>


<ul>
	<li>On a Windows system: <tt>set GERONIMO_OPTS "-Dorg.apache.geronimo.server.name=foo"</tt></li>
	<li>On a Unix-like system: <tt>export GERONIMO_OPTS="-Dorg.apache.geronimo.server.name=foo"</tt></li>
</ul>


<ol>
	<li>Start the server using startup
<div class="preformatted panel" style="border-style: solid;border-width: 1px;"><div
class="preformattedContent panelContent">
<pre>&lt;geronimo_home&gt;/bin/startup
</pre>
</div></div></li>
	<li>To shutdown this instance, use the port number of RMI Naming port (default 1099).
For the new instance <tt>foo</tt>, the port number should be 1099 plus portOffset
specified in <tt>foo/var/config/config-substitutions.properties</tt>.
<div class="preformatted panel" style="border-style: solid;border-width: 1px;"><div
class="preformattedContent panelContent">
<pre>&lt;geronimo_home&gt;/bin/shutdown --port &lt;RMI_port_num&gt;
</pre>
</div></div></li>
	<li>To deploy applications to this instance use the port number of RMI Naming port</li>
</ol>
<ul class="alternate" type="square">
	<li>This deploys to the primary Geronimo repository
<div class="preformatted panel" style="border-style: solid;border-width: 1px;"><div
class="preformattedContent panelContent">
<pre>&lt;geronimo_home&gt;/bin/deploy --port &lt;RMI_port_num&gt; deploy
&lt;applications&gt;
</pre>
</div></div></li>
	<li>This deploys to a secondary Geronimo repository exclusive to the Geronimo server
defined in <tt>org.apache.geronimo.server.name=foo</tt> . See <a href="/confluence/display/GMOxDOC30/Configuring+multiple+repositories"
title="Configuring multiple repositories">Configuring multiple repositories</a> for
more detailed instructions.
<div class="preformatted panel" style="border-style: solid;border-width: 1px;"><div
class="preformattedContent panelContent">
<pre>&lt;geronimo_home&gt;/bin/deploy --port &lt;RMI_port_num&gt; deploy
--targets &lt;foo_repo_name&gt; &lt;applications&gt;
</pre>
</div></div></li>
</ul>



<p>The Administrative Console can also be used for all these operations. Connect to
an instance by using the right HTTP port (default 8080).</p>

<h2><a name="RunningmultipleGeronimoinstances-Exampleruntimeformultipleinstances"></a>Example
runtime for multiple instances</h2>

<ul>
	<li>First download the Geronimo bundle distribution</li>
	<li>Determine what you want <tt>GERONIMO_HOME</tt> to be. We will use <tt>/opt/geronimo3</tt>
for this example.</li>
	<li>Unpack the Geronimo bundle, and move the unpacked directory to <tt>/opt/geronimo3</tt></li>
	<li>We'll create two Geronimo instances named gserv1 and gserv2
	<ul>
		<li>Create the Geronimo instance directories as <tt>/opt/geronimo3/gserv1</tt>
and <tt>/opt/geronimo3/gserv2</tt></li>
		<li>Copy the directories <tt>var</tt> and <tt>etc</tt> to
each instance directory</li>
		<li>Create a <tt>repository</tt> directory within each instance directory
and set it up as a second repository for the corresponding Geronimo instance. See <a href="/confluence/display/GMOxDOC30/Configuring+multiple+repositories"
title="Configuring multiple repositories">Configuring multiple repositories</a></li>
		<li>Modify the <tt>gservN/var/config/config-substitutions.properties</tt>
file for each Geronimo instance changing the <tt>PortOffset</tt>. We'll set the
<tt>PortOffset</tt> for <tt>gserv1</tt> to 100 and the <tt>PortOffset</tt>
for <tt>gserv2</tt> to 200 for our example.</li>
		<li>Create a start script in each Geronimo instance directory to make it easier to
start each instance
		<ul>
			<li><tt>/opt/geronimo3/gserv1/start.sh</tt>
<div class="preformatted panel" style="border-style: solid;border-width: 1px;"><div
class="preformattedContent panelContent">
<pre>#!/bin/bash
# Geronimo start script
# instance: gserv1

# Uncomment this to explicitly set Geronimo's runtime Java
#JAVA_HOME=/usr/jdk1.6.0_25
#PATH=${JAVA_HOME}/bin:${PATH}

export GERONIMO_HOME=/opt/geronimo3
export GERONIMO_SERVER=${GERONIMO_HOME}/gserv1
export GERONIMO_OPTS=-Dorg.apache.geronimo.server.dir=${GERONIMO_SERVER}
cd ${GERONIMO_SERVER}

# Normal startup
${GERONIMO_HOME}/bin/startup
# Interactive startup
#${GERONIMO_HOME}/bin/geronimo run
</pre>
</div></div></li>
			<li><tt>/opt/geronimo3/gserv2/start.sh</tt>
<div class="preformatted panel" style="border-style: solid;border-width: 1px;"><div
class="preformattedContent panelContent">
<pre>#!/bin/bash
# Geronimo start script
# instance: gserv2

# Uncomment this to explicitly set Geronimo's runtime Java
#JAVA_HOME=/usr/jdk1.6.0_25
#PATH=${JAVA_HOME}/bin:${PATH}

export GERONIMO_HOME=/opt/geronimo3
export GERONIMO_SERVER=${GERONIMO_HOME}/gserv2
export GERONIMO_OPTS=-Dorg.apache.geronimo.server.dir=${GERONIMO_SERVER}
cd ${GERONIMO_SERVER}

# Normal startuo
${GERONIMO_HOME}/bin/startup
# Interactive startup
#${GERONIMO_HOME}/bin/geronimo run
</pre>
</div></div></li>
		</ul>
		</li>
		<li>On linux, make the start script is executable with chmod: chmod 755 start.sh</li>
	</ul>
	</li>
	<li>Your Geronimo installation file structure should look something similar to this:
<div class="preformatted panel" style="border-style: solid;border-width: 1px;"><div
class="preformattedContent panelContent">
<pre>/opt/geronimo3
|-- LICENSE
|-- NOTICE
|-- README.txt
|-- RELEASE_NOTES-3.0-SNAPSHOT.txt
|-- bin
|-- deploy
|-- etc
|-- gserv1
|   |-- etc
|   |-- repository
|   |-- start.sh
|   `-- var
|-- gserv2
|   |-- etc
|   |-- repository
|   |-- start.sh
|   `-- var
|-- hotbundles
|-- jsr88
|-- lib
|-- repository
|-- schema
`-- var
</pre>
</div></div></li>
	<li>Finally you can start up each instance by executing their associated start script
you just created in the previous step</li>
</ul>



<h1><a name="RunningmultipleGeronimoinstances-Furtherreadings"></a>Further
readings</h1>

<p>To use multiple repositories see <a href="/confluence/display/GMOxDOC30/Configuring+multiple+repositories"
title="Configuring multiple repositories">Configuring multiple repositories</a>.</p>
    </div>
        <div id="commentsSection" class="wiki-content pageSection">
        <div style="float: right;">
            <a href="https://cwiki.apache.org/confluence/users/viewnotifications.action"
class="grey">Change Notification Preferences</a>
        </div>
        <a href="https://cwiki.apache.org/confluence/display/GMOxDOC30/Running+multiple+Geronimo+instances">View
Online</a>
        |
        <a href="https://cwiki.apache.org/confluence/pages/diffpagesbyversion.action?pageId=20645442&revisedVersion=20&originalVersion=19">View
Changes</a>
                |
        <a href="https://cwiki.apache.org/confluence/display/GMOxDOC30/Running+multiple+Geronimo+instances?showComments=true&amp;showCommentArea=true#addcomment">Add
Comment</a>
            </div>
</div>
</div>
</div>
</div>
</body>
</html>

Mime
View raw message