Raffi, Thanks for the pointer.

Completed a bit of reading and understanding the "updateClusterClients" option also read the blog

http://bsnyderblog.blogspot.com/2010/10/new-features-in-activemq-54-automatic.html

As per these options and the blog it appears to me that NOB with "updateClusterClients" is potentially an alternative to master/slave deployment. However, it does not offer H/A solution like master/slave does.

As you mentioned in one of your previous response, you are actually leveraging F5 load balancer to "talk" to master/slave. Is the F5 LB configured with master/slave JMS client? Without an intermediate layer such as F5 LB I suppose we can't have a combination of Master/Slave and NoB with the option of "updateClusterClients".

On 12/1/15 6:26 PM, Basmajian, Raffi wrote:
Hi Rallavagu,

When using "failover:" from client, if the transport connector has 
updateClusterClients="true", the clilent monitors changes in the broker cluster, allowing 
the client to maintain a list of active brokers to use for connection failover. We've tested this 
feature and were very impressed at how well it works. We observed clients failing over to new 
brokers seamlessly, and very fast, no exceptions thrown, well, at least none propagated to 
application code which are the ones we care about :-)

This feature is supported for openwire transport only, not stomp, ws, amqp:

   <transportConnectors>
     <transportConnector
                      name="openwire"
                      uri="tcp://0.0.0.0:61616"
                      updateClusterClients="true"/>
   </transportConnectors>


Full reference here
http://activemq.apache.org/failover-transport-reference.html

Hope that helps
Raffi

-----Original Message-----
From: Rallavagu [mailto:rallav...@gmail.com]
Sent: Tuesday, December 01, 2015 7:33 PM
To: users@activemq.apache.org
Subject: Re: ActiveMQ deployment [ EXTERNAL ]

Raffi, Thanks. This is interesting.

What do you mean by "If connection fails, assuming transport connector is configured to update 
client with cluster changes" as the client is configured with only 
"failover:(tcp://eventbus:61616)"?



On 12/1/15 4:23 PM, Basmajian, Raffi wrote:
That's exactly the configuration we're building; M/S pairs with NoB, connected 
via complete graph.

All clients connect using wide-IP "failover:(tcp://eventbus:61616)", that's it. 
We did this for two reasons:
1) to avoid messy failover configuration on the client,
2) to avoid client-reconfig when topology is scaled out.

Each broker has a special Http service that runs inside broker and queries 
local JMX, responds with following JSON:

{role:master}  or {role:slave}

This makes it easy to implement heartbeat logic using hardware load-balancer, 
like F5.
F5 now pings each broker every 10s to determine which ones are active and which are 
"master"; slaves and inactive nodes are removed from F5 pool.
When client connects using "failover:(tcp://eventbus:61616)", DNS routes to F5 
first, then F5 connects client to master broker in nearest datacenter; this is done for  
initial connection only.
If connection fails, assuming transport connector is configured to update 
client with cluster changes, the client will reconnect on its own; F5 does not 
handle that, which is exactly what we wanted. Control initial connect to 
simplify client config, but leverage ActiveMQ cluster aware clients library to 
manage connection failovers.

Hope that helps,

Raffi


-----Original Message-----
From: Rallavagu [mailto:rallav...@gmail.com]
Sent: Tuesday, December 01, 2015 2:57 PM
To: users@activemq.apache.org
Subject: Re: ActiveMQ deployment [ EXTERNAL ]

Now, I am getting a clearer picture about the options. Essentially, NOB 
provides load balancing while Master/Slave offers pure failover. In case I go 
with combination where a Master/Slave cluster is configured with NOB with other 
Master/Slave cluster how would the client failover configuration would work?

Will a set of consumers always connect a one of the Master/Slave cluster? In 
this case how would load balance work? Thanks.

On 12/1/15 11:32 AM, Basmajian, Raffi wrote:
NoB forwards messages based on consumer demand, not for achieving failover.
You can get failover on the client using standalone brokers, just use 
failover:() protocol from client.
Master/Slave is true failover.

-----Original Message-----
From: Rallavagu [mailto:rallav...@gmail.com]
Sent: Tuesday, December 01, 2015 1:06 PM
To: users@activemq.apache.org
Subject: Re: ActiveMQ deployment [ EXTERNAL ]

Thanks again Johan. As the failover is configured at the client end how would 
the configuration for combined deployment look like?

I was thinking on the lines of NOB because the messages are forwarded
to other broker(s) thus achieving failover capabilities in case the
original broker is failed the duplicate messages are available on
second
(other) broker(s). Am I off in my assumption?

On 12/1/15 9:35 AM, Johan Edstrom wrote:
You want to combine them, the NOB is for communication but JMS is still store and 
forward, i.e if a machine dies, you can have multiple paths, what was in the persistence 
store of said machine is still "dead" until the machine is revived, that's 
where the Master / Slave(s) come in. They'll jump in and start playing that persistence 
store.

/je

On Nov 30, 2015, at 10:57 PM, Rallavagu <rallav...@gmail.com> wrote:

Thanks Johan.

My goal is to achieve high availability (with failover) for producer and consumer in 
addition to mitigate a situation of "there is a chance that one broker has producers 
but no consumers".

As per the documentation, it sounds like NOB is an option which can offer 
failover and scalability. I was wondering if Master/Slave is the only option to 
achieve high availability but it appears to me that NOB can offer the same. 
Wanted to check this with folks here in this list if there is anything I am 
missing.


On 11/30/15 9:28 PM, Johan Edstrom wrote:
What you probably want is a combination of HA and communication.

HA I.e master and slave(s) (Depending on storage) gives you uptime.
NOB gives you communication paths and as such scalability and for some value of 
it versatility.

You can also use the two above and combine that with bridges to build small 
little scalable clouds that forward like say enterprise email systems.

You can also go the completely different route and say that in your Enterprise 
you only use central brokers for messages between systems of importance, then 
you use local broker networks for message patterns, aggregation etc.


There is no one solution here. If you have more specific questions it might be 
easier for people here to help as we might have more associations possible?

/je




On Nov 30, 2015, at 3:25 PM, Rallavagu <rallav...@gmail.com> wrote:

After spending some time reading, with reference to the following
link,

http://activemq.apache.org/clustering.html

What I am trying to figure out is if it is possible to achieve a cluster with fault tolerance deploying with 
"Networks of brokers" or should I consider "Master/Slave" in addition to "Networks 
of brokers". Not sure how the hybrid deploying works. Any comments would help. Thanks.

On 11/25/15 11:13 AM, Rallavagu wrote:
Any takers on this? Thanks.

On 11/24/15 1:37 PM, Rallavagu wrote:
All,

What is the recommended deployment architecture for an enterprise?

1. Master/Slave with replicated Level DB
(http://activemq.apache.org/replicated-leveldb-store.html)

2. Network of Brokers for scalability

3. Hybrid

In case of hybrid, is there a reference document that I could use?
Thanks.



This e-mail transmission may contain information that is proprietary, 
privileged and/or confidential and is intended exclusively for the person(s) to 
whom it is addressed. Any use, copying, retention or disclosure by any person 
other than the intended recipient or the intended recipient's designees is 
strictly prohibited. If you are not the intended recipient or their designee, 
please notify the sender immediately by return e-mail and delete all copies. 
OppenheimerFunds may, at its sole discretion, monitor, review, retain and/or 
disclose the content of all email communications.

Reply via email to