[asterisk-dev] load balancing / failover support ideas
Vadim Lebedev
vadim at mbdsys.com
Mon Dec 15 08:07:29 CST 2008
Stephen Coles wrote:
>
> I need to add multiple internet lines to my asterisk setup [as my
> internet connects are slow (DSL distance problem) and I don't want to
> pay for a lease line] with load balancing between the lines - googling
> and there's no easy/cheap way to do this. Redundancy\failover seems
> just as hard. So I had some ideas and just wanted to share them,
> maybe some people will like them and there get work upon and find
> their way into asterisk, just be binned or maybe asterisk can do this
> already [if it can sorry]. But here goes:
>
>
>
> To the iax2.conf I would add:
>
>
>
> priority (what order
> to use the context in)
>
> calls_out
> (number of call going out allow on this context - before the next
> group context is used)
>
> calls_total
> (total number of calls in and out allow on this context - before the
> next group context is used)
>
> loadbalance
> (true or false - do i distribute the calls evenly between the group)
>
>
> gateway
> (what IP address to send the calls out on)
>
> externip
> (needed if behind a NAT)
>
>
> localnet (needed if
> behind a NAT)
>
>
>
> then you could dial using:
>
> Dial(IAX2/GROUP:{first part of context to match}/22122)
>
>
>
> e.g.:
>
> [outbound - voip minutes]
>
> priority = 1
>
> loadbalance = yes
>
> gateway = 192.168.16.5
>
>
>
> [outbound - telstar]
>
> priority = 2
>
> loadbalance = yes
>
> gateway = 192.168.16.6
>
>
>
> [outbound - voip hip]
>
> priority = 3
>
> loadbalance = yes
>
> gateway = 192.168.16.7
>
>
>
> then dial using:
>
> Dial(IAX2/GROUP:outbound/22122)
>
>
>
> chan_iax2 would work out that I wanted to use a group and use any
> context that started outbound so any of the 3 contexts above would be
> valid routes. The routes would be ordered by priority, so chan_iax2
> would use voip minutes first, telstar second and voip hip third.
> Because I'm using the loadbalance option it will spread the traffic
> evenly across the 3 connections. So if voip minutes current has 2
> calls on, telstar has 1 call on and voip hip has 5 calls on. A new
> call would go out on telstar as this has the least amount of calls.
>
>
>
>
>
> this could be expanded upon to do failover by adding a checkroute to
> each context above asterisk can every X minutes check that the route
> is still valid and if it isn't mark it so it isn't used.
>
> If a call was current in progress and the connection went down, if all
> 3 contexts were using the same TISP you could reroute the call (using
> the unique channel id) over another outbound context to the same TISP
> match up the unique call id and the call wouldn't be dropped - this
> would be easy to do for the IAX than the SIP protocol because its
> owned by asterisk. The problem with doing this for the sip protocol
> is that it's a standard and would require a RFC (Request for Comments).
>
>
>
> To make this easier to develop you could you could add it to IAX3 - so
> you could ship asterisk and allow the user to use IAX2 or the new
> EXPERIMENTAL IAX3 (like you do with the new faster dial plan pattern
> matching routine that you need to turn on in extension.conf)
>
>
>
> Stephen Coles
> IT Services
> Wellpak(UK) Ltd
>
Stephen,
I think i would approach this problem by defining new channel technology,
This way the load balancer will be able to operate on ANY underlying tech.
Thanks
Vadim
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.digium.com/pipermail/asterisk-dev/attachments/20081215/e24a0c92/attachment-0001.htm
More information about the asterisk-dev
mailing list