Hello,
On 05.08.2009 10:37 Uhr, Martin Werne wrote:
Hi!
I'm planning a new platform based on Kamailio, to replace an existing Cisco-platform.
- A total of appr. 2000 ATAs/IP Phones (today appr. 300).
- Routing to various providers/gateways via custom made OSP-server.
- Two Kamailio-servers on different geographic locations.
- Load-balancing/Failover of ATA's by use of DNS-SRV.
The main "problem" I see, is how local calls between ATA's registered on each of the Kamailio-servers is routed. How can Kamailio1 route a call to an ATA registered on Kamailio2?
What is best in this scenario?
- If user not found on local Kamailio-server, forward call to next Kamailio-server.
- Let the Kamailio-servers share the same database (same location-table)?
- Let the Kamailio-servers copy the REGISTER to the other Kamailio-server(s) so that the other Kamailio-server(s) update their own location-table.
I would prefer not to use alternative 1...
If alternative 3 is the best, is 't_replicate' the way to do it?
What if I add a third Kamailio-server, will that change the recommendation?
t_replicate is recommended for 3., but does not scale nice for too many servers - for 3-4 is still ok. However, if you have nat, then you must route back to user through the box where is registered, so 3 is not very helpful there.
If you need more servers or nat, then probably is better to put a load balancer in front of them (with PATH if you have nat) and implement distribution logic there.
There are many solutions that applies depending of platform specifics. If one user can register only once, you ca do a star deployment. A master registrar stays is the middle, and gets updates of where one user is registered. If a registrar does not find the user locally, sends call to master registrar which forwards to appropriate registrar or returns no found.
We can talk hours about possible and best distribution solutions ...
Cheers, Daniel