<html>
<head>
<style><!--
.hmmessage P
{
margin:0px;
padding:0px
}
body.hmmessage
{
font-size: 12pt;
font-family:Calibri
}
--></style></head>
<body class='hmmessage'><div dir='ltr'>Sorry... It is a long answer.<br><br>Keepalived is a kind of VRRP (RFC5798) like implementation. It is being used all over and it is distributed as a standard package in, for example, CentOS. So no compiling issues, you get upgrades, fixes, etc., in a very simple way.<br><br>I got <a href="http://blog.unicsolution.com/2015/01/kamailio-high-availability-with.html">this nice blog on Kamailio HA</a>, and I will start my tests from it. Now, for MySQL my test bed is already prepared and I am suing MariaDB Galera. I will have 2 MySQL servers, synchronizing the databases in between them all the time. Each MySQL server will have Kamailio on it where Kamailio server 1 will use the MySQL on server 1; Kamailio server 2 will use the MySQL on server two. However, while the MySQL services will be up and running on both servers and so synchronized, Kamailio will run only on server 1 over the VIP address. Should it fail, the keepalived script will then kill local Kamailio instance and start the Kamailio on server 2 (the same it will do if the complete server fails). Please notice that this is crucial to prevent brain split where both Kamailios could "think" they were the master. As the databases will be synchronized the service interruption should be quite short.<br><br>Now, the VIP solution rely on a L2 connectivity in between (or amongst) involved servers and, to be really redundant, the servers should be geographically distant. So, if the above initial tests work, my next step will separating the two Kamailio servers using a L3 router and, using iproute2, create a VxLAN tunnel in between the 2 emulated remote sites. This would eliminate the need of buying a L2 extension in between the two involved datacenters.<br><br>While it solves the problem of a "small" system, if I were providing SIP services to the Internet my approach would be another one: I would have 2 Kamailios, using the same public IP address and use BGP to flip from one location to another. In this case there would be no Kamailio VIP interface but still I would use keepalived to monitor the services and drop the local BGP connection so forcing the Internet to reach my second server in another location. In this case your ISP would set their BGP local preference to reach your Kamailio to the main site; should the main site fails, BGP would use the second path to reach your server that, in fact, would be another Kamailio instance using the same IP of the main one. While this puts more complexity on the design, it would also prevent the brain split and the geographical distance limitation would be just how far your ISP could go.<br><br>If anyone is interested on this kind of techniques just drop into this thread and we keep the discussion going.<br><br>You could help me a lot responding to a question that I have regarding all this is: How Kamailio would behave if I have one active Kamailio writing in the database and a second "live" Kamailio using the same database but not receiving any connection/request. Would this jeopardize the way Kamailio works?<br><br>Cheers,<br>Moacir<br><br><div><hr id="stopSpelling">To: sr-users@lists.sip-router.org<br>From: miconda@gmail.com<br>Date: Tue, 7 Jun 2016 09:01:23 +0200<br>Subject: Re: [SR-Users] High availability<br><br>
  
    
  
  
    Just to mention that ucarp can be a very basic alternative to
      corosync/pacemaker to manage the virtual ip. A simple app, but
      usually keeps working...<BR>
    Cheers,<br>
      Daniel<br>
    <BR>
    <br>
    <div class="ecxmoz-cite-prefix">On 06/06/16 02:21, Fred Posner wrote:<br>
    </div>
    <blockquote cite="mid:C880ACAA-E856-4FD8-B28C-5165504CF25C@palner.com">
      
      <div>If it's just 2 servers, consider as Juha said,
        corosync/pacemaker with drbd. </div>
      <div id="ecxAppleMailSignature"><br>
      </div>
      <div id="ecxAppleMailSignature"><span style="background-color:rgba(255, 255, 255, 0);">Fred Posner</span>
        <div><span style="background-color:rgba(255, 255, 255, 0);">direct:
            +1 (224) 334-FRED (3733)</span></div>
      </div>
      <div><br>
        On Jun 5, 2016, at 5:26 PM, Moacir Ferreira <<a href="mailto:moacirferreira@hotmail.com"></a><a class="ecxmoz-txt-link-abbreviated" href="mailto:moacirferreira@hotmail.com">moacirferreira@hotmail.com</a>>
        wrote:<br>
        <br>
      </div>
      <blockquote>
        <div>
          <style><!--
