<div>Alexis, </div><div><br></div><div><meta http-equiv="content-type" content="text/html; charset=utf-8">Thanks for the inputs. </div><br><div class="gmail_quote">On Mon, Mar 28, 2011 at 2:55 AM, Alexis Richardson <span dir="ltr">&lt;<a href="mailto:alexis@rabbitmq.com">alexis@rabbitmq.com</a>&gt;</span> wrote:<br>

<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">Advait<br>
<br>
There is no benefit to clustering terminal nodes which (as I<br>
understand it) are not sharing internal state with each other.<br>
Instead look to share queues and exchanges by running them on brokers,<br>
and connecting multiple terminal nodes to those brokers.<br></blockquote><div><br></div><div><meta http-equiv="content-type" content="text/html; charset=utf-8"><div>I am running the entire setup -- VMs and the network on a single system. <meta http-equiv="content-type" content="text/html; charset=utf-8">Does that count as sharing the same internal state? The VMs mount the same bare file system, so, for example, I could skip replicating erlang-cookies before clustering (/var/lib/rabbitmq is common). Of course, they have virtualized/individual network stacks and interfaces.</div>

</div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">
You should run RabbitMQ clients at terminal nodes.  Connect them to<br>
brokers running at non-terminal nodes.  For broker-broker links, use<br>
Shovel.  We are working on a federation model that is more flexible<br>
than shovel - if you are interested, talk to Simon (cc&#39;d).<br></blockquote><div><br></div><div>Ah, this might be a problem, as I cannot run any third party applications on non terminal nodes. These nodes are primitives of NS-3 -- just objects responsible for routing etc. Since I did not have any control on non terminal nodes, I had to cluster terminal nodes and assumed that the middleware would take care of setting up overlay paths from publishers to subscribers. My bad, should&#39;ve understood how clustering worked before starting :-/</div>

<div><br></div><div>But coming back to the errors cropping up, is there a way to increase the cluster limit size, even if there is no added benefit of clustering this way?</div><div><br></div><div>@Simon -- could you please direct me to any documentation for the federation model I could use here? Thanks</div>

<div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;"><div><div class="h5">
On Sun, Mar 27, 2011 at 9:33 PM, Advait Alai &lt;<a href="mailto:advaitalai@gmail.com">advaitalai@gmail.com</a>&gt; wrote:<br>
&gt;&gt; However - RabbitMQ clustering is not designed as a way to create<br>
&gt;&gt; pubsub overlays for the wide area.  Its primary goal is scalability of<br>
&gt;&gt; one broker by adding nodes on the same LAN.  This is for, eg, cases<br>
&gt;&gt; where the number of subscriptions (or &quot;bindings&quot;) on the broker grows<br>
&gt;&gt; beyond what one machine can physically cope with.<br>
&gt;&gt;<br>
&gt;&gt; Now, this does not stop you wiring up 1,000s of RabbitMQ brokers.  But<br>
&gt;&gt; using RabbitMQ clustering is the wrong way to do that.  Can you tell<br>
&gt;&gt; us a bit more about the pubsub topology you want to study, please?<br>
&gt;&gt; That may help us suggest the optimal way to solve your problem..<br>
&gt;<br>
&gt; The topology looks like this: <a href="http://imgur.com/8iep0" target="_blank">http://imgur.com/8iep0</a> (taken<br>
&gt; from <a href="http://ctieware.eng.monash.edu.au/twiki/bin/view/Simulation/LargePacket-switchingNetworkTopologies" target="_blank">http://ctieware.eng.monash.edu.au/twiki/bin/view/Simulation/LargePacket-switchingNetworkTopologies</a>)<br>


&gt; The terminal nodes shown in the topology are either publishers or<br>
&gt; subscribers, and I want RabbitMQ to run as a middleware over the entire<br>
&gt; network. The network (routers and links) are simulated by NS3, So it is<br>
&gt; essentially a set of point to point links, where each link is a separate<br>
&gt; network. The terminal nodes are VMs (that would run the amqp/rabbitmq<br>
&gt; scripts) which I am attempting to cluster so they can use a common set of<br>
&gt; queues and exchanges. So all terminal nodes are in different LANs.<br>
&gt;&gt;<br>
&gt;&gt; Also, can you explain why QoS studies require the study of 1,000s of<br>
&gt;&gt; nodes?  Perhaps you mean 1,000s of clients?<br>
&gt;<br>
&gt; I&#39;m not sure I understood -- I&#39;m trying to provide high fidelity results, so<br>
&gt; I thought the testbed should be atleast of the same order of size as the<br>
&gt; network on which it needs to be deployed (&gt;50000 nodes). There are a few<br>
&gt; strict IEEE standards regarding this network that specify the minimum QoS<br>
&gt; guarantees required.<br>
&gt; Is there an easier way to do this?<br>
&gt; Thanks<br>
&gt;&gt;<br>
&gt;&gt; On Sun, Mar 27, 2011 at 7:11 PM, Advait Alai &lt;<a href="mailto:advaitalai@gmail.com">advaitalai@gmail.com</a>&gt; wrote:<br>
&gt;&gt; &gt; Thanks for the reply --<br>
&gt;&gt; &gt; On Sun, Mar 27, 2011 at 9:38 PM, Jerry Kuch &lt;<a href="mailto:jerryk@vmware.com">jerryk@vmware.com</a>&gt; wrote:<br>
&gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt; 150 is a pretty big sounding cluster...  Out of curiosity, what&#39;s<br>
&gt;&gt; &gt;&gt; motivating you to go so big (if you don&#39;t mind saying)?<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt; I am doing a QoS analysis of publish-subscribe overlays using RabbitMQ<br>
&gt;&gt; &gt; in<br>
&gt;&gt; &gt; wide area networks (These are country wide networks, so even a 1000<br>
&gt;&gt; &gt; nodes<br>
&gt;&gt; &gt; might be insufficient :-)) So stuff like packet delay, loss,<br>
&gt;&gt; &gt; out-of-order<br>
&gt;&gt; &gt; delivery etc.<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt; On that note, because RabbitMQ clustering is based on Erlang<br>
&gt;&gt; &gt;&gt; distribution,<br>
&gt;&gt; &gt;&gt; the current practical limit you&#39;ll probably run up against is somewhat<br>
&gt;&gt; &gt;&gt; lower<br>
&gt;&gt; &gt;&gt; than the 150 you have in mind.  Something more like 32 to 64.<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt; Is there a configuration that would let me scale to &gt;64 nodes, even if<br>
&gt;&gt; &gt; it<br>
&gt;&gt; &gt; would not be practical? And in case Erlang does not scale well, I&#39;ll<br>
&gt;&gt; &gt; probably have to resort to entirely another middleware -- any<br>
&gt;&gt; &gt; suggestions<br>
&gt;&gt; &gt; that would work on a larger number of nodes?<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt; If you can say more about your goals it&#39;s likely that someone on the<br>
&gt;&gt; &gt;&gt; Rabbit team can suggest something helpful.<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt; The analysis I&#39;m carrying out on &gt;100 nodes is actually on a single<br>
&gt;&gt; &gt; system.<br>
&gt;&gt; &gt; These &#39;nodes&#39; are actually many light weight linux containers (more or<br>
&gt;&gt; &gt; less<br>
&gt;&gt; &gt; virtual machines) connected by a simulated NS3 network topology. But I<br>
&gt;&gt; &gt; doubt<br>
&gt;&gt; &gt; this would be the cause of the clustering problem, as &lt;50 nodes were<br>
&gt;&gt; &gt; clustering without any difficulty.<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt; On Mar 26, 2011, at 10:32 PM, &quot;Advait Alai&quot; &lt;<a href="mailto:advaitalai@gmail.com">advaitalai@gmail.com</a>&gt;<br>
&gt;&gt; &gt;&gt; wrote:<br>
&gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt; &gt; Hi,<br>
&gt;&gt; &gt;&gt; &gt;<br>
&gt;&gt; &gt;&gt; &gt; I&#39;m trying to add 150 nodes to a RabbitMQ cluster. After around 50<br>
&gt;&gt; &gt;&gt; &gt; nodes, the stop-reset-cluster-start iteration starts giving the<br>
&gt;&gt; &gt;&gt; &gt; error:<br>
&gt;&gt; &gt;&gt; &gt;<br>
&gt;&gt; &gt;&gt; &gt; Stopping node rabbit@node130 ...<br>
&gt;&gt; &gt;&gt; &gt; ...done.<br>
&gt;&gt; &gt;&gt; &gt; Resetting node rabbit@node130 ...<br>
&gt;&gt; &gt;&gt; &gt; ...done.<br>
&gt;&gt; &gt;&gt; &gt; Clustering node rabbit@node130 with [rabbit@node117] ...<br>
&gt;&gt; &gt;&gt; &gt; ...done.<br>
&gt;&gt; &gt;&gt; &gt; Starting node rabbit@node130 ...<br>
&gt;&gt; &gt;&gt; &gt; Error: {cannot_start_application,rabbit,<br>
&gt;&gt; &gt;&gt; &gt;            {bad_return,<br>
&gt;&gt; &gt;&gt; &gt;                {{rabbit,start,[normal,[]]},<br>
&gt;&gt; &gt;&gt; &gt;                 {&#39;EXIT&#39;,{rabbit,failure_during_boot}}}}}<br>
&gt;&gt; &gt;&gt; &gt;<br>
&gt;&gt; &gt;&gt; &gt; Note that I am sequentially adding nodes to build a cluster (as an<br>
&gt;&gt; &gt;&gt; &gt; initialization step) before creating any queues/exchanges or running<br>
&gt;&gt; &gt;&gt; &gt; any<br>
&gt;&gt; &gt;&gt; &gt; amqp script.<br>
&gt;&gt; &gt;&gt; &gt;<br>
&gt;&gt; &gt;&gt; &gt; How do I solve this problem? Is it because RabbitMQ imposes a hard<br>
&gt;&gt; &gt;&gt; &gt; cluster size limit?<br>
&gt;&gt; &gt;&gt; &gt;<br>
&gt;&gt; &gt;&gt; &gt; Also, does RabbitMQ scale well to around 1000 nodes?<br>
&gt;&gt; &gt;&gt; &gt;<br>
&gt;&gt; &gt;&gt; &gt; Thanks<br>
&gt;&gt; &gt;&gt; &gt; _______________________________________________<br>
&gt;&gt; &gt;&gt; &gt; rabbitmq-discuss mailing list<br>
&gt;&gt; &gt;&gt; &gt; <a href="mailto:rabbitmq-discuss@lists.rabbitmq.com">rabbitmq-discuss@lists.rabbitmq.com</a><br>
&gt;&gt; &gt;&gt; &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>
&gt;&gt; &gt;<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt; _______________________________________________<br>
&gt;&gt; &gt; rabbitmq-discuss mailing list<br>
&gt;&gt; &gt; <a href="mailto:rabbitmq-discuss@lists.rabbitmq.com">rabbitmq-discuss@lists.rabbitmq.com</a><br>
&gt;&gt; &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>
&gt;&gt; &gt;<br>
&gt;&gt; &gt;<br>
&gt;<br>
&gt;<br>
</div></div></blockquote></div><br>