Load balancer
Yeti load balancer acts as SIP proxy and allows to distribute incoming calls across multiple SEMS nodes.
SIP flow with load-balancer
sequenceDiagram participant O as Call originator<br/> IP 203.0.113.5 participant LB as Yeti Load Balancer participant N as Yeti Node O->>LB: INVITE LB->>O: 100 Trying LB->>N: INVITE <br/> X-ORIG-IP:203.0.113.5 <br/> X-ORIG-PORT:5060 <br/> X-ORIG-PROTO:1 N->>LB: 100 Trying Note over N: call routing N->>LB: 180 Ringing LB->>O: 180 Ringing N->>LB: 200 OK LB->>O: 200 OK O->>LB: ACK LB->>N: ACK N-->>O: RTP O-->>N: RTP N->>LB: BYE LB->>O: BYE O->>LB: 200 OK LB->>N: 200 OK N->>LB: ACK LB->>O: ACK Note over N: CDR writing
Packages installation
Install kamailio packages using system repository or https://deb.kamailio.org/ . Example kamailio configuration present at out yeti-lb repository: https://github.com/yeti-switch/yeti-lb/tree/master/src
Warning
You should register your Load balancer instance as trusted load balancer. See System->Load balancers menu.
Launch
Launch load balancer:
root@server:~# systemctl start kamailio
Checks
Check kamailio running and listening desired sockets:
root@server:~# pgrep kamailio
30853
30854
30855
30856
30857
root@server:~# netstat -lpn | grep kamailio
tcp 0 0 127.0.0.1:5060 0.0.0.0:* LISTEN 30857/kamailio
udp 0 0 127.0.0.1:5060 0.0.0.0:* 30853/kamailio
raw 0 0 0.0.0.0:255 0.0.0.0:* 7 30853/kamailio
unix 2 [ ACC ] STREAM LISTENING 2673337 30856/kamailio /var/run/kamailio//kamailio_ctl
Check for /var/log/syslog on possible errors.
Also you can run daemon in foreground with logging to stderr for debugging purposes:
root@server:~# kamailio /etc/kamailio/kamailio.cfg