Using multinode mode¶
Deprecated since version 3.8.0: Use Portal configuration instead.
Overview¶
The multinodes mode add the capability to setup more than one catalog using the same web application. By default, only one node is available. The node named is “srv”. Each nodes have their own:
data directory (index, files)
database
The main data directory contains one data folder per node.
This simplifies catalog updates for users maintaining a set of catalogs. It also saves resources by sharing some part of the application eg. all catalogs share the same schemas and thesaurus (to save memory).
User can only login in one node at a time in the same browser (only one session is allowed). When identified, if user tries to switch to another node, the catalog proposes:
to log out and continue to the requested node
to return to previous node

Installations running 200 nodes / servers have been setup. Such configuration require to increase JVM memory configuration (~4Gb for Xmx parameter).
Configuration¶
Trusted hosts¶
In WEB-INF/web.xml
, add the list of hosts name or IP used to access the catalog in the trustedHost
parameter for the following filter:
<filter>
<filter-name>springSecurityFilterChain</filter-name>
<filter-class>jeeves.config.springutil.JeevesDelegatingFilterProxy</filter-class>
<init-param>
<param-name>loginService</param-name>
<param-value>signin</param-value>
</init-param>
<init-param>
<param-name>trustedHost</param-name>
<param-value>localhost</param-value>
</init-param>
</filter>
Note
If you change the hosts name or IP used to access a catalog node in the Web Server or the Java Container, you must update the value in the trustedHost
parameter also.
Registering new node manually¶
Registering a new node is a 2 steps process. First declare the new node
in WEB-INF/web.xml
in order to declare the URL mapping:
<servlet-mapping>
<servlet-name>spring</servlet-name>
<url-pattern>/geosource-8/*</url-pattern>
</servlet-mapping>
Then define the node configuration in WEB-INF/config-node/{{node_id}}.xml
.
The configuration defines:
the node identifier (and if the node is the default one)
the db connection to use
Only one default node is allowed.
For example, to configure a node named geosource-8
using a postgres
database use the following:
<?xml version="1.0" encoding="UTF-8"?>
<beans default-lazy-init="true"
xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context">
<import resource="classpath*:/config-spring-geonetwork.xml"/>
<import resource="../config-db/database_migration.xml"/>
<context:property-override properties-ref="geosource-8-configuration-overrides" />
<bean id="nodeInfo" class="org.fao.geonet.NodeInfo">
<property name="id" value="geosource-8" />
<property name="defaultNode" value="false" />
</bean>
<bean id="geosource-8-configuration-overrides"
class="org.springframework.beans.factory.config.PropertiesFactoryBean">
<property name="properties">
<props>
<prop key="jdbcDataSource.username">www-data</prop>
<prop key="jdbcDataSource.password">www-data</prop>
<prop key="jdbcDataSource.maxActive">2</prop>
<prop key="jdbcDataSource.maxIdle">2</prop>
<prop key="jdbcDataSource.initialSize">2</prop>
<prop key="jdbcDataSource.Url">jdbc:postgresql://localhost:5432/db_8</prop>
</props>
</property>
</bean>
<import resource="../config-db/postgres.xml"/>
</beans>
Styling the node¶
A custom styling could be defined for each node. Add a new css file
in catalog/style
folder. The file name should be like this (replace NODENAME with the proper value): NODENAME_custom_style.css
Creating a node using utility script¶
In WEB-INF/node-utils
, the node-mgr.sh
script helps adding new node eg. to
add a node with id geosource-1044
, in the host www.geosource.com
connecting to postgres
database
db_1044
with a pool size of 2
connections, use:
./node-mgr.sh www-data www-data \
geosource-1044 \
www.geosource.com \
jdbc:postgresql://localhost:5432/db_1044 \
postgres 2
The script does the following tasks:
Adds to
WEB-INF/web.xml
theservlet-mapping
and updates thetrustedHost
element for the new node.Creates the node configuration in
WEB-INF/config-node/{{node_id}}.xml
.Creates the CSS style file for the node in the
catalog/style
folder.