.ExternalClass .ecxhmmessage P {
padding:0px;
}

.ExternalClass body.ecxhmmessage {
font-size:12pt;
font-family:Calibri;
}

--></style>
          <div dir="ltr">Hi,<br>
            <br>
            Sorry... I should have mentioned before. You guys are
            thinking on the standard Internet SIP calls' behavior while
            I am trying to use Kamailio on a large "industrial" project.
            This said:<br>
            <br>
            Assuming that the end-point is "smart", the DNS method is
            functional but it would take quite a while before the UA
            (phone) recovers from the previous name/IP binding it has in
            cache;<br>
            SRV is good for a "smart" UA that, unfortunately, is not the
            case;<br>
            Same for the phone units as they are industrial "Help
            Points" and so quite "dummy".<br>
            <br>
            While I never tested it, I thought I could use two Kamailio
            servers with a mysql cluster like mariadb-galera where, for
            Kamailio functions, one server would be "active" and another
            "passive" server. Then use keepalived for monitoring the
            "active" Kamailio and starting the "passive" server if the
            active Kamailio fails. Without any testing, tests that I
            think I should have done before putting questions in here,
            my questions are:<br>
            <br>
            Suppose that  I have two Kamailio servers, one "active" and
            another one "passive" (not running) where the mysql
            databases are synchronized in between two servers using
            MySQL Galera. Using keepalived I would monitor the active
            Kamailio instance. Should it fails, start the "passive"
            Kamailio instance using the same MySQL database that were
            supposed to be synchronized. Would this new Kamailio
            instance be able to find a called number? Why this question?
            As long as I understand, Kamailio will always challenge the
            UA for authentication before making a call, so if this
            second server gets a call request it would just challenge
            and authenticate the caller. The "key point" would be having
            this new Kamailio instance aware about the called
            destinations. So, delivering a MySQL database, with the
            latest data the active Kamailio had, to this new Kamailio
            instance would be enough to allow it find the called party?<br>
            <br>
            Anyway, can you guys comment on my "thoughts"? Is it
            possible? Am I missing something? Would you suggest another
            approach for such scenario?<br>
            <br>
            Cheers!<br>
            Moacir <br>
            <br>
            <div>
              <hr id="ecxstopSpelling">Date: Sun, 5 Jun 2016 21:07:41 +0200<br>
              From: <a href="mailto:chabert.loic.74@gmail.com">chabert.loic.74@gmail.com</a><br>
              To: <a href="mailto:sr-users@lists.sip-router.org">sr-users@lists.sip-router.org</a><br>
              Subject: Re: [SR-Users] High availability<br>
              <br>
              <p dir="ltr">Hello Bill,</p>
              <p dir="ltr">I have made kamailio ha using exabgp with
                loopbacks.</p>
              <p dir="ltr">Check <a href="https://github.com/Exa-Networks/exabgp" target="_blank">https://github.com/Exa-Networks/exabgp</a></p>
              <p dir="ltr">With bgp, kamailio cluster can be splited on
                severals datacenters.</p>
              <p dir="ltr">Regards.</p>
              <div class="ecxgmail_quote">Le 5 juin 2016 20:53, "Bill"
                <<a href="mailto:bill@novatrope.us">bill@novatrope.us</a>>
                a écrit :<br>
                <blockquote class="ecxgmail_quote" style="border-left:1px #ccc solid;padding-left:1ex;">
                  <div> Hi Moacir<br>
                    <br>
                    We have only found three ways to handle failover.<br>
                    1. Change the DNS entry whenever a failure is
                    detected.<br>
                    2. Use SRV records to display an alternate route.<br>
                    3. Use the failover mechanism in the phone itself<br>
                    <br>
                    1. works, but it may take some time for your ua's to
                    become aware of the change<br>
                    2. never have been able to get this to work as
                    advertised.<br>
                    3. Works pretty well depending on the phone. (We use
                    mostly Yealink's and they seem to handle the
                    failover pretty well.)<br>
                    <br>
                    Hope this helps<br>
                    <br>
                    <div>On 06/05/2016 07:41 AM, Moacir Ferreira wrote:<br>
                    </div>
                    <blockquote>
                      <div dir="ltr">Hi,<br>
                        <br>
                        I got two questions regarding high availability:<br>
                        <br>
                        1 - Should my Kamailio server fail, I would like
                        another Kamailio "box/server" to take over with
                        minimum services disruption. What is the
                        "community" advice for such environment?<br>
                        <br>
                        2 - Should my main PSTN gateway fail, what would
                        be the best mechanism to redirect calls to a
                        second PSTN gateway?<br>
                        <br>
                        Cheers!<br>
                        Moacir<br>
                      </div>
                      <br>
                      <fieldset></fieldset>
                      <br>
                      <pre>_______________________________________________
