This need some work.
On 5.6, a single broker can deal with a failover of the jdbc store.
The difficulty is locking in the master/slave case, or peer cluster case.

The current lock impl (who's job it is to get an exclusive lock on the
store) treats failure of a lock as a fatal event and stops the broker.

What would be great if you could describe how you think it should
work, or how you would like it to work.

I think this is something we can/should support.

On 30 January 2012 16:11, Christian Hilgers <christian.hilg...@consol.de> wrote:
> Hi,
>
> I am trying to setup a redundant ActiveMQ environment using
> * ActiveMQ 5.5.1
> * MySQL Cluster  5.1.47-ndb-7.1.5-cluster-gpl
> * on Solaris 10 zones
> * Java:
>  Java(TM) SE Runtime Environment (build 1.6.0_27-b07)
>  Java HotSpot(TM) Server VM (build 20.2-b06, mixed mode)
> * An application deployed in a Glassfish is using the AMQ
>
>
> The application uses failover connect to select the ActiveMQ master.
> This is working as expected. For all further tests we disabled one
> ActiveMQ. ActiveMQ 1 and MySQL Node 1 are on the same Solaris Zone.
> Same is true for ActiveMQ 2 and MySQL Node 2.
>
> To make it more simple this is the setup used for testing MySQL Failover.
> ActiveMQ 1--+--  MySQL Node 1 192.168.1.30
>            !
>            !----MySQL Node 2 192.168.1.31
>
> MySQL Node 1 and Node 2 are setup as Cluster and I made sure the
> tables get created with NDBCLUSTER engine.
>
> We connect to the MySQL Nodes as follows:
>  <bean id="mysql-ds" class="org.apache.commons.dbcp.BasicDataSource"
> destroy-method="close">
>    <property name="driverClassName" value="com.mysql.jdbc.Driver"/>
>    <property name="url"
> value="jdbc:mysql://192.168.1.30,192.168.1.31/activemq?relaxAutoCommit=true&amp;autoRe
> connect=true&amp;failOverReadOnly=false"/>
>    <property name="username" value="XXX"/>
>    <property name="password" value="YYY"/>
>    <property name="initialSize" value="10"/>
>    <property name="maxActive" value="50"/>
>    <property name="maxIdle" value="15"/>
>    <property name="poolPreparedStatements" value="true"/>
>  </bean>
>
>
> From http://activemq.apache.org/jdbc-master-slave.html I would expect
> that AMQ does a failover from Node 1 to Node 2 instead of doing a restart
> cycle.
>
> What we see is, AMQ chooses a primary database node and as long as we
> stop/start
> the secondary node, nothing happens. If we stop the primary node, with
> secondary
> running the logs show:
> 2012-01-30 13:08:25,121 | ERROR | Failed to update database lock:
> com.mysql.jdbc.exceptions.jdbc4.Communication
> sException: Communications link failure
>
> The last packet successfully received from the server was 30,005
> milliseconds ago.  The last packet sent succes
> sfully to the server was 6 milliseconds ago. |
> org.apache.activemq.store.jdbc.DefaultDatabaseLocker | ActiveMQ
> Cleanup Timer
> com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link
> failure
> ...
> 2012-01-30 13:08:25,125 | INFO  | No longer able to keep the exclusive lock
> so giving up being a master | org.a
> pache.activemq.store.jdbc.JDBCPersistenceAdapter | ActiveMQ Cleanup Timer
> (This is from our 5.6-Snapshot test today, Logs from 5.5.1 look similar)
>
> I did test  with AMQ 5.6 Snapshot from today but no change in behaviour was
> seen.
>
> We tried with
> jdbc:mysql:loadbalance://192.168.1.30,192.168.1.31/activemq?... same
> behaviour.
> We tried with adding other parameter or changing existing ones like
> * setting maxIdle=0 to force a opening a new connection upon each request.
> * adding testOnBorrow=true
> * adding "validationQuery" value="select 'test' from dual"
> No real improvment was visible.
>
> Searching the web and asking in IRC came to
> https://issues.apache.org/jira/browse/AMQ-1780
> https://issues.apache.org/jira/browse/AMQ-2497
> they do indicate it should work,
>
> whereas https://issues.apache.org/jira/browse/AMQ-2414 sounds more like it
> cannot
> work by design.
>
> I can attach the activemq.xml if wanted or needed, I can provide logfiles
> and
> we can test on the environment.
>
> Questions:
> 1. Is anyone here using such a setup successfully? No Broker restarts but
> JDBC failover?
> 2. What should I attach to this thread?
>
> Kind regards
>
> Christian Hilgers
> --
> Christian Hilgers                  |ConSol*
> Tel.   +49.2102.994-483            |Consulting&Solutions Software GmbH
> Fax    +49.2102.994-411            |Berliner Str. 101, 40880 Ratingen
> email: christian.hilg...@consol.de |WWW: http://www.consol.de
>



-- 
http://fusesource.com
http://blog.garytully.com

Reply via email to