So this is a question that I have been asked frequently. I think it is better to put an explanation here and forward everyone.
It is very common to see new VoIP companies startups. But as any startup, the entrepreneurs look for the cheapest option with the best performance and availability. First of all, I must say there is no a 100% fault-free architecture, but we can archive 99.99999% and as many 9's you want. It is all about the money you want to invest.
I will explain an architecture that it can be close to 5 nines, 99.999%. It will depend on the money to implement it fully or just a part of it. Please remember that I am telling you what, not how.
In this example, there are two data centers. Each data center is isolated each other with its own Internet addressing (or different network IP's) and ideally, they are geographically distant (let's say one in Paris, France and the other in Los Angeles, US).
As you see, the servers that are in each node are almost the same. I will talk about each one and its role.
If you decide to go for this approach, you will find that you really must have very bad luck to be offline. Both data centers must go down!
Anther advantage of this approach is it can be deployed using VPS'es. Please note that not all the VPS companies will offer you the floating IP capability or you can go and deploy it using bare metal servers. If those two options are out of your reach, using one server will work for you (no floating IP), but do not forget it will be more vulnerable to service disruptions.
Now that you have the overview in terms of what data center stuff means, now we will talk about the internal architecture of a single node.
The SIP server has the following elements:
The DNS server has the following elements:
FreeSWITH will use FusionPBX' XML handler to feed itself all the information needed to setup configuration for the modules, dial plans, directory information (SIP extension authentication) and language settings among other. FusionPBX' XML handler gets information first from the Memcached, if information is not there then it gets directly from the database by doing a connection through the database balancer. XMLHandler will store information into the Memcached for future use. FreeSWITCH will also do direct database connections through the database balancer in order to save operational information such as registration, call state, queues and other.
FusionPBX (the WEB interface) feeds the database through the database balancer. It will flush the Memcached sub-system to make sure changes affect the system right away. The billing software is an add-on which resides inside FusionPBX. Having a native interface takes out extra servers from the picture. Billing has LCR capabilities and pseudo enum support, this means it will save you money from your selected carriers as much as it can.
In the specific case of inter-data center calls (userA@domain1 registered in data center 1 calls userB@domain1 registered in data center 2), because all FreeSWITCH share the same database, it is easy to know where the endpoint is registered. Both FreeSWITCH servers, the caller and the callee, will establish a connection.
Both servers will have some kind of software (there are many options) to allow the filesystem synchronization of some specific paths, not only in the double active-passive but among everyone.
While operating, VoIP servers will collect passive information about network conditions. DNS add-on will use that information to resolve the correct A and SRV records. The DNS answer will be the optimized one in order to let an endpoint having connectivity with the data center that has the best network conditions.
This architecture is failure tolerant in the following ways:
This scheme shouldn't be too expensive if you are getting serious in the VoIP business. Some quick numbers (taking cheapest numbers, no necessary the best quality):
So, if my maths are correct you can maintain this infrastructure, it will cost you a kick start of 421 USD, plus monthly fees of 120 USD.
Good Luck!blog comments powered by Disqus