SIP Express Router (SER) and Kamailio (OpenSER) - sr-users mailing list
<a href="mailto:sr-users@lists.sip-router.org" target="_blank">sr-users@lists.sip-router.org</a>
<a href="http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-users" target="_blank">http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-users</a>
</pre>
                    </blockquote>
                    <br>
                  </div>
                  <br>
                  _______________________________________________<br>
                  SIP Express Router (SER) and Kamailio (OpenSER) -
                  sr-users mailing list<br>
                  <a href="mailto:sr-users@lists.sip-router.org">sr-users@lists.sip-router.org</a><br>
                  <a href="http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-users" rel="noreferrer" target="_blank">http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-users</a><br>
                  <br>
                </blockquote>
              </div>
              <br>
              _______________________________________________
              SIP Express Router (SER) and Kamailio (OpenSER) - sr-users
              mailing list
              <a href="mailto:sr-users@lists.sip-router.org">sr-users@lists.sip-router.org</a>
              <a href="http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-users" target="_blank">http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-users</a></div>
          </div>
        </div>
      </blockquote>
      <blockquote>
        <div><span>_______________________________________________</span><br>
          <span>SIP Express Router (SER) and Kamailio (OpenSER) -
            sr-users mailing list</span><br>
          <span><a href="mailto:sr-users@lists.sip-router.org">sr-users@lists.sip-router.org</a></span><br>
          <span><a href="http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-users" target="_blank">http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-users</a></span><br>
        </div>
      </blockquote>
      <br>
      <fieldset class="ecxmimeAttachmentHeader"></fieldset>
      <br>
      <pre>_______________________________________________
SIP Express Router (SER) and Kamailio (OpenSER) - sr-users mailing list
<a class="ecxmoz-txt-link-abbreviated" href="mailto:sr-users@lists.sip-router.org">sr-users@lists.sip-router.org</a>
<a class="ecxmoz-txt-link-freetext" href="http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-users" target="_blank">http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-users</a>
</pre>
    </blockquote>
    <br>
    <pre class="ecxmoz-signature">-- 
Daniel-Constantin Mierla
<a class="ecxmoz-txt-link-freetext" href="http://www.asipto.com" target="_blank">http://www.asipto.com</a> - <a class="ecxmoz-txt-link-freetext" href="http://www.kamailio.org" target="_blank">http://www.kamailio.org</a>
<a class="ecxmoz-txt-link-freetext" href="http://twitter.com/#%21/miconda" target="_blank">http://twitter.com/#!/miconda</a> - <a class="ecxmoz-txt-link-freetext" href="http://www.linkedin.com/in/miconda" target="_blank">http://www.linkedin.com/in/miconda</a></pre>
  

<br>_______________________________________________
SIP Express Router (SER) and Kamailio (OpenSER) - sr-users mailing list
sr-users@lists.sip-router.org
http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-users</div>                                         </div></body>
</html>