<div dir="ltr">Duane,<div><br></div><div><br></div><div>Try reading this tread and see if it helps. I have an environment where proxies handle their own db and I am using rabbit_event queuing to define where users are located along with mongo to query and fork locations.</div><div><br></div><div><br></div><div><br></div>---------- Forwarded message ----------<br>From: <b class="gmail_sendername">Bogdan-Andrei Iancu</b> <span dir="ltr">&lt;<a href="mailto:bogdan@opensips.org">bogdan@opensips.org</a>&gt;</span><br>Date: Thu, Jul 31, 2014 at 2:16 PM<br>Subject: Re: [OpenSIPS-Users] Distributed deployment<br>To: Tito Cumpen &lt;<a href="mailto:tito@xsvoce.com">tito@xsvoce.com</a>&gt;<br>Cc: OpenSIPS users mailling list &lt;<a href="mailto:users@lists.opensips.org">users@lists.opensips.org</a>&gt;, Rik Broers &lt;<a href="mailto:RBroers@motto.nl">RBroers@motto.nl</a>&gt;<br><br><br><div bgcolor="#FFFFFF" text="#000000"><div><tt>Tito,<br><br>In script, you can use any of the nosql backends via the cache related function (cache_store(), cache_fetch(), cache_delete(), etc) including raw queries:<br>    <a href="http://www.opensips.org/Documentation/Script-CoreFunctions-1-11#toc3" target="_blank">http://www.opensips.org/Documentation/Script-CoreFunctions-1-11#toc3</a><br>    <a href="http://www.opensips.org/Documentation/Script-CoreFunctions-1-11#toc9" target="_blank">http://www.opensips.org/Documentation/Script-CoreFunctions-1-11#toc9</a><br><br>Regards,<br></tt><span class=""><pre cols="72">Bogdan-Andrei Iancu
OpenSIPS Founder and Developer
<a href="http://www.opensips-solutions.com/" target="_blank">http://www.opensips-solutions.com</a></pre></span><div><div class="h5">On 31.07.2014 19:45, Tito Cumpen wrote:<br></div></div></div><div><div class="h5"><blockquote type="cite"><div dir="ltr">Bogdan,<div><br></div><div>Thank you once again for sharing. I have looked into using <a href="http://www.opensips.org/html/docs/modules/1.8.x/event_rabbitmq" target="_blank">http://www.opensips.org/html/docs/modules/1.8.x/event_rabbitmq</a> to subscribe to events and delete entries as you have mentioned. Although I am bit uncertain about how to engage nosql for a location lookup via the cfg script. Are you executing an external script from the cfg that interfaces with nosql in order to conduct a query ?</div><div><br></div><div><br></div><div>Thanks,</div><div>Tito</div></div><div class="gmail_extra"><br><br><div class="gmail_quote">On Fri, Jul 4, 2014 at 5:43 AM, Bogdan-Andrei Iancu <span dir="ltr">&lt;<a href="mailto:bogdan@opensips.org" target="_blank">bogdan@opensips.org</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><div bgcolor="#FFFFFF" text="#000000"><div><tt>Hi Tito,<br><br>In my case I&#39;m using one for the modules (for the nosql part), like mongodb, redis, couchebase, etc. The advantages of those nosql engines are that you have an out-of-the-box geo-distributed db cluster; there is no need to try to replicate something like that via sql + http + other. At least that&#39;s my opinion :).<br><br>Regards,<br></tt><div><pre cols="72">Bogdan-Andrei Iancu
OpenSIPS Founder and Developer
<a href="http://www.opensips-solutions.com/" target="_blank">http://www.opensips-solutions.com</a></pre></div><div>On 03.07.2014 23:00, Tito Cumpen wrote:<br></div></div><div><blockquote type="cite"><div dir="ltr">Bogdan,<div><br></div><div><br></div><div>Thanks for sharing. I was hoping to do something similar with http_db and sql by treating new posts with php and replicating them on a remote mysql db which will then be queried for location type requests. In your solution are employing DB_Cache module? Also are you using a queuing solution for events?</div><div><br></div><div><br></div><div>Thanks,</div><div>Tito</div></div><div class="gmail_extra"><br><br><div class="gmail_quote">On Wed, Jun 25, 2014 at 5:38 AM, Bogdan-Andrei Iancu <span dir="ltr">&lt;<a href="mailto:bogdan@opensips.org" target="_blank">bogdan@opensips.org</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><div bgcolor="#FFFFFF" text="#000000"><div><tt>Hi Tito,<br><br>What I do for clustering usrloc is something like this:<br>    - each node manages the registrations independently (there is no usrloc replication between nodes)<br>    - I have a nosql cluster available for all nodes<br>    - I use the AOR related events+routes to push/remove into the nosql db the AOR (only) available on each node<br>    - basically the nosql &quot;knows&quot; which AORs are registered on which node<br>    - when a node handles a call, it looks into nosql to see which are the nodes having registrations for the needed AOR -&gt; call is parallel forked to local registrations (if any) and to the other nodes (based on nosql info)<br><br>Regards,<br></tt><pre cols="72">Bogdan-Andrei Iancu
OpenSIPS Founder and Developer
<a href="http://www.opensips-solutions.com/" target="_blank">http://www.opensips-solutions.com</a></pre><div>On <a href="tel:24.06.2014%2015" value="+12406201415" target="_blank">24.06.2014 15</a>:27, Tito Cumpen wrote:<br></div></div><div><blockquote type="cite"><div dir="ltr">Rik,<div><br></div><div><br></div><div><br></div><div><br></div><div>My deployment is not dependant on virtual IP. Since the failover and load balancing logic resides on the client and I intend to use srv records to define the weight of proxies. The problem comes to surface if a user makes an attempt to register and finds himself on server A. Soon after makes an attempt to register and finds the second client on server b. If a Ruri request sources from server B how can I fork the request in parallel to the first entry in server A?</div><div>Thanks for your reply but I have raised the question of using contact replication before please see below:<br></div><div><br></div><div><br><br><div class="gmail_quote">---------- Forwarded message ----------<br>From: <b class="gmail_sendername">Liviu Chircu</b> <span dir="ltr">&lt;<a href="mailto:liviu@opensips.org" target="_blank">liviu@opensips.org</a>&gt;</span><br>Date: Wed, Jun 11, 2014 at 1:29 PM<br>Subject: Re: [OpenSIPS-Users] binary replication<br>To: <a href="mailto:users@lists.opensips.org" target="_blank">users@lists.opensips.org</a><br><br><br><div text="#000000" bgcolor="#FFFFFF"><div><tt>Hello Tito,<br><br>Both dialog and user location replication were actually designed to work with VIPs only! From the moment the &quot;receiving&quot; instance takes over, it should have the same pool of registered users as instance #1, and it should be able to process all existing dialogues.<br><br>Best regards,<br></tt><pre cols="72">Liviu Chircu
OpenSIPS Developer
<a href="http://www.opensips-solutions.com/" target="_blank">http://www.opensips-solutions.com</a></pre><div>On 06/11/2014 03:27 PM, Tito Cumpen wrote:<br></div></div><blockquote type="cite"><div><div dir="ltr">Group,<div><br></div><div>Playing with the idea of using binary replication. Just curious if anyone can provide a use case. Would this coupled with a virtual ip?  I am not certain how the instance that accepts replications would take over.</div><div><br></div><div><br></div><div>Thanks,</div><div>Tito</div></div><br><fieldset></fieldset><br></div><pre>_______________________________________________
Users mailing list
<a href="mailto:Users@lists.opensips.org" target="_blank">Users@lists.opensips.org</a>
<a href="http://lists.opensips.org/cgi-bin/mailman/listinfo/users" target="_blank">http://lists.opensips.org/cgi-bin/mailman/listinfo/users</a>
</pre></blockquote><br></div><br>_______________________________________________<br>Users mailing list<br><a href="mailto:Users@lists.opensips.org" target="_blank">Users@lists.opensips.org</a><br><a href="http://lists.opensips.org/cgi-bin/mailman/listinfo/users" target="_blank">http://lists.opensips.org/cgi-bin/mailman/listinfo/users</a></div></div></div><div class="gmail_extra"><br><br><div class="gmail_quote">On Tue, Jun 24, 2014 at 5:35 AM, Rik Broers <span dir="ltr">&lt;<a href="mailto:RBroers@motto.nl" target="_blank">RBroers@motto.nl</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><div link="#0563C1" vlink="#954F72" lang="NL"><p class="MsoNormal"><span style="font-size:11pt;font-family:Calibri,sans-serif">I’m was also looking into this problem, which is very similar to yours.</span></p><p class="MsoNormal"><span style="font-size:11pt;font-family:Calibri,sans-serif"> </span></p><p class="MsoNormal"><span style="font-size:11pt;font-family:Calibri,sans-serif">I found this and it is a perfect solution to my problem.</span></p><p class="MsoNormal"><span style="font-size:11pt;font-family:Calibri,sans-serif">Think this would help you too.</span></p><p class="MsoNormal"><span style="font-size:11pt;font-family:Calibri,sans-serif"> </span></p><p class="MsoNormal"><span style="font-size:11pt;font-family:Calibri,sans-serif"><a href="http://www.opensips.org/html/docs/modules/devel/usrloc#usrloc-replication" target="_blank">http://www.opensips.org/html/docs/modules/devel/usrloc#usrloc-replication</a></span></p><p class="MsoNormal"><span style="font-size:11pt;font-family:Calibri,sans-serif"> </span></p><p class="MsoNormal"><span style="font-size:11pt;font-family:Calibri,sans-serif"> </span></p><p class="MsoNormal" style="margin-bottom:12pt;line-height:12.75pt"><span style="font-size:11pt;font-family:Calibri,sans-serif">Vriendelijke groet,<br><br><b><span style="color:rgb(132,196,27)">Rik Broers</span></b><br></span><span style="font-size:9pt;font-family:Calibri,sans-serif;color:rgb(33,39,53)">Voice Engineer</span><span style="font-size:11pt;font-family:Calibri,sans-serif"><br><br></span><span style="font-size:11pt;font-family:Calibri,sans-serif"></span></p><p class="MsoNormal"><b><span style="font-size:11pt;font-family:Calibri,sans-serif">Van:</span></b><span style="font-size:11pt;font-family:Calibri,sans-serif"> <a href="mailto:users-bounces@lists.opensips.org" target="_blank">users-bounces@lists.opensips.org</a> [mailto:<a href="mailto:users-bounces@lists.opensips.org" target="_blank">users-bounces@lists.opensips.org</a>] <b>Namens </b>Tito Cumpen<br><b>Verzonden:</b> dinsdag 24 juni 2014 04:54<br><b>Aan:</b> OpenSIPS users mailling list<br><b>Onderwerp:</b> [OpenSIPS-Users] Distributed deployment</span></p><div><p class="MsoNormal"> </p><div><p class="MsoNormal">Hello group,</p><div><p class="MsoNormal"> </p></div><div><p class="MsoNormal"> </p></div><div><p class="MsoNormal">I am reaching out to you because I am hitting a roadblock in designing a distributed deployment. Currently I am entertaining the idea of  using DNS srv for the sake of load balancing and availability. The main problem is sharing aors among the proxies. My requirement is to allow proxies to fork requests to remote proxies in which a user could be registered to in addition to the local server. The binary replication component will not suffice because it is tailored to virtual ip. I&#39;ve noticed that opensips has a recursive timer that runs at every second to verify which registration expires with the intent of removing it. Assuming a shared mysql instance is the only option each proxy will be querying mysql which seems like a ton of activity. Can anyone advise what the best practice for scaling would be?</p></div><div><p class="MsoNormal"> </p></div><div><p class="MsoNormal"> </p></div><div><p class="MsoNormal">Thanks,</p></div><div><p class="MsoNormal">Tito</p></div></div></div></div><br>_______________________________________________<br>Users mailing list<br><a href="mailto:Users@lists.opensips.org" target="_blank">Users@lists.opensips.org</a><br><a href="http://lists.opensips.org/cgi-bin/mailman/listinfo/users" target="_blank">http://lists.opensips.org/cgi-bin/mailman/listinfo/users</a><br><br></blockquote></div><br></div><br><fieldset></fieldset><br><pre>_______________________________________________
Users mailing list
<a href="mailto:Users@lists.opensips.org" target="_blank">Users@lists.opensips.org</a>
<a href="http://lists.opensips.org/cgi-bin/mailman/listinfo/users" target="_blank">http://lists.opensips.org/cgi-bin/mailman/listinfo/users</a>
</pre></blockquote><br></div></div></blockquote></div><br></div></blockquote><br></div></div></blockquote></div><br></div></blockquote><br></div></div></div><div> </div></div><div class="gmail_extra"><br><div class="gmail_quote">On Mon, Jan 26, 2015 at 6:25 PM, Duane Larson <span dir="ltr">&lt;<a href="mailto:duane.larson@gmail.com" target="_blank">duane.larson@gmail.com</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr">Correct.  I meant Priority.  I set my Primary Server as &quot;0&quot; and backup as &quot;1&quot;.  For the db_mode I use 3 which is &quot;DB Only&quot; mode.<div><br></div><div>I did look into the possibility of using Bin replication but it sounds like in order to use that both OpenSIPS instances have to use the same IP address.  Will see what I can do with t_relay&#39;ing INVITE&#39;s to the correct Proxy that the client is registered with.</div><div><br></div><div>Thanks</div></div><div class="HOEnZb"><div class="h5"><div class="gmail_extra"><br><div class="gmail_quote">On Mon, Jan 26, 2015 at 10:42 AM, Bogdan-Andrei Iancu <span dir="ltr">&lt;<a href="mailto:bogdan@opensips.org" target="_blank">bogdan@opensips.org</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
  
    
  
  <div text="#000000" bgcolor="#FFFFFF">
    <div><tt>Hi Duane,<br>
        <br>
        First, in regards to your DNS records - I suppose you use higher
        priority and not higher weight ? The weight are used to control
        how many (as ratio) times each record is used. If you want to
        have all the time R1 and have R2 only if R1 is done, then you
        should use priorities.<br>
        <br>
        Now, you mentioned both proxies do use the same location table
        in DB. But what db_mode is used in the usrloc module ? If you
        have DB_ONLY mode, I see no problem with the scenario you
        described (as both proxies will read/write from/to single DB).
        If you use other db modes, you will probably need to use the bin
        replication in usrloc module in order to sync the cache too.<br>
        <br>
        Regards,<br>
      </tt>
      <pre cols="72">Bogdan-Andrei Iancu
