HI Robert, Here I forwarding the OPensips LB table content,it may help-
mysql> select * from load_balancer; +----+----------+---------------------------+-----------+------------+-------------+ | id | group_id | dst_uri | resources | probe_mode | description | +----+------------+---------------------------------------+-----------+-----------------------+-----------------+ | 1 | 2 | sip:OpenSIPs@x.x.x.1 | sip=5 | 2 | SW#1 | | 2 | 2 | sip:OpenSIPs@x.x.x.2 | sip=4 | 2 | SW#2 | +----+----------+---------------------------+-----------+------------+-------------+ 2 rows in set (0.00 sec) Regards Tushar On Mon, Jun 13, 2011 at 7:40 AM, Tushar Jain <tusshar.j...@gmail.com> wrote: > Hi Robert, > > Thanks for looking into my problem, here I am pasting my opensips.cfg file- > > ____________________________________________________________________ > > > > ####### Global Parameters ######### > > debug=6 > log_stderror=no > log_facility=LOG_LOCAL0 > > fork=yes > children=4 > > port=5060 > > listen=udp:x.x.x.x:5060 > > ####### Modules Section ######## > > mpath="//lib/opensips/modules/" > > loadmodule "db_mysql.so" > loadmodule "signaling.so" > loadmodule "sl.so" > loadmodule "tm.so" > loadmodule "rr.so" > loadmodule "maxfwd.so" > loadmodule "usrloc.so" > loadmodule "registrar.so" > loadmodule "textops.so" > loadmodule "mi_fifo.so" > loadmodule "uri.so" > loadmodule "xlog.so" > loadmodule "acc.so" > loadmodule "siptrace.so" > loadmodule "auth.so" > loadmodule "auth_db.so" > loadmodule "alias_db.so" > loadmodule "domain.so" > loadmodule "permissions.so" > loadmodule "group.so" > loadmodule "drouting.so" > loadmodule "avpops.so" > loadmodule "dialplan.so" > loadmodule "aaa_radius.so" > loadmodule "dialog.so" > loadmodule "load_balancer.so" > > #------ avpops params ----- > modparam("avpops", "db_url", "mysql://opensips:opensipsrw@localhost > /opensips") > modparam("avpops", "avp_table", "usr_preferences") > > #------ load the dpid field to a pseudo-variable $avp(s:dpid) ------ > modparam("auth_db", "load_credentials", "$avp(s:rpid)=rpid > ;$avp(s:countrycode)=contrycode;$avp(s:areacode)=areacode") > modparam("dialplan", "db_url","mysql://opensips:opensipsrw@localhost > /opensips") > > ## attribute of the matched line will be store in the $avp(s:dest) > modparam("dialplan", "attrs_pvar", "$avp(s:dest)") > > > > # ----- drouting params ----- > #modparam("drouting", "sort_order", 0) > modparam("drouting", "use_domain", 1) > modparam("drouting","db_url", "mysql://opensips:opensipsrw@localhost > /opensips") > modparam("drouting", "probing_interval", 60) > modparam("drouting", "probing_from", "sip:pinger@x.x.x.x") > modparam("drouting", "probing_method", "OPTIONS") > modparam("drouting", "probing_reply_codes", "501, 403, 404") > > # ----- Group ---- > #modparam("permissions", "db_mode", 1) > modparam("group","db_url","mysql://opensips:opensipsrw@localhost > /opensips") > > # ----- Permissions ---- > #modparam("permissions", "db_mode", 1) > modparam("permissions","db_url","mysql://opensips:opensipsrw@localhost > /opensips") > > # ----- mi_fifo params ----- > modparam("mi_fifo", "fifo_name", "/tmp/opensips_fifo") > modparam("mi_fifo", "fifo_mode", 0666) > > > modparam("dialog", "dlg_flag", 13) > modparam("dialog", "db_mode", 1) > modparam("dialog", "db_url", "mysql://opensips:opensipsrw@localhost > /opensips") > modparam("dialog", "timeout_avp", "$avp(i:30)") > modparam("dialog", "default_timeout", 3600) > > # ----- rr params ----- > # add value to ;lr param to cope with most of the UAs > modparam("rr", "enable_full_lr", 1) > # do not append from tag to the RR (no need for this script) > modparam("rr", "append_fromtag", 0) > > > # ----- Load Balancer ----- > modparam("load_balancer", "db_url","mysql://opensips:opensipsrw@localhost > /opensips") > modparam("load_balancer", "probing_interval", 60) > modparam("load_balancer", "probing_method", "INFO") > modparam("load_balancer", "probing_from", "sip:1000@x.x.x.x") > modparam("load_balancer", "db_table", "load_balancer") > modparam("load_balancer", "probing_reply_codes", "501, 403, 404") > > # ----- registrar params ----- > /* uncomment the next line not to allow more than 10 contacts per AOR */ > #modparam("registrar", "max_contacts", 10) > > > # ----- usrloc params ----- > > modparam("usrloc", "db_mode", 0) > > /* uncomment the following lines if you want to enable DB persistency > for location entries */ > modparam("usrloc", "db_mode", 2) > modparam("usrloc", "db_url", "mysql://opensips:opensipsrw@localhost > /opensips") > > > # ----- uri params ----- > modparam("uri", "use_uri_table", 0) > > > # ----- acc params ----- > /* what sepcial events should be accounted ? */ > modparam("acc", "early_media", 0) > modparam("acc", "report_ack", 0) > modparam("acc", "report_cancels", 0) > modparam("acc", "detect_direction", 0) > modparam("acc", "failed_transaction_flag", 1) > modparam("acc", "log_level", 1) > modparam("acc", "log_flag", 1) > modparam("acc", "log_missed_flag", 1) > modparam("acc", "db_flag", 1) > modparam("acc", "db_missed_flag", 2) > modparam("acc", "aaa_url", "radius:/etc/radiusclient-ng/radiusclient.conf") > # Point the configuration file > modparam("acc", "service_type", 15) # Set the service_type to 15 > modparam("acc", "aaa_flag", 1) > modparam("acc", "aaa_missed_flag", 1) > modparam("acc", "aaa_extra", "via=$hdr(Via[*]); \ > Digest-User-Name=$Au; \ > Calling-Station-Id=$from; \ > Called-Station-Id=$to; \ > Sip-Translated-Request-URI=$ru; \ > Sip-RPid=$avp(s:rpid); \ > Source-IP=$avp(s:source_ip); \ > Source-Port=$avp(s:source_port); \ > SIP-Proxy-IP=$avp(s:sip_proxy_ip); \ > Canonical-URI=$avp(s:can_uri); \ > Divert-Reason=$avp(s:divert_reason); > \ > User-Agent=$hdr(user-agent); \ > Contact=$hdr(contact); \ > Event=$hdr(event); \ > ENUM-TLD=$avp(s:enum_tld)") > > # ----- radius params ---- > modparam("aaa_radius", > "radius_config","/etc/radiusclient-ng/radiusclient.conf") > > # ----- siptrace params ---- > modparam("siptrace", "db_url", "mysql://opensips:opensipsrw@localhost > /opensips") > modparam("siptrace", "traced_user_avp", "$avp(s:user)") > modparam("siptrace", "trace_table_avp", "$avp(s:siptrace_table)") > modparam("siptrace", "trace_on", 1) > modparam("siptrace", "trace_flag", 22) > modparam("siptrace", "enable_ack_trace", 1) > > > # ----- auth_db params ----- > /* uncomment the following lines if you want to enable the DB based > authentication */ > > modparam("auth_db", "calculate_ha1", yes) > modparam("auth_db", "password_column", "password") > > modparam("auth_db", "db_url","mysql://opensips:opensipsrw@localhost > /opensips") > modparam("auth_db", "load_credentials", "") > > > ####### Routing Logic ######## > > > # main request routing logic > > route{ > > setflag(22); > sip_trace(); > > if (!mf_process_maxfwd_header("10")) { > sl_send_reply("483","Too Many Hops"); > exit; > } > > #---- Sequential requests section ----# > > if (has_totag()) { > # sequential request withing a dialog should > # take the path determined by record-routing > if (loose_route()) { > if (is_method("BYE")) { > setflag(1); # do accounting ... > setflag(3); # ... even if the transaction fails > } else if (is_method("INVITE")) { > # even if in most of the cases is useless, do RR for > # re-INVITEs alos, as some buggy clients do change route set > # during the dialog. > record_route(); > } > # route it out to whatever destination was set by loose_route() > # in $du (destination URI). > route(1); > } else { > if ( is_method("ACK") ) { > if ( t_check_trans() ) { > t_relay(); > exit; > } else { > exit; > } > } > sl_send_reply("404","Not here"); > } > exit; > } > > > #---- initial requests section ----# > > # CANCEL processing > if (is_method("CANCEL")) > { > if (t_check_trans()) > t_relay(); > exit; > } > > t_check_trans(); > > if (!(method=="REGISTER") && from_uri==myself) /*no multidomain version*/ > if (!(method=="REGISTER") && is_from_local()) /*multidomain version*/ > { > if (!proxy_authorize("", "subscriber")) { > proxy_challenge("", "0"); > exit; > } > if (!db_check_from()) { > sl_send_reply("403","Forbidden auth ID"); > exit; > } > consume_credentials(); > # caller authenticated > } > > > #------------------ preloaded route checking ---------------------# > > if (loose_route()) { > xlog("L_ERR", > "Attempt to route with preloaded Route's [$fu/$tu/$ru/$ci]"); > if (!is_method("ACK")) > sl_send_reply("403","Preload Route denied"); > exit; > } > > # record routing > if (!is_method("REGISTER|MESSAGE")) > record_route(); > > # account only INVITEs > if (is_method("INVITE")) { > setflag(1); # do accounting > setflag(2); # Account Missed Calls > setflag(3); # Account Failed Transactions > } > if (!uri==myself) > > > #---- Routing to external domains ----# > > > ## replace with following line if multi-domain support is used > if (!is_uri_host_local()) > { > if(is_from_local()) { > route(1); > } else { > sl_send_reply("403","Not here"); > } > } > append_hf("P-hint: outbound\r\n"); > > if (is_method("PUBLISH")) > { > sl_send_reply("$rc", "Service Unavailable"); > exit; > } > > if (is_method("REGISTER")) > { > # authenticate the REGISTER requests (uncomment to enable auth) > if (!www_authorize("", "subscriber")) > { > www_challenge("", "0"); > exit; > } > if (!db_check_to()) > { > sl_send_reply("403","Forbidden auth ID"); > exit; > } > > if (!save("location")) > sl_reply_error(); > > exit; > } > > if ($rU==NULL) { > # request with no Username in RURI > sl_send_reply("484","Address Incomplete"); > exit; > } > > # apply DB based aliases (uncomment to enable) > alias_db_lookup("dbaliases"); > > > if(!dp_translate("0","$rU/$rU")){ > send_reply("420", "Invalid Destination"); > exit; > } > xlog("$avp(s:dest)"); > if ($avp(s:dest)=="usrloc") { > #Route to usrloc > route(3); > } > if ($avp(s:dest)=="pstn") { > #route to pstn > route(4); > } > if ($avp(s:dest)=="media") { > #route to media server > route(5); > } > send_reply("420", "Invalid Extension"); > exit; > } > > > route[1] { > > > load_balance("2","sip"); > } > > # LB function returns negative if no suitable destination (for > requested resources) is found, > # or if all destinations are full > if ($retcode<0) { > sl_send_reply("500","Service full"); > exit; > } > > xlog("Selected destination is: $du\n"); > > # send it out > if (!t_relay()) { > sl_reply_error(); > } > # } > > > # for INVITEs enable some additional helper routes > > > if (is_method("INVITE")) { > t_on_branch("2"); > t_on_reply("2"); > t_on_failure("1"); > } > if (!t_relay()) { > sl_reply_error(); > }; > exit; > > > xlog("Selected destination is: $du\n"); > > # send it out > if (!t_relay()) { > sl_reply_error(); > } > } > > #Route for user lookups > > route[3]{ > if (!lookup("location", "m")) { > switch ($retcode) { > case -1: > case -3: > t_newtran(); > t_reply("404", "Not Found"); > exit; > case -2: > sl_send_reply("405", "Method Not Allowed"); > exit; > } > } > # when routing via usrloc, log the missed calls also > setflag(2); > route(1); > } > > route[4] { > #---- PSTN route ----# > if(!do_routing()){ > send_reply("503", "No rules found matching the URI prefix"); > exit; > } > # flag 10 - route to pstn > setflag(10); > route(1); > } > > route[5] { > #---- Route to media servers ----# > xlog("route to media servers"); > } > branch_route[2] { > xlog("new branch at $ru\n"); > } > onreply_route[2] { > xlog("incoming reply\n"); > } > failure_route[1] { > if (t_was_cancelled()) { > exit; > } > if(isflagset(10)){ > if (use_next_gw()) { > xlog ("next gateway $ru \n"); > t_on_failure("1"); > t_relay(); > exit; > } > else { > t_reply("$rc", "Service not available, no more gateways"); > #t_reply("$T_reply_code"); > exit; > } > } > } > > > On Sun, Jun 12, 2011 at 9:57 PM, Robert Thomas <tho...@gmail.com> wrote: > >> Can you please share your opensips.cfg file >> >> On Sun, Jun 12, 2011 at 10:20 AM, Tushar Jain <tusshar.j...@gmail.com>wrote: >> >>> I am trying to make opensips's load balancer work with 2 sip server(voip >>> switch). load balancer module was able to locate the sip servers and their >>> resources but as soon as resources of the first voip server exhausts I start >>> getting error "call failed service full" and opensips start connecting calls >>> again only after restarting the services of opensips. >>> >>> I tried to go through the logs and found a error that load balancer is >>> not able to create dialog. I tried to look for this error without >>> any success. >>> >>> ERROR:load_balancer:do_load_balance: failed to create dialog >>> >>> >>> Please help me in making my load balancer work properly. >>> -- >>> Thanks & Regards >>> >>> Tushar Jain >>> >>> >>> "two roads diverged in a wood, and I - I took the one less traveled by, >>> and that has made all the difference" >>> >>> --Robert Frost " >>> >>> _______________________________________________ >>> Users mailing list >>> Users@lists.opensips.org >>> http://lists.opensips.org/cgi-bin/mailman/listinfo/users >>> >>> >> >> >> -- >> Robert >> >> _______________________________________________ >> Users mailing list >> Users@lists.opensips.org >> http://lists.opensips.org/cgi-bin/mailman/listinfo/users >> >> > > > -- > Regards > > Tushar Jain > > > "two roads diverged in a wood, and I - I took the one less traveled by, and > that has made all the difference" > > --Robert Frost " > -- Regards Tushar Jain "two roads diverged in a wood, and I - I took the one less traveled by, and that has made all the difference" --Robert Frost "
_______________________________________________ Users mailing list Users@lists.opensips.org http://lists.opensips.org/cgi-bin/mailman/listinfo/users