[SR-Users] Weight balancing with dispatcher module

Daniel-Constantin Mierla miconda at gmail.com
Mon Oct 19 14:34:46 CEST 2015


Hello,

On 19/10/15 12:07, Ben Bliss wrote:
> Hi Daniel,
>
> Many thanks for taking the time to reply.
>
> I have updated to 4.3.1, and am still having the same issue. However,
> I have found a work around to the issue (or at least another way of
> doing what i needed to do).
>
> I plan to have a cluster of 5 or more media servers (only have 2 at
> the moment, as I am still working through the kamailio/asterisk
> config) and wanted to be able to force traffic through 1 media server
> for the sakes of tracing and troubleshooting. The weighting method
> appeared to allow me to do this. However, after reading through the
> dispatcher module readme, I found the flags options will allow me to
> disable targets by adjusting the flags within the database.
>
> For reasons I don't fully understand, when set to 50/50, 60/40 etc.
> the balancing appears to work fine. Its only when you set it the
> targets to 100/0 things start to go awry, but the only reason to do
> this was to send all traffic to one destination. As setting the flag
> to 4 against the target disables routing to it, I can leave the
> weighting alone, and just adjust the flag values as and when needed.

ok, I will look at 100/0 weight whenever I get a chance.

Best regards,
Daniel


>
> Kind Regards,
>
> ---------
> Ben Bliss
>
> On 16/10/2015 3:26 PM, Daniel-Constantin Mierla wrote:
>> Hello,
>>
>> can try with latest version in 4.2 series? There was a fix to weight
>> based balancing quite some time ago, but it might be after 4.2.4 was
>> released.
>>
>> Cheers,
>> Daniel
>>
>> On 15/10/15 18:11, Ben Bliss wrote:
>>> Hi,
>>>
>>> I am having issues getting the dispatcher to work using weighting. I
>>> have been digging through old posts to the list, and tried all that I
>>> have found, but am still having no luck at all.
>>>
>>> So, information...
>>>
>>> version: kamailio 4.2.4 (amd64/freebsd) be62bd
>>> flags: STATS: Off, USE_TCP, USE_TLS, TLS_HOOKS, USE_RAW_SOCKS,
>>> DISABLE_NAGLE, USE_MCAST, DNS_IP_HACK, SHM_MEM, SHM_MMAP, PKG_MALLOC,
>>> F_MALLOC, DBG_F_MALLOC, USE_PTHREAD_MUTEX, USE_DNS_CACHE,
>>> USE_DNS_FAILOVER, USE_NAPTR, USE_DST_BLACKLIST, HAVE_RESOLV_RES
>>> MAX_RECV_BUFFER_SIZE 262144, MAX_LISTEN 16, MAX_URI_SIZE 1024,
>>> BUF_SIZE 65535, DEFAULT PKG_SIZE 8MB
>>> poll method support: poll, select, kqueue.
>>> id: be62bd
>>>
>>> Dispatcher configuration...
>>>
>>> modparam("dispatcher", "db_url", DBURL)
>>> modparam("dispatcher", "table_name", "dispatcher")
>>> modparam("dispatcher", "flags", 3)
>>> modparam("dispatcher", "force_dst", 1)
>>> modparam("dispatcher", "dst_avp", "$avp(AVP_DST)")
>>> modparam("dispatcher", "grp_avp", "$avp(AVP_GRP)")
>>> modparam("dispatcher", "cnt_avp", "$avp(AVP_CNT)")
>>>
>>> Dialplan config..
>>>
>>> route[DISPATCH] {
>>>          if(!ds_select_dst("1", "9"))
>>>          {
>>>                  send_reply("404", "No destination");
>>>                  exit;
>>>          }
>>>          xlog("L_DBG", "--- SCRIPT: going to <$ru> via <$du>\n");
>>>          t_on_failure("RTF_DISPATCH");
>>>          return;
>>>
>>> I am loading the values from a database, which are being loaded fine,
>>> and appear to be being formatted correctly aswell..
>>>
>>> +----+-------+-------------------------+-------+----------+------------+----------------------+
>>>
>>>
>>> | id | setid | destination             | flags | priority | attrs
>>> | description          |
>>> +----+-------+-------------------------+-------+----------+------------+----------------------+
>>>
>>>
>>> |  1 |     1 | sipx.x.x.106:5060 |     8 |        1 | weight=100 |
>>>                              |
>>> |  2 |     1 | sip:x.x.x.107:5060 |     8 |        1 | weight=0   |
>>>                               |
>>> +----+-------+-------------------------+-------+----------+------------+----------------------+
>>>
>>>
>>>
>>> The IP's are public, so i've masked them... The following is from
>>> kamcmd..
>>>
>>> {
>>>          NRSETS: 1
>>>          RECORDS: {
>>>                  SET: {
>>>                          ID: 1
>>>                          TARGETS: {
>>>                                  DEST: {
>>>                                          URI: sip:x.x.x.107:5060
>>>                                          FLAGS: AP
>>>                                          PRIORITY: 1
>>>                                          ATTRS: {
>>>                                                  BODY: weight=0
>>>                                                  DUID:
>>>                                                  MAXLOAD: 0
>>>                                                  WEIGHT: 0
>>>                                          }
>>>                                  }
>>>                                  DEST: {
>>>                                          URI: sip:x.x.x106:5060
>>>                                          FLAGS: AP
>>>                                          PRIORITY: 1
>>>                                          ATTRS: {
>>>                                                  BODY: weight=100
>>>                                                  DUID:
>>>                                                  MAXLOAD: 0
>>>                                                  WEIGHT: 100
>>>                                          }
>>>                                  }
>>>                          }
>>>                  }
>>>          }
>>> }
>>>
>>> However, when any call is placed, it will always goto the server
>>> ending 107 (with weight 0, which means, as far as I understand, it
>>> should be ignored). I've tried with ; after the weights, this made no
>>> change either.
>>>
>>> When set to round robin, or via priority, it appears to work fine.
>>>
>>> Any ideas?
>>>
>

-- 
Daniel-Constantin Mierla
http://twitter.com/#!/miconda - http://www.linkedin.com/in/miconda
Book: SIP Routing With Kamailio - http://www.asipto.com




More information about the sr-users mailing list