<HTML>
<P class=MsoNormal style="MARGIN: 0cm 0cm 12pt"><SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: Arial">I assume the problem you asked about it happening because the client is disregarding the INVITE from a server with an IP address it was not registered to. If you try to capture the packets going out of your FS (or packets coming in your phone client), I bet you'll see the INVITE request, but no activity thereafter.<BR>
<BR>
I believe that when considering High-Availability for FreeSWITCH, these issues need to be addressed:<BR>
1. A shared/floating IP clustering solution such as a load-balancer will only work if the <?xml:namespace prefix = st1 ns = "urn:schemas-microsoft-com:office:smarttags" /><st1:City w:st="on"><st1:place w:st="on">SOFIA</st1:place></st1:City> hash table is shared between all servers. I don’t know if FreeSWITCH entire state is being held in the database or whether some elements are being held in memory.<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /><o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 12pt"><SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: Arial">2. FreeSWITCH needs to have shared-bus architecture to allow for a fully clustered solution. Currently, I don’t think that two parked channels on different cluster nodes can be bridged in the current architecture because there’s no inter-cluster media switching protocol that I know of.<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 12pt"><SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: Arial">3. A Meshed server approach where different clients are registered to different nodes (like the Cisco Call Manager architecture) seems to be the only immediate option but it is problematic as it requires the client to be configured with a list of redundant servers and most clients don’t have that functionality.<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 12pt"><SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: Arial">4. I would strongly recommend reconsidering the use of any DNS feature (such as SRV records) when deploying a telephony infrastructure. Of course, it all depends what this deployment is for. DNS is commonly used in the ITSP space due to the vast audience but enterprises (all sized) are recommended to refrain adding DNS to the list of point-of-failures in their telephony architectures.<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 12pt"><SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: Arial">5. I believe the FreeSWITCH conferencing module needs to be adapted to support clustering in order to scale over more than one server. This is due to the same share-bus issue mentioned earlier.<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 12pt"><SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: Arial">6. In a meshed servers architecture you will need to implement a mechanism that will identify which node in the cluster “owns” B-Leg, bridge the call to that node and in that node bridge the call again to B-Leg. When you find a way to implement it (I believe FreeSWITCH to have the tools to enable you to do it now), it would solve your current issue.<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 12pt"><SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: Arial">7. I still have doubts about using carrierroute module opposed to the DISPATCHER module for inbound traffic, mainly because of the registration issue, but I don’t have sufficient experience to determine that.<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 12pt"><SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: Arial"><o:p> </o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 12pt"><SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: Arial">Anyway, it’s very interesting and I definitely like to know how you’re going with it.<o:p></o:p></SPAN></P><BR>
<BR>
<BR>
<B>On Thu Oct 30 2:04 , "Anthony Minessale" <ANTHONY.MINESSALE@GMAIL.COM>sent:<BR>
<BR>
</B>
<BLOCKQUOTE style="PADDING-RIGHT: 0px; PADDING-LEFT: 5px; MARGIN-LEFT: 5px; BORDER-LEFT: #5167c6 2px solid; MARGIN-RIGHT: 0px">This all seems right and would make a great wiki page.<BR>
What you have described *should* work.<BR>
<BR>
when a phone registers try doing <BR>
sofia_contact <<A href="javascript:top.opencompose('user@domain.com','','','')">user@domain.com</A>> <BR>
from the cli on each box and see what you get.<BR>
<BR>
you can also use this function in the dialpan <BR>
${sofia_contact(<A href="javascript:top.opencompose('user@domain.com','','','')">user@domain.com</A>)}<BR>
<BR>
check that they are both using the same domain name as the profile name<BR>
or at least have an alais for it etc.<BR>
<BR>
if it's a bug i can fix it pretty fast as that is the intended behaviour<BR>
perhaps you can join irc and get us in the box(s) to have a look at it as we <BR>
do not have that situation labbed up anywhere.<BR>
<BR>
<BR>
<BR>
<BR>
<DIV class=gmail_quote>On Tue, Oct 28, 2008 at 6:41 PM, Marc Lewis <SPAN dir=ltr><<A href="javascript:top.opencompose('marc@avvatel.com','','','')">marc@avvatel.com</A>></SPAN> wrote:<BR>
<BLOCKQUOTE class=gmail_quote style="PADDING-LEFT: 1ex; MARGIN: 0pt 0pt 0pt 0.8ex; BORDER-LEFT: rgb(204,204,204) 1px solid"><BR>
I am in the process of making my FreeSWITCH installation highly<BR>
available and I'm running into a couple of snags that was hoping that<BR>
someone may have some insight on.<BR>
<BR>
First, the setup as it is now.<BR>
<BR>
There are two installations of FS on two different servers, lets call<BR>
them fs1 and fs2. They each pull their configurations, dialplan,<BR>
directory and post CDR's all using mod_curl from a central web server.<BR>
That part works great.<BR>
<BR>
Calls into and out of FS go through an OpenSER proxy set up using<BR>
carrierroute. That part also works great for outbound calls to the<BR>
PSTN. Inbound calls also come in through this OpenSER proxy and get<BR>
routed to the primary switch fs1. That also works perfectly as long as<BR>
its going to fs1.<BR>
<BR>
fs1 and fs2 are both setup to use an ODBC connection to store<BR>
registrations. This is pointed to a MySQL database made highly<BR>
available using the RedHat Cluster Suite on a shared fibre channel<BR>
partition. fs1 and fs2 both share the same database. Voicemail storage<BR>
on fs1 is directly mounted on a GFS2 partition, fs2 is mounting the<BR>
shared storage from a different server via NFS for no single point of<BR>
failure.<BR>
<BR>
For the phones, I have them setup to use SRV records and have fs1 at<BR>
priority 10 and fs2 at priority 20 for <A href="http://acme.domain.com" target=_blank>acme.domain.com</A>. I've tested<BR>
this and phones register to the correct server and the sip_registration<BR>
table shows either fs1 or fs2 as the hostname as I would expect.<BR>
<BR>
Here is the problem. If user <A href="javascript:top.opencompose('100@acme.domain.com','','','')">100@acme.domain.com</A> registers on fs2 and a<BR>
call comes in from the OpenSER proxy to fs1, bridging the call to<BR>
/sofia/internal/100%<A href="http://acme.domain.com" target=_blank>acme.domain.com</A> from fs1 doesn't ring the phone. Is<BR>
there a difference between 'sofia/internal/100%<A href="http://acme.domain.com" target=_blank>acme.domain.com</A>' and<BR>
'user/<A href="javascript:top.opencompose('100@acme.domain.com','','','')">100@acme.domain.com</A>'?<BR>
<BR>
Calls out from either fs1 or fs2 routed to the proxy work fine, its just<BR>
calls coming in from the proxy. If the call doesn't go to the switch<BR>
the user is registered on, the user's phone doesn't ring. It still goes<BR>
to voicemail, etc., so that part works.<BR>
<BR>
Is there a better way to cluster FreeSWITCH than DNS SRV records and a<BR>
shared state database?<BR>
<BR>
Also, as a side note to Anthony, Brian, et al, if this is the best way,<BR>
I'll be happy to write up a wiki page on how I have this setup with a<BR>
lot more detail than this. I was not able to find much in the way of<BR>
highly available configurations or cluster configurations, so I put<BR>
together this system using information cobbled from the wiki, mailing<BR>
list messages and lurking on IRC.<BR>
<BR>
Thanks.<BR>
<BR>
- Marc<BR>
<BR>
--<BR>
Marc Lewis<BR>
Avvatel Corporation<BR>
<BR>
<BR>
_______________________________________________<BR>
Freeswitch-users mailing list<BR>
<A href="javascript:top.opencompose('Freeswitch-users@lists.freeswitch.org','','','')">Freeswitch-users@lists.freeswitch.org</A><BR>
<A href="http://lists.freeswitch.org/mailman/listinfo/freeswitch-users" target=_blank>http://lists.freeswitch.org/mailman/listinfo/freeswitch-users</A><BR>
UNSUBSCRIBE:<A href="http://lists.freeswitch.org/mailman/options/freeswitch-users" target=_blank>http://lists.freeswitch.org/mailman/options/freeswitch-users</A><BR>
<A href="http://www.freeswitch.org" target=_blank>http://www.freeswitch.org</A><BR>
</BLOCKQUOTE></DIV><BR>
<BR clear=all><BR>
-- <BR>
Anthony Minessale II<BR>
<BR>
FreeSWITCH <A href="http://www.freeswitch.org/" target=_blank>http://www.freeswitch.org/</A><BR>
ClueCon <A href="http://www.cluecon.com/" target=_blank>http://www.cluecon.com/</A><BR>
<BR>
AIM: anthm<BR>
<A href="javascript:top.opencompose('MSN:anthony_minessale@hotmail.com','','','')">MSN:anthony_minessale@hotmail.com</A><BR>
GTALK/JABBER/<A href="javascript:top.opencompose('PAYPAL:anthony.minessale@gmail.com','','','')">PAYPAL:anthony.minessale@gmail.com</A><BR>
IRC: <A href="http://irc.freenode.net">irc.freenode.net</A> #freeswitch<BR>
<BR>
FreeSWITCH Developer Conference<BR>
<A href="javascript:top.opencompose('sip:888@conference.freeswitch.org','','','')">sip:888@conference.freeswitch.org</A><BR>
<A href="http://iax:guest@conference.freeswitch.org/888">iax:guest@conference.freeswitch.org/888</A><BR>
<A href="javascript:top.opencompose('googletalk:conf_PLUS_888@conference.freeswitch.org','','','')">googletalk:conf+888@conference.freeswitch.org</A><BR>
pstn:213-799-1400<BR>
</BLOCKQUOTE></HTML>
<BR>