{"id":719,"date":"2020-04-06T07:22:10","date_gmt":"2020-04-06T00:22:10","guid":{"rendered":"http:\/\/www.otakudang.org\/?p=719"},"modified":"2020-04-06T07:22:10","modified_gmt":"2020-04-06T00:22:10","slug":"replikasi-usrloc-kamailio-dengan-dmq_usrloc","status":"publish","type":"post","link":"https:\/\/www.otakudang.org\/?p=719","title":{"rendered":"Replikasi usrloc Kamailio Dengan dmq_usrloc"},"content":{"rendered":"<p>Salah satu redundansi SIP yang digunakan di kantor adalah dengan replikasi&nbsp;<em>usrloc&nbsp;<\/em>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).<\/p>\n<p>Untuk mereplikasi AoR\/usrloc saya menggunakan modul dmq<\/p>\n\n\n<p>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. <\/p>\n\n\n\n<h3 class=\"wp-block-heading\">sip01.domain.tld (10.0.0.1)<\/h3>\n\n\n\n<p>Dengan asumsi server yang dijalankan adalah Centos versi 7 dan ini adalah SIP server untuk Kazoo platform yang sudah disetup dan berjalan, install dmq:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>yum install -y kamailio-dmq_userloc.x86_64<\/code><\/pre>\n\n\n\n<p>Karena ini adalah salah satu komponen dari Kazoo platform, edit file <strong>\/etc\/kazoo\/kamailio\/default.cfg<\/strong>, dan tambahkan baris berikut:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>...\n...\n...\n####### DMQ &amp; dmq_userloc #######\nloadmodule \"dmq.so\"\nloadmodule \"dmq_usrloc.so\"\nmodparam(\"dmq\", \"server_address\", \"sip:10.0.0.1:5060\")\nmodparam(\"dmq\", \"notification_address\", \"sip:10.0.0.2:5060\")\nmodparam(\"dmq\", \"num_workers\", 8)\nmodparam(\"dmq\", \"ping_interval\", 90)\nmodparam(\"dmq_usrloc\", \"enable\", 1)\nmodparam(\"dmq_usrloc\", \"sync\", 0)\n...\n...\n...\n<\/code><\/pre>\n\n\n\n<p>Perhatikan baris yang ada <em>server_address<\/em> dan <em>notification_address<\/em>. Untuk server pertama, <em>server_address<\/em> diisikan ip address dari server sip01.domain.tld, dan <em>notification_address <\/em>diisikan sip address sip02.domain.tld.<\/p>\n\n\n\n<p>Lalu masih di dalam file yang sama, tapi di dalam block <em>route<\/em>, tambahkan baris:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>...\n...\n...\n# routing dmq \n    if(is_method(\"KDMQ\"))\n        {\n                dmq_handle_message();\n        }\n...\n...\n...<\/code><\/pre>\n\n\n\n<p>Save dan restart service kamailio.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"> sip02.domain.tld (10.0.0.1) <\/h3>\n\n\n\n<p>Pada dasarnya kita melakukan hal yang sama dengan sip server pertama. Install module <em>dmq <\/em>di server sip server kedua.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>yum install -y kamailio-dmq_userloc.x86_64<\/code><\/pre>\n\n\n\n<p>Lalu konfig file <strong>\/etc\/kazoo\/kamailio\/default.cfg<em> <\/em><\/strong>dan tambahkan baris berikut:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>...\n...\n...\n####### DMQ &amp; dmq_userloc #######\nloadmodule \"dmq.so\"\nloadmodule \"dmq_usrloc.so\"\nmodparam(\"dmq\", \"server_address\", \"sip:10.0.0.2:5060\")\nmodparam(\"dmq\", \"notification_address\", \"sip:10.0.0.1:5060\")\nmodparam(\"dmq\", \"num_workers\", 8)\nmodparam(\"dmq\", \"ping_interval\", 90)\nmodparam(\"dmq_usrloc\", \"enable\", 1)\nmodparam(\"dmq_usrloc\", \"sync\", 0)\n...\n...\n...<\/code><\/pre>\n\n\n\n<p>Perhatikan di baris yang ada <em>server_address<\/em> dan <em>notification_address<\/em>. IP address diset berbalik dengan konfigurasi terhadap sip server pertama. Selanjutnya untuk blok <em>route<\/em> sama:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>...\n...\n...\n# routing dmq \n    if(is_method(\"KDMQ\"))\n        {\n                dmq_handle_message();\n        }\n...\n...\n...<\/code><\/pre>\n\n\n\n<p>Save file konfigurasi dan reload Kamailio.<\/p>\n\n\n\n<p><\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Test Hasil<\/h3>\n\n\n\n<p>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:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>kamctl ul show --brief | jq<\/code><\/pre>\n\n\n\n<p>Perhatikan output di bagian berikut untuk kedua server:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code> \"Stats\": {\n            \"Records\": 670,\n            \"Max-Slots\": 4\n          }\n<\/code><\/pre>\n\n\n\n<p>Untuk entri <em>Records<\/em> baik di server pertama maupun server kedua, harusnya berjumlah sama yaitu <em>670<\/em>. Jika ada perbedaan paling hanya 5 &#8211; 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:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>{\n   \"AoR\": \"user_8udxaw@11778f.sip.domain.tld\"\n}<\/code><\/pre>\n\n\n\n<p>Kita bisa search AoR tersebut di kedua server dengan cara:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>kamctl ul show user_8udxaw@11778f.sip.domain.tld | jq<\/code><\/pre>\n\n\n\n<p>Jika tanpa <em>dmq<\/em> user tersebut hanya ada di salah satu server. Jika dengan <em>dmq<\/em> yang terinstall dengan baik, maka di kedua server mencatat AoR yang sama sekaligus. <\/p>\n","protected":false},"excerpt":{"rendered":"<p>Salah satu redundansi SIP yang digunakan di kantor adalah dengan replikasi&nbsp;usrloc&nbsp;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 &hellip; <\/p>\n<p class=\"link-more\"><a href=\"https:\/\/www.otakudang.org\/?p=719\" class=\"more-link\">Continue reading<span class=\"screen-reader-text\"> &#8220;Replikasi usrloc Kamailio Dengan dmq_usrloc&#8221;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[12,11],"tags":[],"class_list":["post-719","post","type-post","status-publish","format-standard","hentry","category-kamailio","category-kazoo","entry"],"_links":{"self":[{"href":"https:\/\/www.otakudang.org\/index.php?rest_route=\/wp\/v2\/posts\/719","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.otakudang.org\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.otakudang.org\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.otakudang.org\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.otakudang.org\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=719"}],"version-history":[{"count":2,"href":"https:\/\/www.otakudang.org\/index.php?rest_route=\/wp\/v2\/posts\/719\/revisions"}],"predecessor-version":[{"id":804,"href":"https:\/\/www.otakudang.org\/index.php?rest_route=\/wp\/v2\/posts\/719\/revisions\/804"}],"wp:attachment":[{"href":"https:\/\/www.otakudang.org\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=719"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.otakudang.org\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=719"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.otakudang.org\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=719"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}