[GIS] Geoserver clustering

clusteringgeoserver

I am running into problems configuring the jms clustering of Geoserver.

Here is the background:

I have 4 virtualboxes, each running a Geoserver 2.7.1 with the
jms-cluster extension. I would like to keep the embedded broker in a
matter of simpler installation. Also I would like to preserve this kind
of peer to peer network because it supports easily the add or removal of
node and because clients, do not have to know the broker network config.

However, my network admin announced me multicast will not be allowed in
production environment. So as I know a priori the ip addresses of all
the geoserver instances, I would like to change the multicast to a set
of static ip.

But, for now, I did not succeed… jms brokers do not see each others.

I have even tried with a specific broker.xml:

<?xml version="1.0" encoding="UTF-8"?>
<beans
    xmlns="http://www.springframework.org/schema/beans"
    xmlns:amq="http://activemq.apache.org/schema/core"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd
                        http://activemq.apache.org/schema/core http://activemq.apache.org/schema/core/activemq-core.xsd">
  <bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"/>
  <broker useJmx="true" xmlns="http://activemq.apache.org/schema/core">

    <amq:persistenceAdapter>
      <kahaDB directory="${activemq.base}/kahadb" lockKeepAlivePeriod="0" />
    </amq:persistenceAdapter>

    <networkConnectors xmlns="http://activemq.apache.org/schema/core">
      <networkConnector uri="static:(tcp://host1:61616,tcp://host2:61616,tcp://host3:61616,tcp://localhost:61616)" />
    </networkConnectors>

    <transportConnectors>
      <transportConnector name="openwire" uri="${activemq.transportConnectors.server.uri}"
                <!-- I HAVE TRIED WITH AND WITHOUT THIS NEXT LINE -->
                     discoveryUri="static:(tcp://host1:61616,tcp://host2:61616,tcp://host3:61616,tcp://localhost:61616)"
/>
    </transportConnectors>
  </broker>
</beans>

Is there a way to configure the activemq discovery with a fixed set
of ip?

I have already checked the activemq documentation
(http://activemq.apache.org/networks-of-brokers.html) but I can have it
working so perhaps it is linked to the fact the broker is embedded.

Best Answer

I found the solution for this problem using an external broker per geoserver node: the only step I missed was to set the var 'connection' of the cluster.properties to TRUE. This field can be found in the web UI in the cluster configuration panel, but it is named "Slave connection". A bit confusing!

Related Question