Kamailio 3.1.x (OpenSER) ile SIP Load Balancing

Filed in Genel | Gezegen | Linux | SER | SIP | VoIP Leave a comment

     Servis Sağlayıcı iseniz, bir VoIP veya NGN ortamında sahipseniz ve her geçen gün hizmet verdiğiniz sistem üzerinden geçen trafik artıyorsa buna rağmen hala tek bir SIP Proxy, SBC (Session Border Controller), SIP Registrar veya Softswitche sahipseniz artık birşeyler yapmanızın vakti gelmiş demektir. Aksi takdirde sistem yükünüz sature olduğunda müşteri isteklerine cevap veremeyebilir hatta sistemleriniz max yüke ulaştıktan sonra artık hiçbir isteğe cevap vermeyecek hale gelebilir. Bu da sizin için hem müşteri kaybı hem de daha önemlisi prestij kaybı demektir.

Mevcut durum için üretilebilecek çözümler sıralandığında ilk akla gelen yatay genişlemeye gitmektir. Yani mevcut altyapınıza  hali hazırda varolan NGN lojik elemanlarından yenilerini eklemek olacaktır. Fakat sadece yeni elemanları eklemekle kalmamalı bir de bu elemanlar arasında yük paylaşımı yapmalısınız. Yoksa örneğin varolan bir sip proxy nizin sadece donanımını iyileştirmek isterseniz bu da bir yöntemdir. Ama uzun vadede isteklerinizi karşılayamayacaktır. Dolayısıyla bir proxy eklediniz fakat bu durumda bir de load balancer eklemeniz gerekecek.

Proxy, SBC veya Softswitche para verdim bir de Load Balancer a mı para vereceğim derseniz size open source kamailio 3.1.x öneriyorum. SER veya OpenSER i bilenler bilirler yeni kamailio ürünü eski SER versiyonlarının forking sonrasında devam eden kısmıdır ve her geçen gün yeni modüller, özellikler ve versiyonlar çıkmaktadır.

Load Balancing çözümü ile hem ortamınızı genişletmiş hem de single point of failure dan kurtulmuş olarak kendinizi güvende hissetmiş olacaksınız.

Bu makalede sizlere kamailio nun kurulumunda uzunca bahsetmeyeceğim. Kurulum oldukça basit. Kurulum ve db activation linkini takip ederek siz de kolaylıkla kurulumu tamamlayabilirsiniz. Kurulum işlemleri tamamlandıktan sonra yapacağımız 2 şey var.

  1. dispatcher modulunu aktif hale getirmek
  2. kamailio.cfg dosyasını load balancing yapacak şekilde yeniden düzenlemek

Kamailio da load balancing işlemini yapan modülün adına dispatcher denmektedir. Modülün load balancing için birçok algoritması vardır. Bunlardan genel olarak;

  • Round-Robin (sırayla)

  • Weight based load balancing (ağırlık atamalı)

  • Call load balancing ( aramalara göre)

  • Hashing over SIP message attributes (SIP mesajları içeriğine göre)

Bu modul stateless olarak yani durum bilgisi tutmadan çalıştığı için oldukça hafif ve performanslı bir şekilde çalışabilmektedir. Özerinden oldukça yoğun SIP trafiği geçirebilirsiniz.

Dispatcher modülü ile alakalı genel bilgileri verdikten sonra modulde bizim için gerekli olan en önemli fonksiyon ve bu fonksiyonun alabileceği değerlerle alakalı bilgiler verelim.
ds_select_dst(set, alg)

Modül çalıştırıldıktan sonra load balance yapacağı sistemlerin bilgilerini text dosyasından veya database de bulunan dispatcher tablosundan okumaktadır. Bizim örneğimizde bu bilgiler database den okunmaktadır. Yukarıda bahsettiğimiz fonksiyonda load balance yapılacak destinationların adres bilgileri ve algoritma şekillerinin belirtildiği kısımdır.

database deki dispatcher tablosunda aşağıdaki bilgilerin olduğunu düşünelim;

http://www.bayramkaragoz.org/wp-content/uploads/table.jpg

Yukarıda verdiğimiz örneğe göre kamailio ya gelen istekler ilk önce 10.2.1.87 ipsi ile belirtilen ve priority si 1 olan sipwise sunucusuna yönlendirilecek. Eğer bu sunucuya ulaşılamaz ise priority si 0 olan 10.2.1.84 ipli elastix sunucusuna istekler yönledirilecektir.

set = fonksiyonda set ile tabir edilen kısım destinationlara atanan set_id nin numarasının belirtildiği kısımdır. bizim örneğimizde bu değer 1 dir.

alg = buraya girilmesi gereken değer integer dir. Load balancing de kullanıcak algoritmanın seçildiği kısımdır.

Girilebilecek değerler;

“0″ = callerid ye göre hashleme
“1″ = from_uri ya göre hashleme
“2″ = to_uri ya göre hashleme
“3″ = request_uri ya göre hashleme
“4″ = round-robin (sırayla gönderme)
“5″ = authorization-username e göre yönlendirme. username yok ise round-robin kullanılır.
“6″ = rasgele yönlendirme
“7″ = PVs string ine göre yönlendirme
“8″ = ilk destinationa göre yönlendirme. (failover durumları için sıkça kullanılan en önemli lb algoritmasıdır. Biz de örneğimizde bu algoritmayı kullacağız.)
“9″ = ağırlık puanına göre yönlendirme
“10″ = arama yük dağıtımına göre yönlendirme

