VICIfast
Guides & tutorials

Load balancing across VICIdial servers

Load balancing spreads agent and web traffic across telephony nodes in a VICIdial cluster. Here is what balances, what does not, and where the limits are.

VICIfast Support
··3 min read
Load balancing across VICIdial servers

Load balancing in VICIdial is not one switch. The web admin and agent screens balance one way, the dialing capacity balances another, and the live audio does not balance at all the way a stateless web app would. Understanding which is which keeps you from building something that looks balanced and falls over the first time a node dies.

This is a cluster topic. Our managed product runs one customer per box, Single tenant, so think of everything below as a self-host architecture you build when a single dialer runs out of capacity. A single box does not need any of it.

What you actually spread

Three layers, three answers. Web and agent HTTP traffic spreads cleanly behind a reverse proxy across multiple web servers, because every node reads the same shared database. Dialing capacity spreads by running several telephony nodes, each carrying a slice of the agents and a slice of the SIP trunk channels. The shared database itself does not spread across telephony nodes — it is one logical store, usually a dedicated DB box with a replica.

flowchart TD
  U[Agents] --> LB[Reverse proxy]
  LB --> W1[Web node 1]
  LB --> W2[Web node 2]
  W1 --> DB[Shared DB server]
  W2 --> DB
  T1[Telephony node 1] --> DB
  T2[Telephony node 2] --> DB
  CAR[Carrier] --> T1
  CAR --> T2

The web tier

Put a reverse proxy in front of two or more web nodes and round-robin agent logins across them. Because VICIdial state lives in the shared database, not in node memory, an agent on web node one and an agent on web node two see the same campaigns and leads. Health checks pull a dead node out of rotation. This is the part of VICIdial that behaves like a normal stateless web app.

The telephony tier

Audio is stateful. An active call lives on the specific Asterisk instance that set it up, and you cannot move a live RTP stream mid-call to another node. So you balance by assignment, not by proxy: you place agents and their campaigns onto specific telephony nodes, and you split your dial channels across nodes through the Server trunk entries so no single box carries every call. The Carrier points DIDs and outbound routes at multiple node IPs. The Keepalive processes on each node keep its own dialer running. There is no magic that auto-rebalances live calls.

If a telephony node dies, its active calls drop and its agents reconnect to a surviving node. That is the Failover story for voice, and it is honest to plan around it rather than pretend live calls survive a node loss. The single server versus cluster post covers when the added complexity is worth it, and the VICIdial install guide shows the full multi-box layout.

When a single box wins

A single well-sized box handles a surprising number of agents before any of this matters, and it removes an entire category of failure modes: no proxy to misconfigure, no node-to-node clock drift, no split-brain risk in the DB layer. VICIfast provisions a Single tenant box in under 40 seconds, and if you genuinely outgrow it you keep root SSH to build a cluster yourself. Reach for load balancing when you have measured the ceiling, not before.

Scale the box first, then scale out. Check server sizes on our pricing page to see how far a single box gets you before a cluster is on the table.

About VICIfast LLC

VICIfast LLC operates a managed VICIdial hosting + BYOI service for outbound and inbound call centers. We run the dialers, the carriers, the recordings pipeline, and the compliance plumbing so operators don’t have to.

Citing this article

VICIfast Engineering. “Load balancing across VICIdial servers”. VICIfast LLC, June 29, 2026. Retrieved from https://vicifast.com/blog/vicidial-load-balancer-setup

Have questions?

Related posts

You might be interested in

VICIfast newsletter

Liked this? Get the next one in your inbox.

We ship the kind of stuff you just read — concrete, numbers-first, no drip. One email when a new post goes live. Unsubscribe in one click.

Comments

Comments are reviewed before they appear. We never publish your email.

No comments yet — be the first.