Black staircase with seven steps shown in silhouette on a transparent background.

Technical Clustering with libcluster

Automatic node discovery using libcluster with Kubernetes-native configuration. Your nodes find each other without manual IP management. We handle the environment variables so you write minimal setup code.

Distributed Elixir requires nodes to discover and connect to each other. On Gigalixir, we use libcluster with the Kubernetes strategy for automatic discovery. When you scale from one replica to ten, new nodes join the cluster automatically. When nodes terminate, they're removed gracefully. You add libcluster as a dependency, copy our configuration snippet, and deploy. We inject the environment variables that tell libcluster which nodes belong to your app.

Kubernetes-Native Discovery: Gigalixir runs on Kubernetes, so we use Cluster.Strategy.Kubernetes for node discovery. Nodes query the Kubernetes API to find their peers. No hardcoded IP addresses. No DNS polling. No gossip protocols leaking traffic.

Pre-Configured Environment Variables: We automatically set LIBCLUSTER_KUBERNETES_SELECTOR and LIBCLUSTER_KUBERNETES_NODE_BASENAME for your app. Your libcluster config reads these at runtime. No manual configuration per environment.

Proper Node Naming: Each replica gets a unique node name based on its pod identity. We configure the naming scheme so nodes can address each other reliably. Remote console, Observer, and distributed Erlang features all depend on correct node names. We handle this for you.

Works With Releases and Mix: Whether you deploy with Elixir Releases or Mix mode, clustering works the same way. We configure the buildpacks to set node names and cookies correctly so Node.list() returns your peers immediately after deploy.

High-Performance Hosting for Modern Apps.

Stop fighting generic cloud infrastructure.

Whether you’re working with Elixir, Python, or Node.js, get the specialized support and performance your application deserves.