Hi Taner, Ok, I see you point (with 2 pools of destinations with different priorities).
Your original script, may be right in this case - what is the point where you stuck with this approach ? Regards, Bogdan Taner Sener wrote: > Hi Bogdan, > > I deleted other destinations to re-produce this case. It behaves in > the same way when there are 10 destinations per group_id and all of > them are busy, etc. > > And I have priorities between destinations. This is why I can not add > all of them into the same group_id. First, I'm trying to balance the > load in the destinations with higher priority (with group_id 8080), if > I can not I'm trying to use a group_id with lower priority (9090). > > Anyway, thanks for your help, > Taner > > On Wed, Dec 9, 2009 at 7:25 PM, Bogdan-Andrei Iancu > <[email protected] <mailto:[email protected]>> wrote: > > Hi Taner, > > Why do you have only one record per group in the LB table ? there > is no > LB if you have only one destination ;). It simply makes no sense. > > Better put both destinations in the same group and LB over them both, > with failover too: > > > +----+----------+-----------------------+-----------+------------+-------------+ > | id | group_id | dst_uri | resources | probe_mode | > description | > > +----+----------+-----------------------+-----------+------------+-------------+ > | 1 | 8080 | sip:[email protected] > <mailto:sip%[email protected]> <mailto:sip%[email protected] > <mailto:sip%[email protected]>> > | sip=1 | 2 | | > | 2 | 8080 | sip:[email protected] > <mailto:sip%[email protected]> <mailto:sip%[email protected] > <mailto:sip%[email protected]>> > | sip=1 | 2 | | > > +----+----------+-----------------------+-----------+------------+-------------+ > > route[3] { > if (is_method("INVITE")) { > > load_balance("8080", "sip"); > if ($retcode < 0) { > xlog("L_INFO", "load_balancer: Insufficient resource to > balance request from $fu to $tu !\n"); > send_reply("500","no resources available"); > exit; > } > t_on_failure("2"); > } > > > # send request > if (!t_relay()) { > sl_reply_error(); > } > exit; > } > > failure_route[2] { > if (t_was_cancelled()) { > exit; > } > > if (t_check_status("486|408")) { > xlog("L_INFO", "load_balancer: Request from $fu to $tu > failed. Re-balancing!\n"); > lb_disable(); > load_balance("8080", "sip"); > > if ($retcode < 0) { > xlog("L_INFO", "load_balancer: Insufficient resource to > balance request from $fu to $tu \n"); > send_reply("500","no resources available"); > exit; > } > t_on_failure("2"); > t_relay(); > } > } > > > > Regards, > Bogdan > > > Taner Sener wrote: > > Hi Bogdan, > > > > I used your approach and defined the same resource name "sip" > for both > > definitions. It is working now as expected but another requirement > > raised for my scenario. > > > > When all destinations for a specific group id are busy I want to re > > load-balance the request to a different group id. I expect this > to run > > with the following configuration but it is not possible to re > > load_balance the request. I hope you can help me to find a solution. > > > > I'm testing this the following configuration. I'm making a call to > > 8080. If [email protected] <mailto:[email protected]> > <mailto:[email protected] <mailto:[email protected]>> is busy or if it > > receives timeout I expect call to be re load-balanced to a > destination > > from group id 9090. But it is not. > > > > load_balancer > > > > +----+----------+-----------------------+-----------+------------+-------------+ > > | id | group_id | dst_uri | resources | probe_mode | > > description | > > > > +----+----------+-----------------------+-----------+------------+-------------+ > > | 1 | 8080 | sip:[email protected] > <mailto:sip%[email protected]> > > <mailto:sip%[email protected] > <mailto:sip%[email protected]>> | sip=1 | 2 > > | | > > | 2 | 9090 | sip:[email protected] > <mailto:sip%[email protected]> > > <mailto:sip%[email protected] > <mailto:sip%[email protected]>> | sip=1 | 2 > > | | > > > > +----+----------+-----------------------+-----------+------------+-------------+ > > > > opensips.cfg > > .... > > route { > > ... > > route(3); > > } > > > > route[3] { > > if (is_method("INVITE")) { > > > > load_balance("8080", "sip"); > > if ($retcode < 0) { > > xlog("L_INFO", "load_balancer: Insufficient resource > > to balance request from $fu to $tu . Re-balancing to route 4!\n"); > > route(4); > > } > > } > > > > t_on_failure("2"); > > > > # send request > > if (!t_relay()) { > > sl_reply_error(); > > } > > exit; > > } > > > > route[4] { > > if (is_method("INVITE")) { > > > > load_balance("9090", "sip"); > > if ($retcode < 0) { > > xlog("L_INFO", "load_balancer: Insufficient resource > > to balance request from $fu to $tu . Sending error!\n"); > > sl_send_reply("500", "Service full"); > > exit; > > } > > } > > > > t_on_failure("2"); > > > > # send request > > if (!t_relay()) { > > sl_reply_error(); > > } > > exit; > > } > > > > failure_route[2] { > > if (t_was_cancelled()) { > > exit; > > } > > > > if (t_check_status("486|408")) { > > xlog("L_INFO", "load_balancer: Request from $fu to $tu > > failed. Re-balancing to 8080!\n"); > > lb_disable(); > > load_balance("8080", "sip"); > > > > if ($retcode < 0) { > > xlog("L_INFO", "load_balancer: Insufficient resource > > to balance request from $fu to $tu . Re-balancing to route 4!\n"); > > route(4); > > } > > t_on_failure("2"); > > t_relay(); > > } > > } > > > > opensips.log > > ... > > Dec 8 10:56:57 sipproxy /sbin/opensips[11299]: load_balancer: > Request > > from sip:[email protected] <mailto:sip%[email protected]> > <mailto:sip%[email protected] <mailto:sip%[email protected]>> to > > sip:[email protected]:5060 <http://sip:[email protected]:5060> > <http://sip:[email protected]:5060> failed. > > Re-balancing to 8080! > > Dec 8 10:56:57 sipproxy /sbin/opensips[11299]: load_balancer: > > Insufficient resource to balance request from > sip:[email protected] <mailto:sip%[email protected]> > > <mailto:sip%[email protected] <mailto:sip%[email protected]>> > to sip:[email protected]:5060 <http://sip:[email protected]:5060> > > <http://sip:[email protected]:5060> . Re-balancing to route 4! > > Dec 8 10:56:57 sipproxy /sbin/opensips[11299]: load_balancer: > > Insufficient resource to balance request from > sip:[email protected] <mailto:sip%[email protected]> > > <mailto:sip%[email protected] <mailto:sip%[email protected]>> > to sip:[email protected]:5060 <http://sip:[email protected]:5060> > > <http://sip:[email protected]:5060> . Sending error! > > > > > > Thanks, > > Taner > > > > > > On Sun, Nov 15, 2009 at 10:12 PM, Bogdan-Andrei Iancu > > <[email protected] <mailto:[email protected]> > <mailto:[email protected] <mailto:[email protected]>>> > wrote: > > > > Hi Taner, > > > > I would suggest a different approach - as from LB point of > view you do > > not care too much if it VM or CONF - what is important is > that each of > > your box has only on channel, so I would define a resource the > > number of > > channels each box can handle . > > > > > > +----+----------+------------------------+---------------------------------+ > > | id | group_id | dst_uri | resources > > | > > > > +----+----------+------------------------+---------------------------------+ > > > > | 1 | 555 | sip:[email protected] > <mailto:sip%[email protected]> > > <mailto:sip%[email protected] > <mailto:sip%[email protected]>> > <mailto:sip%[email protected] <mailto:sip%[email protected]> > > <mailto:sip%[email protected] > <mailto:sip%[email protected]>>> | channel=1 > > | > > | 2 | 555 | sip:[email protected] > <mailto:sip%[email protected]> > > <mailto:sip%[email protected] > <mailto:sip%[email protected]>> > <mailto:sip%[email protected] <mailto:sip%[email protected]> > > <mailto:sip%[email protected] > <mailto:sip%[email protected]>>> | channel=1 > > | > > > > > > +----+----------+------------------------+---------------------------------+ > > > > > > and do (when routing a VM or conference call) : > > 'load_balance(.., "channel");' > > > > Regards, > > Bogdan > > > > > > Taner Sener wrote: > > > Hi, > > > > > > I'm using load balancer module on 1.6.0-notls (i386/linux) to > > balance > > > incoming sip calls to sip clients. The case is; my sip > clients are > > > capable of serving multiple types of calls. But not in the > same time > > > like in the definition "vm=1;conf=1". Only one of them is > > available at > > > that moment. They can process either a vm call, either a > conf call; > > > not one vm call and one conf call. Is there a way to > define it? > > > > > > > > > > +----+----------+------------------------+---------------------------------+ > > > | id | group_id | dst_uri | resources > > | > > > > > > > +----+----------+------------------------+---------------------------------+ > > > > > > | 1 | 555 | sip:[email protected] > <mailto:sip%[email protected]> > > <mailto:sip%[email protected] > <mailto:sip%[email protected]>> > <mailto:sip%[email protected] <mailto:sip%[email protected]> > > <mailto:sip%[email protected] > <mailto:sip%[email protected]>>> | vm=1; conf=1 > > | > > > | 2 | 555 | sip:[email protected] > <mailto:sip%[email protected]> > > <mailto:sip%[email protected] > <mailto:sip%[email protected]>> > <mailto:sip%[email protected] <mailto:sip%[email protected]> > > <mailto:sip%[email protected] > <mailto:sip%[email protected]>>> | vm=1; conf=1 > > | > > > > > > > > > > +----+----------+------------------------+---------------------------------+ > > > > > > Current 'resources' field of load_balancer table ANDs > resource types > > > given with semi-colon and I when I invoke > > > > > > 'load_balance(.., "vm")' > > > > > > and > > > > > > 'load_balance(.., "conf")' > > > > > > second load balanced call receives busy and balancing > fails there > > > because that client is serving to vm call. How can I configure > > > load_balanced module to select it right? > > > > > > Thanks, > > > Taner > > > > > > -- Bogdan-Andrei Iancu www.voice-system.ro _______________________________________________ Users mailing list [email protected] http://lists.opensips.org/cgi-bin/mailman/listinfo/users
