<div dir="ltr"><div>Another approach that I recall working is one that is cookie-based. Each cookie you set represents cluster membership, so nodes that share a cookie will connect to each other.</div><div><br></div><div>If you create another node that has a distinct cookie, it won't connect to anything else. If I recall properly, you can however call erlang:set_cookie(OtherNode, Cookie) to make a single caller able to use a distinct cookie to talk to OtherNode, meaning it will connect to it, but won't be able to transitively forward the connection unless the peer also shares that cookie.</div><div><br></div><div>This lets you use non-hidden nodes that are parts of clusters but still have them able to privately talk to special nodes by using one-off cookies that act as a way to wall off connection propagation.<br></div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Mon, Jul 12, 2021 at 2:54 PM Stanislav Ledenev <<a href="mailto:s.ledenev@gmail.com">s.ledenev@gmail.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr">If I understand you correctly, erl -connect_all false is what you need.</div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">пн, 12 июл. 2021 г. в 21:27, Roberto Ostinelli <<a href="mailto:ostinelli@gmail.com" target="_blank">ostinelli@gmail.com</a>>:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr">...And of course the diagram would be (without the copy-pasta issues):<div><br></div><div><pre style="white-space:pre-wrap;color:rgb(0,0,0)"><NODE A in cluster> --------- <NODE C in cluster>
\ /
\ /
\ /
<NODE B in cluster>
* * *
* * *
* * *
<NODE B1> <NODE B2> <NODE B3></pre></div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Mon, Jul 12, 2021 at 8:24 PM Roberto Ostinelli <<a href="mailto:ostinelli@gmail.com" target="_blank">ostinelli@gmail.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr">All,<br>Is it possible to have a 1-to-1 connection from a node in a cluster to a single Erlang node which does _not_ connect to the mesh, but only to a very specific Erlang node?<br><br>I've go a very CPU-heavy application and am trying to find ways to offload the CPU computations to Erlang nodes (tha don't need to be in a cluster, except for a single box they refer to).<br><br>Basically something like this:<br><br><font face="monospace"><NODE A in cluster> --------- <NODE B in cluster><br> \ /<br> \ /<br> \ /<br> <NODE B in cluster><br> * * *<br> * * *<br> * * *<br> <NODE B1> <NODE B2> <NODE B></font><br><br>The distributed cluster is composed of nodes A, B and C, but nodes B1, B2 and B3 can communicate directly with node B and that node only. Node B can offload CPU computations to B1, B2, B3 by sending erlang messages to them and receive results back.<br><br>Every node in the cluster needs ~50x the CPU power, therefore I'm trying to avoid having the standard cluster grow so big that it would be generating way too much noise in a full mesh network (especially since it really isn't needed).<br><br>I can of course use a simple custom TCP binary channel, but was wandering if something already exists that I could leverage. I've seen that hidden nodes "Hidden nodes always establish hidden connections to all other nodes except for nodes in the same global group" [1] so if I understand this correctly nodes B1-3 would still connect to A and B, even though the cluster wouldn't know about them.<br><br>Thank you for any considerations you might have,<br>r.<br><br> [1] <a href="http://erlang.org/doc/man/erl.html" target="_blank">http://erlang.org/doc/man/erl.html</a><br></div>
</blockquote></div>
</blockquote></div>
</blockquote></div>