HomeDocumentation > User's guide > Clustering > Farming
{scrollbar}

Farming

A configuration can be deployed to a cluster of Geronimo servers via a single logical deployment step. Once deployed to a cluster, this configuration can then be transparently started, stopped or undeployed across all the cluster members.
These two features greatly streamline the maintenance of applications running on a cluster as Geronimo takes care of cluster-wide application distribution and management for you.

Configuration of Cluster Members

  • A specific name should be given to your Geronimo instance for application deployment. This can be achived by updating the following two properties defined within /var/config/config-substitutions.properties: clusterNodeName=NODE1 RemoteDeployHostname=NODE1_IP
  • Cluster members are configured on each Geronimo server, which may but is not required to be a member of the cluster. This is achieved by adding a org.apache.geronimo.farm.config.BasicNodeInfo GBean for each cluster member to the farming configuration of config.xml. This GBean looks like this: <gbean name="org.apache.geronimo.configs/farming/2.1/car?ServiceModule=org.apache.geronimo.configs/farming/2.1/car,j2eeType=NodeInfo,name=Node2_description" gbeanInfo="org.apache.geronimo.farm.config.BasicNodeInfo"> <attribute name="name">NODE2</attribute> <attribute propertyEditor="org.apache.geronimo.farm.config.BasicExtendedJMXConnectorInfoEditor" name="extendedJMXConnectorInfo"> <ns:javabean class="org.apache.geronimo.farm.config.BasicExtendedJMXConnectorInfo" xmlns:ns4="http://geronimo.apache.org/xml/ns/attributes-1.2" xmlns:ns="http://geronimo.apache.org/xml/ns/deployment/javabean-1.0" xmlns=""> <ns:property name="username">system</ns:property> <ns:property name="password">manager</ns:property> <ns:property name="protocol">rmi</ns:property> <ns:property name="host">NODE2_IP</ns:property> <ns:property name="port">1100</ns:property> <ns:property name="urlPath">JMXConnector</ns:property> <ns:property name="local">false</ns:property> </ns:javabean> </attribute> </gbean> It defines network address (host, port, urlPath) and credentials (username and password) to be used to connect to the cluster member via JMX. Such declarations are to be included within the config.xml file, farming module of your Geronimo server.
    By default, the farming configuration defines the local server as a cluster member. To exclude it, you can prevent the GBean NodeInfo to start.

Farm Deployment/Undeployment for geronimo versions 2.1.4 and lower

To deploy a configuration to configured members, you simply deploy it to the MasterConfigurationStore repository defined by the farming configuration. This configuration being stopped out-of-the-box, you may have to start it the first time via this GShell command:

deploy/start org.apache.geronimo.configs/farming//car

farming adds two new repositories to the server: MasterConfigurationStore and ClusterStore. MasterConfigurationStore is the repository you should use most of the time if not always. ClusterStore is a repository you may have to use in specific and infrequent scenarios.
To deploy to MasterConfigurationStore, you pass the --targets flag to the distribute or deploy commands like this:

deploy/distribute --targets XXX,name=MasterConfigurationStore <your module>

Following this deployment

  • MasterConfigurationStore contains a kind of virtual configuration, which has the same name than your deployment and defines GBeans controlling the remote start and stop of the actual configuration cluster-wide; and
  • ClusterStore contains the actual configuration under an altered configuration name, a '_G_SLAVE' is appended to the configuration name.

To undeploy an application use the command
deploy --user system --password manager undeploy default/ClusterTestEAR/1.0/ear

Farm Undeployment for geronimo versions higher than 2.1.4

With geronimo versions higher than 2.1.4 the _G_SLAVE is no longer being used. Instead geronimo uses _G_MASTER for its master application. Do not worry there are no problems for end user. The deployment steps still remains same however for undeployment the user has to use following command.
deploy --user system --password manager undeploy default/ClusterTestEAR_G_MASTER/1.0/ear

Cluster-wide Management of Configurations

To start, stop or undeploy configurations across a cluster, you perform the relevant deployment task against the virtual configuration. All the cluster members configured at the time of the initial deployment must be running otherwise these operations are partially executed. For instance, if three members were configured and only two of them are running when the virtual configuration is undeployed, then the configuration is removed from the ClusterStore of the two running servers. The ClusterStore of the third server still contains the configuration and this latter will have to be manually undeployed on this server.