Son aşama olarak ta kamailio.cfg dosyasını komple temizleyip aşağıdaki örnek config dosyasını default dosya yerine koyalım.

kamailio.cfg

Config dosyasını da yukarıdaki şekilde düzenleyip kamailio yu stop/start ettikten sonra load balancerımız hazır duruma geçmiştir.

Test Aşaması;

nagios sunucusu = 10.2.1.83

kamailio LB sunucusu = 10.2.1.86

sipwise sunucusu = 10.2.1.87

elastix sunucusu = 10.2.1.84

Test olarak nagios sunucusu(10.2.1.83) üzerinden load balancera OPTIONS mesajları göndererek kamailio nun ve diğer LB için belirlenen destinationların davranışlarını gözlemleyelim. kamailio, sipwise ve elastix sunucuları üzerinde tshark ile 5060 portunu dinleyerek trafiğin nereye yönlendiğine bakalım.

nagios üzerinden 10.2.1.86 nolu load balancing özelliğini aktif ettiğimiz kamailio üzerine OPTIONS mesajı gönderip tüm sunucularda trace açıyorum.

kamailio trace çıktısı;

tshark port 5060
Running as user "root" and group "root". This could be dangerous.
Capturing on eth0
0.000000 10.2.1.83 -> 10.2.1.86 SIP Request: OPTIONS sip:test@10.2.1.86
0.048693 10.2.1.86 -> 10.2.1.87 SIP Request: OPTIONS sip:test@10.2.1.86
0.051443 10.2.1.87 -> 10.2.1.86 SIP Status: 100 Trying
0.068035 10.2.1.87 -> 10.2.1.86 SIP Status: 403 Domain not served here
0.068654 10.2.1.86 -> 10.2.1.83 SIP Status: 403 Domain not served here

sipwise trace çıktısı;

Running as user "root" and group "root". This could be dangerous.
Capturing on eth0
0.000000 10.2.1.86 -> 10.2.1.87 SIP Request: OPTIONS sip:test@10.2.1.86
0.000739 10.2.1.87 -> 10.2.1.86 SIP Status: 100 Trying
0.017228 10.2.1.87 -> 10.2.1.86 SIP Status: 403 Domain not served here

Görünüşe göre Load Balancing işlemimiz çalışıyor. Bir de sipwise sunucusunu down edip gönderilen isteğin elastix yönlendiğini görerek testimizi bitirelim.

kamailio trace çıktısı;

213.449915 10.2.1.83 -> 10.2.1.86 SIP Request: OPTIONS sip:test@10.2.1.86
213.456811 10.2.1.86 -> 10.2.1.87 SIP Request: OPTIONS sip:test@10.2.1.86
213.944417 10.2.1.86 -> 10.2.1.87 SIP Request: OPTIONS sip:test@10.2.1.86
213.950158 10.2.1.83 -> 10.2.1.86 SIP Request: OPTIONS sip:test@10.2.1.86
214.935501 10.2.1.86 -> 10.2.1.87 SIP Request: OPTIONS sip:test@10.2.1.86
214.950494 10.2.1.83 -> 10.2.1.86 SIP Request: OPTIONS sip:test@10.2.1.86
215.472834 10.2.1.86 -> 10.2.1.84 SIP Request: OPTIONS sip:test@10.2.1.86
215.473626 10.2.1.84 -> 10.2.1.86 SIP Status: 200 OK
215.473849 10.2.1.86 -> 10.2.1.83 SIP Status: 200 OK

elastix trace çıktısı;

Running as user "root" and group "root". This could be dangerous.
Capturing on eth0
0.000000 10.2.1.86 -> 10.2.1.84 SIP Request: OPTIONS sip:test@10.2.1.86
0.000497 10.2.1.84 -> 10.2.1.86 SIP Status: 200 OK
2 packets captured

İşte tam istediğimiz şekilde LB işlemi yapılıyor. Sipwise sunucusu yeniden up durumuna geçtiğinde istekler sipwise üzerine yönlendirilecektir.

KAYNAKLAR;

http://nil.uniza.sk/sip/kamailio/installing-kamailio-31-debian-lenny

http://nil.uniza.sk/sip/kamailio/adding-mysql-support-kamailio-31-debian-lenny

http://kamailio.org/docs/modules/stable/modules_k/dispatcher.html

VN:F [1.9.13_1145]
Rating: 0.0/10 (0 votes cast)
VN:F [1.9.13_1145]
Rating: 0 (from 0 votes)
Share
PDF    Send article as PDF   

, , ,

SIP, VoIP Dökümantasyon

Filed in Asterisk | Genel | SER | SIP | VoIP Leave a comment

Herkese Selamlar,

Uzunca bir aradan sonra tekrar yazılarıma başlamak istiyorum. Güzel bir başlangıç olması için 2 yıl önce bir STH operatörüne verdiğim VOIP eğitiminin tüm slaytlarını Dökümanlarım sayfası altında yayınladım. Özellikle bu işe yeni başlayanlar için yararlı olacağını düşündüğüm bu dökümanlara yenilerini eklemeyi düşünüyorum. Ayrıca yine VoIP ve NGN ile alakalı yararlı olabilecek alıntı dökümanları da bu sayfada yayınlamaya çalışacağım. Herkese faydalı olması dileklerimle…

VN:F [1.9.13_1145]
Rating: 10.0/10 (1 vote cast)
VN:F [1.9.13_1145]
Rating: 0 (from 0 votes)
Share
Free PDF    Send article as PDF   

TOP