[SR-Users] Redirect server for load balancing and HA

Daniel-Constantin Mierla miconda at gmail.com
Fri Mar 13 09:47:27 CET 2015


Hello,

On 13/03/15 08:52, Markus wrote:
> Hi list,
>
> I'm new here, also to Kamailio. My goal is to achieve the "standard
> solution": Kamailio for load balancing and high availability of
> several Asterisk servers.
>
> For starters, I've set it up with Kamailio+dispatcher+permissions
> acting as a proxy and it was working fine, but I'd like to try to keep
> it much more simple. For these reasons:
>
> 1) I'd like to maintain different peer settings in Asterisk (DTMF,
> codecs).
>
> 2) I don't want/need a database for Kamailio. I think it is mandatory
> for permissions module + IP auth. So, let's do Asterisk the
> authentication, it's already there.

You can use here db_text or db_sqlite, which don't require a heavy mysql
server. You can also have static rules in kamailio, like:

if(src_ip==asterisk_ip1 || src_ip==asterisk_ip1 || ...)

Or, if asterisk servers are in the same subnet, you can have:

if(src_ip==asterisk_net/24)

As you use dispatcher, another alternative is to use ds_is_from_list()
function, which will match if the request was sent by one of addresses
in the dispatcher lists.

>
> 3) Accounting. I'm using a software where it's really useful for
> accounting purposes if every peer/user has its own entry in Asterisk's
> sip.conf / in realtime table.
>
> Long story short, my config now looks like this and it seems to be
> working fine for me:
>
> request_route {
>         route(DISPATCHER);
> }
>
> route[DISPATCHER] {
>
> if ( method=="REGISTER") {
>   ds_select_domain("1","4");
>   sl_send_reply("300","Redirect");
>   exit;
> }
>
> if ( method=="INVITE" ) {
>   ds_select_domain("1","4");
>   sl_send_reply("300","Redirect");
>   exit;
> }
>
> if ( method=="SUBSCRIBE" ) {
>   ds_select_domain("1","4");
>   sl_send_reply("300","Redirect");
>   exit;
> }
>
> }
>
> My questions:
>
> 1) There are other approaches to the DTMF+codecs issue. Like this
> thread from 2013:
> http://lists.kamailio.org/pipermail/sr-users/2013-January/076379.html
> - but I have dozens of changing PSTN peers, so
> authentication/accounting based on port would be cumbersome. Are there
> new/alternative ways?
>
> 2) I searched the archive and the Web but did not find many questions
> about a "I-don't-want-Kamailio-to-show-as-the-only-peer-to-Asterisk"
> solution. Therefore I'm wondering: Is everyone a) running such
> homogeneous setups that they can survive with the same codec + DTMF
> settings in Asterisk for all their peers + users? Or b) doing some
> rewriting magic within Kamailio to deal with it? Or c) I'm overlooking
> a simple solution. Which one is it? :)

Can asterisk make some decision on headers? IIRC, someone was mentioning
at some point to use Remote-Party-ID (could be now P-Asserted-Identity)
header to match on a specific profile.
>
> 3) And the biggest question: Everywhere I read basically "Redirect
> server for LB + HA is not recommended, better use proxy". Is this
> still true, and if so, what are the reasons? Because I should be
> worried that not all clients/gateways out there respect a SIP 300
> Redirect? Other reasons?
I think this is something specific for your environment. Kamailio
doesn't have any issues sending redirect replies. A proxy might be
required in case of natted endpoints when they cannot communicate each
other. But otherwise, if you don't want the new INVITE to pass again via
LB, then you can send 3xx.

Cheers,
Daniel

-- 
Daniel-Constantin Mierla
http://twitter.com/#!/miconda - http://www.linkedin.com/in/miconda
Kamailio World Conference, May 27-29, 2015
Berlin, Germany - http://www.kamailioworld.com




More information about the sr-users mailing list