Hi, my colleagues and I at Supabase have worked on libcluster_postgres, a libcluster custom strategy that utilizes PostgreSQL LISTEN and NOTIFY to handle dynamic clustering. This library came out of a requirement for a more reliable discovery method that was cloud agnostic.
By default, the node’s cookie is used as the channel identifier, but you can customize it to anything you want, so long as it is a valid PostgreSQL identifier.
This clustering strategy is being used across 3 different products written in Elixir - Realtime, Supavisor, and Logflare.
I’ve used Redis before to do this job, but since there’s almost zero chance I’ll have to build a clustered system that doesn’t contain postgres I really like this solution.
21:00:14.839 [error] [libcluster:example] Failed to connect to node: myapp@c72329f86177
21:00:19.847 [warning] [libcluster:example] unable to connect to :myapp@c72329f86177
@acrolink it’s probably an aws networking issue. The error is elixir reporting that nodes in the BEAM network are failing to connect as far as I can tell.
Just wanted to leave a note and say, I was having a ton of minor headaches relying on epmd, this just worked. Just in time for needed pubsub/presence features. Thanks for sharing a great library!