[OpenSIPS-Users] Load balancer ORed resource types
Taner Sener
tanersener at gmail.com
Wed Dec 9 18:48:33 CET 2009
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
<bogdan at voice-system.ro>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:service at host1.net <sip%3Aservice at host1.net> <mailto:
> sip%3Aservice at host1.net <sip%253Aservice at host1.net>>
> | sip=1 | 2 | |
> | 2 | 8080 | sip:service at host2.net <sip%3Aservice at host2.net> <mailto:
> sip%3Aservice at host2.net <sip%253Aservice at host2.net>>
> | 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 service at host1.net <mailto:service at host1.net> 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:service at host1.net <sip%3Aservice at host1.net>
> > <mailto:sip%3Aservice at host1.net <sip%253Aservice at host1.net>> | sip=1
> | 2
> > | |
> > | 2 | 9090 | sip:service at host2.net <sip%3Aservice at host2.net>
> > <mailto:sip%3Aservice at host2.net <sip%253Aservice at host2.net>> | 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:test at 10.10.5.10 <sip%3Atest at 10.10.5.10> <mailto:
> sip%3Atest at 10.10.5.10 <sip%253Atest at 10.10.5.10>> to
> > sip:8080 at 10.10.6.6:5060 <http://sip:8080@10.10.6.6:5060> failed.
> > Re-balancing to 8080!
> > Dec 8 10:56:57 sipproxy /sbin/opensips[11299]: load_balancer:
> > Insufficient resource to balance request from sip:test at 10.10.5.10<sip%3Atest at 10.10.5.10>
> > <mailto:sip%3Atest at 10.10.5.10 <sip%253Atest at 10.10.5.10>> to
> sip:8080 at 10.10.6.6:5060
> > <http://sip:8080@10.10.6.6:5060> . Re-balancing to route 4!
> > Dec 8 10:56:57 sipproxy /sbin/opensips[11299]: load_balancer:
> > Insufficient resource to balance request from sip:test at 10.10.5.10<sip%3Atest at 10.10.5.10>
> > <mailto:sip%3Atest at 10.10.5.10 <sip%253Atest at 10.10.5.10>> to
> sip:8080 at 10.10.6.6:5060
> > <http://sip:8080@10.10.6.6:5060> . Sending error!
> >
> >
> > Thanks,
> > Taner
> >
> >
> > On Sun, Nov 15, 2009 at 10:12 PM, Bogdan-Andrei Iancu
> > <bogdan at voice-system.ro <mailto:bogdan at voice-system.ro>> 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:service at host1.net <sip%3Aservice at host1.net>
> > <mailto:sip%3Aservice at host1.net <sip%253Aservice at host1.net>>
> <mailto:sip%3Aservice at host1.net <sip%253Aservice at host1.net>
> > <mailto:sip%253Aservice at host1.net <sip%25253Aservice at host1.net>>> |
> channel=1
> > |
> > | 2 | 555 | sip:service at host2.net <sip%3Aservice at host2.net>
> > <mailto:sip%3Aservice at host2.net <sip%253Aservice at host2.net>>
> <mailto:sip%3Aservice at host2.net <sip%253Aservice at host2.net>
> > <mailto:sip%253Aservice at host2.net <sip%25253Aservice at host2.net>>> |
> 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:service at host1.net <sip%3Aservice at host1.net>
> > <mailto:sip%3Aservice at host1.net <sip%253Aservice at host1.net>>
> <mailto:sip%3Aservice at host1.net <sip%253Aservice at host1.net>
> > <mailto:sip%253Aservice at host1.net <sip%25253Aservice at host1.net>>> |
> vm=1; conf=1
> > |
> > > | 2 | 555 | sip:service at host2.net <sip%3Aservice at host2.net>
> > <mailto:sip%3Aservice at host2.net <sip%253Aservice at host2.net>>
> <mailto:sip%3Aservice at host2.net <sip%253Aservice at host2.net>
> > <mailto:sip%253Aservice at host2.net <sip%25253Aservice at host2.net>>> |
> 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
> > >
> >
> ------------------------------------------------------------------------
> > >
> > > _______________________________________________
> > > Users mailing list
> > > Users at lists.opensips.org <mailto:Users at lists.opensips.org>
> > > http://lists.opensips.org/cgi-bin/mailman/listinfo/users
> > >
> >
> >
> > _______________________________________________
> > Users mailing list
> > Users at lists.opensips.org <mailto:Users at lists.opensips.org>
> > http://lists.opensips.org/cgi-bin/mailman/listinfo/users
> >
> >
> > ------------------------------------------------------------------------
> >
> > _______________________________________________
> > Users mailing list
> > Users at lists.opensips.org
> > http://lists.opensips.org/cgi-bin/mailman/listinfo/users
> >
>
>
> --
> Bogdan-Andrei Iancu
> www.voice-system.ro
>
>
> _______________________________________________
> Users mailing list
> Users at lists.opensips.org
> http://lists.opensips.org/cgi-bin/mailman/listinfo/users
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.opensips.org/pipermail/users/attachments/20091209/9b140b57/attachment-0001.htm
More information about the Users
mailing list