[OpenSIPS-Users] load_balance profile failover

Mike Tesliuk mike at brdsoft.com.br
Wed Nov 19 23:27:08 CET 2014


Hello Guys,

Im trying to implement a diferent feature using load balance, i check on 
maillist archive and check on this post  ( 
http://www.openser.org/pipermail/users/2013-July/026269.html ) that we 
must use the same resource on load balance, when i try a diferent way i 
got this message

Nov 19 17:58:39 sipproxy01 /usr/sbin/opensips[32010]: 
ERROR:load_balancer:do_load_balance: failed to remove from profile
Nov 19 17:58:39 sipproxy01 /usr/sbin/opensips[32010]: Operadora: algar
Nov 19 17:58:39 sipproxy01 /usr/sbin/opensips[32010]: 
ERROR:load_balancer:do_load_balance: failed to remove from profile
Nov 19 17:58:39 sipproxy01 /usr/sbin/opensips[32010]: Operadora: oi
Nov 19 17:58:39 sipproxy01 /usr/sbin/opensips[32010]: 
ERROR:load_balancer:do_load_balance: failed to remove from profile
Nov 19 17:58:39 sipproxy01 /usr/sbin/opensips[32010]: Operadora: ebt
Nov 19 17:58:39 sipproxy01 /usr/sbin/opensips[32010]: 
ERROR:load_balancer:do_load_balance: failed to remove from profile


So, what i need to do is to check the kind of route (landline, mobile 
numbers, long distance, service number etc..) and with that information 
i use an array to choose the resource that i need on loadbalance, if 
that resource fail, i need to send to another group of resource, let my 
put a sample here:

if i got a call for local mobile number i create this array:

case "VC1":
                 # Variaveis devem ser adicionadas em ordem inversa
                         $avp(max_operadora) = "7";
                         $avp(ordem_operadora) = "gvt";
                         $avp(ordem_operadora) = "ebt";
                         $avp(ordem_operadora) = "oi";
                         $avp(ordem_operadora) = "algar";
                         $avp(ordem_operadora) = "transit";
                         $avp(ordem_operadora) = "yama";
                         $avp(ordem_operadora) = "njgsm";
                         $avp(ordem_operadora) = "claro";
                 break;

and so, i send to the load balancer

         if( !load_balance("10","$(avp(ordem_operadora)[$avp(contador)])")){

if i got a fail i will loop on loadbalance again and change the counter 
, so i will use the next carrier

If i cannot implement this on load_balance, which module should i use ?

If im not wrong with drouting i cannot create a load_balance right ?

The dispatcher module seems to be more accurate for this function, 
somebody can confirm that ?

Thank you guys.





More information about the Users mailing list