ziinc

ziinc

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.

@filipecabaco @wenbo @chasers @abc3

Showing Posts 1 to 8

jimsynz

jimsynz

Ash Core Team

This is great work.

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.

Congrats!

beepbeepbopbop

beepbeepbopbop

I’ve given this a go, seems to work wonders. That being said, I think the example in the document doesn’t seem right:

config :libcluster,
  topologies: [
    example: [
      strategy: Cluster.Strategy.Postgres,
      config: [
          hostname: "localhost",
          username: "postgres",
          password: "postgres",
          database: "postgres",
          port: 5432,
          parameters: [],
          # optional, defaults to node cookie
          channel_name: "cluster"
      ],
    ]
  ]

Shouldn’t this be LibclusterPostgres.Strategy based from this? libcluster_postgres/lib/strategy.ex at main · supabase/libcluster_postgres · GitHub

filipecabaco

filipecabaco

you are right! this was from an earlier iteration :man_facepalming:

will push a fix to the docs

update: fix: Change URLs in Readme and fix example by filipecabaco · Pull Request #13 · supabase/libcluster_postgres · GitHub

ziinc

ziinc OP

v0.1.2 Release

Link to full changelog

Support for ssl and ssl_opts connection options by @joshknz in #14 for custom SSL certs.

acrolink

acrolink

@ziinc

Thanks for the great library. I am trying to make it work inside an AWS Elastic Beanstalk environment, and using a RDS PostgreSQL 16 server.

Dockerfile specifications:

ARG ELIXIR_VERSION=1.15.7
ARG OTP_VERSION=26.2.5
ARG DEBIAN_VERSION=bullseye-20240513-slim

One instance reports, as an example:

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

What can be the reason for that?

samrose

samrose

@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.

tfwright

tfwright

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!

ziinc

ziinc OP

v0.2.0 Release
Changelog

Improved configuration handling for Postgrex config forwarding, courtesy of @josevalim :folded_hands:

— All posts loaded —

Where Next? Top

Trending in Announcing Top

restlessronin
The repo is at GitHub - cyberchitta/openai_ex: Community maintained Elixir library for OpenAI API · GitHub. Docs are at OpenaiEx User Gu...
152 12366 136
New
type1fool
WebAuthnLiveComponent WebAuthnComponents See this post about renaming the package. Passwordless authentication for Phoenix LiveView app...
New
mudasobwa
I fully migrated to my own harness from Anthropic/Gemini and I think it’s time to share it. Welcome DSH, the DeepSeek Harness, fully writ...
New
ausimian
Castle is a package I put together to assist with building Elixir releases capable of being live-upgraded via the ‘official’ release hand...
New
jimsynz
Beam Bots (or just BB for short) is a framework for building fault-tolerant robotics applications in Elixir using familiar OTP patterns. ...
New
ausimian
Emily is an Elixir library that runs Nx computations on Apple’s MLX. Install it as the default Nx backend and Nx, defn, Axon, Nx.Serving,...
New
kip
In 2021 I started a new library called Tempo with the objective of modelling time as a set of intervals - not as instants. In 2022 I gave...
New

Other Trending Topics Top

budgie
A little off-topic, but I feel like people here have a good head on their shoulders. I used to be quite good at making software. Was luc...
New
KristerV
Hey. Is there anyone here who creates agents in their apps? Not talking about using agents, but creating them. I’m finding it pretty diff...
New
juhalehtonen
There has been a thread to discuss the Stack Overflow Developer Survey on this forum every year since 2018, so here’s yet another one for...
New
budgie
I love Elixir. It’s one of 2 programming languages I’ve ever fallen in love with. But I don’t use it anymore. Serverless was the promis...
New
OndrejValenta
(I just needed to vent somewhere and LinkedIn is full of hope, or hype, I’m not sure which exactly) AI dream has many faces, but general...
New
Null-logic-0
What IDE or editor are you using for Elixir development? Personally, I use Zed, and I really like it, but sometimes I wish there were a ...
New

We're in Beta

About us Mission Statement

Options

Thread Display Mode




Thread Preview

Skip Thread Previews