I’m working on deploying a high available and scalable system with WOWZA. My system will deliver streams to clients via both live and vod (s3) applications. I have been reading a lot on the forums here, and found that the live repeater schema (origin/edge) along with WOWZA’s Dynamic Load Balancer seems that will work just fine. See below a great explanation by salvadore.
The solution I have then defined for my system is described in the picture below (sorry for the hand drawing):
This approach looks good but I see some problems, such as that the “origin/load balancer” server is the single point of failure in the system. In addition, and most importantly, I can’t think of any good way to load balance that specific server. Meaning what if the server is overloaded with many live encoders ? Configure a second “origin/load balancer” server seems that won’t work because the edges would be associated with first origin server. I have seen on this post a suggestion to put two servers in a DNS round robin, but the question is how would the edges know about the right origin (considering it has to match the live source)? Also there’s a note indicating that this may be achievable with some custom code. Any directions here would be appreciated.
This has been addressed in ticket #180167. I am copying the response here for other users:
For the load balancer part, there should not be too much processing overhead, since the server should immediately respond with a redirect to the client playback requests. The bulk of the processing is then handed over to the edge server, which would be packetizing and serving the stream to the player. For disaster recovery, you can have a second backup server configured exactly the same, that you can bring up on short notice. You should not need to have two redundant load balancers active at the same time, unless you plan on scaling with a geographic reach. For example, setting up a load balancer to handle all requests in North America, and another to handle all requests in Europe. Or if your load balancer server is not able to keep up with the demand.
Adding the functionality to the same server of ingesting all live stream sources does present some complications, however. This possibly could use up a lot of your server resources, particularly if you plan on transcoding. I would recommend that you have redundancy in place by having a second server ingesting the same live stream sources. If you are using the live-edge type application, your edge configuration should be able to pull from two different sources, a primary and a backup origin server. You would need to have your encoders sending time-synced streams to both Wowza origin servers. You may also want to look into having any transcoding processes done on the edge server, depending on your use case.
Once configured, if the primary URL is not available, then your edge servers should automatically switch over to the backup URL.