N
Operations
Multi-node Cluster
Run N Funnel nodes — libcluster auto-discovers, PubSub fans out.
▸ How it works
With `libcluster` configured (Gossip in dev, DNS in k8s), nodes auto-discover and connect. `Phoenix.PubSub` is cluster-aware out of the box, so live dashboards on node A see ingest from node B. Ingestion sharding hashes `project_id` to a node; an ingress request that hits the wrong node forwards via `:rpc.call`. Sharding is optional — default is every node accepts.
▸ What this lets you do
- ✓ Horizontally scale ingestion past a single box
- ✓ Rolling deploys with zero ingestion gaps
- ✓ Live dashboards work across nodes — no sticky sessions needed
- ✓ Single Postgres, single source of truth
▸ Get it running
- 1 Set `libcluster` topology in `config/runtime.exs`
- 2 Start more nodes — they auto-join
- 3 Open `Cluster` to see topology and routing
▸ Code examples
# config/runtime.exs
config :libcluster,
topologies: [
funnel: [
strategy: Cluster.Strategy.Kubernetes.DNS,
config: [
service: "funnel-headless",
application_name: "funnel"
]
]
]
Where to find it
/app/p/:org/:project/cluster