I had set up two brokers based on master-slave mode.
What I'm suffering are the two problems:
1, NDB store engine of Mysql cluster does not support distributed lock
    so brokers based on master-slave mode fails to get the exclusive lock and 
finally two masters are bringing up.
2, With the store of Mysql cluster the performance is slow than the single mysql
    and from time to time the producer blocks for several mintues and resumes  
to send messages.
    Because no error logs and dead locks are found in brokers and mysql nodes
    So I have to give up the store of mysql cluster.

At 2012-01-31 21:13:53,"Gary Tully" <gary.tu...@gmail.com> wrote: >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 >> >> >> T
 he 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.jd
 bc.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