So your publishers connect to cluster A, which shovels a VIP that initially points to cluster B, and your consumers connect to B. �To upgrade B, you point the shovel VIP to new cluster C and start new consumers on C, then kill off the consumers on B when they&#39;ve consumed all the messages. �Right? �How do you upgrade cluster A?<div>
<br></div><div>We&#39;d like to have a solution that doesn&#39;t require our publishers/consumers to be touched/restarted at all; since we&#39;re starting with a clean sheet we can build whatever intelligence we need into our publishers/consumers. �One idea is to have 2 clusters, a primary A and secondary B, have publishers normally publish to A only, and have consumers consume from both A and B. �Then to upgrade A, we would need a way to trigger publishers to start publishing to B, and then once all the queues on A were drained by consumers we&#39;d shut it down and upgrade. �Then we&#39;d need a similar trigger to switch the publishers back to A.</div>
<div><br></div><div>I think if we define a publishing VIP in our load balancer and have publishers connect to that, we could accomplish the publishing redirection from A to B and back. �To switch them to cluster B, we would terminate those VIP connections and point the VIP to cluster B, and then vice-versa after A is upgraded. �We&#39;d just need to make sure the publishers automatically reconnect to the VIP after being disconnected.</div>
<div><br></div><div>Sound right?</div><div><br></div><div>thx,</div><div>Chris</div><div><br><div class="gmail_quote">On Wed, Dec 5, 2012 at 7:19 PM, McIntosh Jason <span dir="ltr">&lt;<a href="mailto:mcintoshj@gmail.com" target="_blank">mcintoshj@gmail.com</a>&gt;</span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Design we use:<br>
<br>
Shovel to a virtual ip rabbit cluster.<br>
Rabbit consumers on that cluster.<br>
Start new cluster.<br>
Can point consumers to hard coded cluster.<br>
Shift shovel and/or change VIP to point to new cluster.<br>
When all messages on old consumers cleaned, shut them down point em to new cluster.<br>
<br>
Our consumers are java apps built into rpms we deploy, so updates are just a restart/new rpm deploy<br>
<br>
This is pretty rough but hope it helps!<br>
Jason<br>
<br>
Sent from my iPhone<br>
<div class="HOEnZb"><div class="h5"><br>
On Dec 5, 2012, at 9:00 PM, Chris Toomey &lt;<a href="mailto:ctoomey@gmail.com">ctoomey@gmail.com</a>&gt; wrote:<br>
<br>
&gt; Belated follow-up on this thread. �Can you talk more about how you manage<br>
&gt; this? �E.g., how do you ensure that clients continue consuming from the old<br>
&gt; cluster until all the messages published to it have been consumed? �And<br>
&gt; during the transition time, consuming clients consume from both old and new<br>
&gt; cluster, right? �What hardware/software do you use to gradually shift<br>
&gt; publishing from old to new cluster?<br>
&gt;<br>
&gt; We&#39;re just now designing and implementing our infrastructure and apps so<br>
&gt; would like to get it as right as possible from the beginning. �Anyone else<br>
&gt; using/recommend other approaches to this problem?<br>
&gt;<br>
&gt; thx,<br>
&gt; Chris<br>
&gt;<br>
&gt;<br>
&gt; Laing, Michael P. wrote<br>
&gt;&gt; We bring up parallel infrastructure with a complete new cluster and<br>
&gt;&gt; gradually shift load to it using weighted routing.<br>
&gt;&gt;<br>
&gt;&gt; This won&#39;t work for everybody, but we have designed our apps with this in<br>
&gt;&gt; mind.<br>
&gt;&gt;<br>
&gt;&gt; Michael<br>
&gt;&gt;<br>
&gt;&gt; From: Chris Toomey &amp;lt;<br>
&gt;<br>
&gt;&gt; ctoomey@<br>
&gt;<br>
&gt;&gt; &amp;lt;mailto:<br>
&gt;<br>
&gt;&gt; ctoomey@<br>
&gt;<br>
&gt;&gt; &amp;gt;&gt;<br>
&gt;&gt; ...<br>
&gt;&gt; That&#39;s unfortunate about having to shut down the whole cluster to upgrade<br>
&gt;&gt; it -- it means that our applications will need to have some additional HA<br>
&gt;&gt; queueing mechanism upstream to buffer up the messages to be published<br>
&gt;&gt; during the downtime :-(.<br>
&gt;&gt;<br>
&gt;&gt; What kinds of solutions are people using for that problem?<br>
&gt;<br>
&gt;<br>
&gt;<br>
&gt;<br>
&gt;<br>
&gt; --<br>
&gt; View this message in context: <a href="http://rabbitmq.1065348.n5.nabble.com/High-availability-questions-tp23690p23889.html" target="_blank">http://rabbitmq.1065348.n5.nabble.com/High-availability-questions-tp23690p23889.html</a><br>

&gt; Sent from the RabbitMQ mailing list archive at Nabble.com.<br>
&gt; _______________________________________________<br>
&gt; rabbitmq-discuss mailing list<br>
&gt; <a href="mailto:rabbitmq-discuss@lists.rabbitmq.com">rabbitmq-discuss@lists.rabbitmq.com</a><br>
&gt; <a href="https://lists.rabbitmq.com/cgi-bin/mailman/listinfo/rabbitmq-discuss" target="_blank">https://lists.rabbitmq.com/cgi-bin/mailman/listinfo/rabbitmq-discuss</a><br>
_______________________________________________<br>
rabbitmq-discuss mailing list<br>
<a href="mailto:rabbitmq-discuss@lists.rabbitmq.com">rabbitmq-discuss@lists.rabbitmq.com</a><br>
<a href="https://lists.rabbitmq.com/cgi-bin/mailman/listinfo/rabbitmq-discuss" target="_blank">https://lists.rabbitmq.com/cgi-bin/mailman/listinfo/rabbitmq-discuss</a><br>
</div></div></blockquote></div><br></div>