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