Consul/Serf Technical Advice

Hi all,

I’m exploring a use case where we’d like to partition nodes within a single Serf cluster into communication-isolated subgroups. For example:

  • Nodes a,b, c, d,e, f are in one cluster.
  • Nodes a, e, f only communicate and gossip among themselves.
  • Nodes b, c, d form a separate subgroup that only communicate with each other.
  • But technically, all nodes are still part of the same overarching cluster (or process the same user-defined events within their subgroup).

I realize that this likely goes against the assumptions of the Serf/memberlist gossip model, which relies on full membership and open communication for failure detection and convergence. That said, I’m wondering:

  1. Is this kind of partial membership / subgroup isolation possible without breaking protocol invariants?
  2. Could this be approached via custom filtering of broadcast messages or join behavior?
  3. Would this be better handled using separate clusters or even entirely separate memberlist/Serf instances?

I am considering this for performance/logical grouping reasons, but I want to avoid any dangerous anti-patterns or assumptions that would destabilize the cluster.

Any thoughts or insights from the core team or community would be much appreciated!

Thanks :folded_hands: