Skip to content
Indus LeveL
voip kazoo freeswitch kamailio aws docker sysadmin telecommunications

Deploying Highly Available Kazoo VoIP Clusters with FreeSWITCH and Kamailio

An expert systems engineering guide to deploying highly scalable Kazoo VoIP clusters on AWS using FreeSWITCH media servers, Kamailio SIP proxies, and Kratos API gateways.

2 min read
Cover illustration representing Kazoo VoIP cluster architecture, FreeSWITCH media servers, Kamailio SIP proxies, and Kratos API gateways on AWS

When designing carrier-grade, multi-tenant Unified Communications and VoIP platforms, traditional standalone PBX servers (like Asterisk or FreePBX) cannot scale horizontally. To support thousands of concurrent SIP calls across multiple cloud zones, you must decouple your SIP routing from your media processing.

Kazoo by 2600Hz is an incredibly robust open-source telecommunications platform that achieves absolute horizontal scalability. It pairs Kamailio as the high-speed SIP edge proxy with FreeSWITCH as the heavy media processing engine, coordinating state across RabbitMQ and CouchDB.

In this guide, I will explore the architectural blueprint for deploying a highly available Kazoo VoIP cluster on AWS: configuring Kamailio SIP edge proxies, provisioning FreeSWITCH media servers, deploying Kratos API microservices, and managing containerized communication streams.

Prerequisites

You will need an AWS VPC environment with dedicated public and private subnets, alongside administrative access to launch EC2 instances and manage Security Groups.


Step 1: Architectural Overview of the Kazoo Cluster

A resilient Kazoo VoIP cluster decouples communication into three distinct tiers:

  1. Kamailio SIP Edge Tier: Handles incoming SIP registrations, NAT traversal, and load balancing across media nodes.
  2. FreeSWITCH Media Tier: Processes heavy audio transcoding, IVRs, conference bridges, and voicemail recording.
  3. Kazoo / Kratos API Tier: Manages business logic, billing, account provisioning, and webhooks via Erlang microservices.

Step 2: Deploying Kamailio SIP Edge Proxies (kazoo-kamailio)

The Kamailio proxy tier acts as the public-facing gateway for all SIP endpoints.

# Navigate to Kamailio deployment directory
cd /home/wazeem/bilal_abassi_aws_docker_project/kazoo-kamailio/

# Deploy Kamailio container attached to host network for direct SIP port binding
docker run -d --net=host --restart=unless-stopped --name kazoo-kamailio \
    -e KAMAILIO_CUSTOM_CONFIG=/etc/kamailio/kamailio.cfg \
    -e RABBITMQ_HOST=rabbitmq.internal.induslevel.com \
    kazoo/kamailio:latest

Critical Security Group Configuration (UDP Port 5060)

Ensure your AWS Security Group explicitly allows inbound UDP port 5060 for SIP signaling, while restricting administrative ports to your management IP.


Step 3: Deploying FreeSWITCH Media Servers (kazoo-freeswitch)

The FreeSWITCH tier sits securely inside your private VPC subnets, receiving SIP traffic routed from Kamailio.

# Navigate to FreeSWITCH deployment directory
cd /home/wazeem/bilal_abassi_aws_docker_project/kazoo-freeswitch/

# Deploy FreeSWITCH container exposing RTP media port ranges
docker run -d --net=host --restart=unless-stopped --name kazoo-freeswitch \
    -e FREESWITCH_IP=10.16.32.45 \
    -e RABBITMQ_HOST=rabbitmq.internal.induslevel.com \
    kazoo/freeswitch:latest

AWS Security Group Configuration (UDP Ports 16384-32768)

FreeSWITCH requires wide RTP port ranges to transmit real-time audio streams. Open UDP ports 16384-32768 between your media instances and your edge proxies.


Step 4: Deploying Kratos API Microservices (kratosapi)

To administer your VoIP cluster and allow customers to manage their extensions via web applications, deploy the Kratos API microservice tier.

# Navigate to Kratos API deployment directory
cd /home/wazeem/bilal_abassi_aws_docker_project/kratosapi/

# Deploy Kratos API gateway container
docker run -d -p 8000:8000 --restart=unless-stopped --name kratos-api \
    -e COUCHDB_HOST=couchdb.internal.induslevel.com \
    -e RABBITMQ_HOST=rabbitmq.internal.induslevel.com \
    kazoo/kratosapi:latest

References

Back to Blog
Share:

Follow along

Stay in the loop — new articles, thoughts, and updates.