<div dir="ltr">Hi Stanislav,<div>Your suggestion seems to work. I've started 3 nodes one@ and two@ connected in a cluster, and three@ with the option you specify. I get:</div><div><br></div><div><font face="monospace">(<b>one</b>@dev.local)1> net_kernel:connect_node('two@dev.local'). <br>true<br>(<b>one</b>@dev.local)2> nodes().<br>['two@dev.local']<br><br>(<b>two</b>@dev.local)1> nodes().<br>['one@dev.local']</font><br><br>When I then connect three@ to one@:</div><div><br></div><div><font face="monospace">(<b>three</b>@dev.local)1> net_kernel:connect_node('one@dev.local').<br>true<br>(<b>three</b>@dev.local)2> nodes().<br>['one@dev.local']</font></div><div><font face="monospace"><br></font></div><div><font face="monospace">(<b>one</b>@dev.local)3> nodes().<br>['two@dev.local','three@dev.local']</font><br><br></div><div>While two@ doesn't change:</div><div><br></div><div><font face="monospace">(<b>two</b>@dev.local)2> nodes().<br>['one@dev.local']</font><br></div><div><br></div><div><br></div><div>What is the advantage over using a hidden node? Here below is the output with one@ and two@ in a full cluster, while three@ has been started with the -hidden option and has been connected only to one@:</div><div><br></div><div><div><font face="monospace">(<b>one</b>@dev.local)1> nodes().<br>['two@dev.local']<br>(<b>one</b>@dev.local)2> nodes(hidden).<br>['three@dev.local']</font></div><div><font face="monospace">(<b>one</b>@dev.local)3> register(shell, self()).<br>true<br></font></div><div><br></div><div><font face="monospace">(<b>two</b>@dev.local)1> nodes().<br>['one@dev.local']<br>(<b>two</b>@dev.local)2> nodes(hidden).<br>[]</font><br></div><div><br></div><div><font face="monospace">(<b>three</b>@dev.local)1> {shell, 'one@dev.local'} ! hello.<br>hello<br><br>(<b>one</b>@dev.local)4> flush().<br>Shell got hello<br>ok</font></div></div><div><br></div><div><br></div><div>Thank you for your help!</div><div>r.</div><div><br></div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Mon, Jul 12, 2021 at 8: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>