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:
- Is this kind of partial membership / subgroup isolation possible without breaking protocol invariants?
- Could this be approached via custom filtering of broadcast messages or join behavior?
- 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