OpenSIPS Founder and Developer
<a href="http://www.opensips-solutions.com" target="_blank">http://www.opensips-solutions.com</a></pre><div><div>
      On 25.01.2015 02:31, Duane Larson wrote:<br>
    </div></div></div>
    <blockquote type="cite"><div><div>
      <div dir="ltr">Before I try to reinvent the wheel I wanted to see
        if there is already a way to do this.
        <div><br>
        </div>
        <div>For redundancy I have two Proxies and I am using DNS SRV
          with Proxy01 weighted higher so that it is the primary that
          all clients register and use.  Both proxies use the same
          location database.  In the event of a failure on Proxy01 all
          clients would register with Proxy02.  Everything is fine but
          what happens when clients register time expires and they start
          re-registering with Proxy01 since it is weighted higher.  So
          now some clients will be registered with Proxy01 and some with
          Proxy02. Everything will work fine but what if Client01 (who
          is registered with Proxy01) calls Client02 (who is registered
          with Proxy02)?  I think the INVITE should do the following</div>
        <div><br>
        </div>
        <div>Client01 -&gt; Proxy01 -&gt; Proxy02 -&gt; Client02</div>
        <div><br>
        </div>
        <div>On Proxy01 I could look in the location database to see
          what is set in the &quot;socket&quot; field and then route it to Proxy02
          but I was wondering if there is already a way to do this?</div>
      </div>
      <br>
      <fieldset></fieldset>
      <br>
      </div></div><pre>_______________________________________________
Users mailing list
<a href="mailto:Users@lists.opensips.org" target="_blank">Users@lists.opensips.org</a>
<a href="http://lists.opensips.org/cgi-bin/mailman/listinfo/users" target="_blank">http://lists.opensips.org/cgi-bin/mailman/listinfo/users</a>
</pre>
    </blockquote>
    <br>
  </div>

</blockquote></div><br></div>
</div></div><br>_______________________________________________<br>
Users mailing list<br>
<a href="mailto:Users@lists.opensips.org">Users@lists.opensips.org</a><br>
<a href="http://lists.opensips.org/cgi-bin/mailman/listinfo/users" target="_blank">http://lists.opensips.org/cgi-bin/mailman/listinfo/users</a><br>
<br></blockquote></div><br></div>