Replikasi usrloc Kamailio Dengan dmq_usrloc

Salah satu redundansi SIP yang digunakan di kantor adalah dengan replikasi usrloc antar dua SIP registrar di dua datacenter yang berbeda. Lalu hostname akan diresolve ke kedua server tersebut, sehingga jika pada saat ada panggilan masuk dari Offnet ke pelanggan, dan kebetulan salah satu server SIP registrar down beberapa detik sebelum panggilan diteruskan, di SIP server lain masih memiliki AoR/usrloc user yang dituju dan panggilan tetap bisa diteruskan. (Untuk redundansi outbound call tidak akan di bahas di tulisan ini).

Untuk mereplikasi AoR/usrloc saya menggunakan modul dmq

Berikut cara install dan konfigurasi dmq untuk dua SIP server yang saya beri nama sip01.domain.tld (10.0.0.1) dan sip02.domain.tld (10.0.0.2). Skenario berikut ini juga bisa dijalankan untuk dua datacenter yang berbeda, sehingga dmq melakukan sinkronisasi via internet.

sip01.domain.tld (10.0.0.1)

Dengan asumsi server yang dijalankan adalah Centos versi 7 dan ini adalah SIP server untuk Kazoo platform yang sudah disetup dan berjalan, install dmq:

yum install -y kamailio-dmq_userloc.x86_64

Karena ini adalah salah satu komponen dari Kazoo platform, edit file /etc/kazoo/kamailio/default.cfg, dan tambahkan baris berikut:

...
...
...
####### DMQ & dmq_userloc #######
loadmodule "dmq.so"
loadmodule "dmq_usrloc.so"
modparam("dmq", "server_address", "sip:10.0.0.1:5060")
modparam("dmq", "notification_address", "sip:10.0.0.2:5060")
modparam("dmq", "num_workers", 8)
modparam("dmq", "ping_interval", 90)
modparam("dmq_usrloc", "enable", 1)
modparam("dmq_usrloc", "sync", 0)
...
...
...

Perhatikan baris yang ada server_address dan notification_address. Untuk server pertama, server_address diisikan ip address dari server sip01.domain.tld, dan notification_address diisikan sip address sip02.domain.tld.

Lalu masih di dalam file yang sama, tapi di dalam block route, tambahkan baris:

...
...
...
# routing dmq 
    if(is_method("KDMQ"))
        {
                dmq_handle_message();
        }
...
...
...

Save dan restart service kamailio.

sip02.domain.tld (10.0.0.1)

Pada dasarnya kita melakukan hal yang sama dengan sip server pertama. Install module dmq di server sip server kedua.

yum install -y kamailio-dmq_userloc.x86_64

Lalu konfig file /etc/kazoo/kamailio/default.cfg dan tambahkan baris berikut:

...
...
...
####### DMQ & dmq_userloc #######
loadmodule "dmq.so"
loadmodule "dmq_usrloc.so"
modparam("dmq", "server_address", "sip:10.0.0.2:5060")
modparam("dmq", "notification_address", "sip:10.0.0.1:5060")
modparam("dmq", "num_workers", 8)
modparam("dmq", "ping_interval", 90)
modparam("dmq_usrloc", "enable", 1)
modparam("dmq_usrloc", "sync", 0)
...
...
...

Perhatikan di baris yang ada server_address dan notification_address. IP address diset berbalik dengan konfigurasi terhadap sip server pertama. Selanjutnya untuk blok route sama:

...
...
...
# routing dmq 
    if(is_method("KDMQ"))
        {
                dmq_handle_message();
        }
...
...
...

Save file konfigurasi dan reload Kamailio.

Test Hasil

Untuk melihat apakah jumlah pengguna yang teregistrasi di kedua sip server sudah sama (harusnya sama, jika ada perbedaan mungkin sedang dalam tahap sinkronisasi karena kadang-kadang pengguna terputus dan tersambung di sip server) jalankan perintah berikut:

kamctl ul show --brief | jq

Perhatikan output di bagian berikut untuk kedua server:

 "Stats": {
            "Records": 670,
            "Max-Slots": 4
          }

Untuk entri Records baik di server pertama maupun server kedua, harusnya berjumlah sama yaitu 670. Jika ada perbedaan paling hanya 5 – 10 angka saja. Dan jika ingin benar-benar memastikan, ambil contoh satu record dari hasil di atas (harusnya hasil di atas berupa list panjang, tapi dalam contoh di sini hanya diambil potongan output itu saja), misal untuk record:

{
   "AoR": "user_8udxaw@11778f.sip.domain.tld"
}

Kita bisa search AoR tersebut di kedua server dengan cara:

kamctl ul show user_8udxaw@11778f.sip.domain.tld | jq

Jika tanpa dmq user tersebut hanya ada di salah satu server. Jika dengan dmq yang terinstall dengan baik, maka di kedua server mencatat AoR yang sama sekaligus.

Leave a Reply

Your email address will not be published. Required fields are marked *