We have had a single instance of wowza running and are currently running streaming engine 4.4.1. We see a need to add an aditional server and on occasion may need to also add a AWS instance for capacity. We would like some advice on using the software dynamic load balancer add on or should we use a hardware loadbalancer. If it is the hardware solution does any one recomend from experince a good load balancer solution.
It appears to me that minus the cost the load balancer solution looks easier to configure.
The Wowza Load Balancer usually works well for swapping additional servers in/out of production. There is an option to remove the servers individually from your Load Balancing workflow, so you could easily add a server to your workflow when needed and remove it when finished with your event. You can obtain the latest copy of the Wowza Load Balancer here. It’s a free application so you may want to try it out before purchasing a hardware load balancer.
We also have an article that shows how to install this software, using cloud based instances as an example. You may find this helpful:
We currently use JW player 6 and I think there is an issue. From what I have read JWplayer does not support http streaming with the 302 redirection from the wowza load balancer. For this reason I was thinking of using a hardware solution. I am open to any ones thoughts on what a good solution to this problem would be. The RTMP solution does not seem to fall back for Android users so that is not an option.
Yes, that is correct. The Wowza Dynamic Load Balancer does not support multiple Load Balancer Servers when configuring Load Balancer clients.
To have a redundant Load Balancer setup, you can have an active LB server and a stand-by LB server. You will need to configure all the Load Balancer clients to subscribe to the Load Balancer Server using its hostname, and have your DNS point to the active Load Balancer server. If the active LB server fails, you can simply update the DNS records to point to the stand-by LB server, and all the LB client machines will start registering to the new LB server.
Having the updated DNS records, the client connections will also reach the new LB server, and redirected to the LB client machines that were already registered with the new LB server.
Yes, I believe that JWPlayer does not currently support redirection for HTTP links. We don’t have any particular recommendations for hardware load balancing but maybe other users may have suggestions.
You could also consider using Amazon’s Elastic Load Balancer if you’re already using ec2 instances. This has been used successfully by users to provide redundancy and can be used to scale depending on your loads. Please see the following link for more information:
Wowza Load Balancer offers good control of the balancing process (geo-ip, number of connections, bandwidth, etc.), so it is a good choice especially if you need fine control. However, it doesn’t offer any redundancy in itself. If you want to have a redundant setup, you need some kind of keepalive mechanism between two LBs. You could go with LVS with keepalived, or maybe HAProxy. These options don’t require the redirection, but instead offer transparent load balancing.
If you want to utilize the fine control of Wowza LB, but also want redundancy, you could even combine these two, by putting LVS/keepalived in front of Wowza LB. One solution for redundancy, although not a very good one, would be to use only two Wowza LBs with DNS loadbalancing between them.
One more option to consider, if redundancy is not an issue, is to use Wowza LB but not the redirection mechanism. Wowza LB offers the mechanism to query the LB via HTTP and get the least loaded server at that moment (the “host-specific” information). So, you could do this query from the webapp dynamically each time a client wants to connect, and generate the stream URL based on the reply from the LB.
Actually, I just read that the latest version of Wowza LB doesn’t support multiple load balancers, so if redundancy is a requirement - Wowza LB is not an option.
That is an option yes, but there are two downsides to that approach:
DNS failover requires some time to be carried out. Having even a very low TTL of 60 seconds means up to 1 minute of downtime, which may be a lot for many setups.
This approach would require some external monitoring of the primary LB health and DNS update triggering in case of its failure. If monitoring is not located on the secondary LB, then this monitoring needs to be redundant as well.
All in all, it is a setup to consider definitely, but it may be sub-optimal for some more demanding setups.