Wowza 4.1 nDVR with Load Balancer 4.0

Hello,

We are trying to upgrade our 8 Wowza 3 servers to Wowza 4, and I am working out any bugs in our development environment to make sure it goes well. I was able to setup Wowza 4.1 with nDVR and Load Balancer 4.0 without any problems. But I have a few questions about it.

  1. When I use nDVR and Load Balancer with the Apple HLS (M3U8) redirect method.

If I point my client at this for redirection:

http://[load-balancer-ip-address]:1935/redirect/[application-name]/[stream-name]?scheme=m3u8

It correctly redirects to this:

http://[load-balanced-server-ip-address]:1935/[application-name]/[stream-name]/playlist.m3u8

But, since we are using nDVR (which works correctly on it’s own), I need it to redirect to this, yes?:

http://[load-balanced-server-ip-address]:1935/[application-name]/[stream-name]/playlist.m3u8?DVR

I have tried adding the DVR query at the end like this, but it doesn’t work.

http://[load-balancer-ip-address]:1935/redirect/[application-name]/[stream-name]?scheme=m3u8?DVR

Is there a way to use both of these together?

  1. I would like to have a backup Load Balancer.

Is there a way to specify a second Load Balancer in case primary fails? For our setup, each site has 2 Wowza servers. Each server has these roles:

Server1

liveorigin (primary)

liveedge (points to primary|backup)

Load Balancer Server (primary)

Load Balancer Client

Server2

liveorigin (backup)

liveedge (points to primary|backup)

Load Balancer Server (backup)

Load Balancer Client

The way I am thinking about doing it is using a virtual ip that both Load Balancer Clients will point to. So, when the primary server fails, the backup server will take the VIP, and thus become the Load Balancer Server. I remember with the Wowza 3 load balancer had a way to add a backup Load Balancer Server. Any ideas?

As always, thanks for your help!

Jordan

Hi,

For the question #1, you should use following URL format:

http://[load-balancer-ip-address]:1935/redirect/[application-name]/[stream-name]?scheme=m3u8&DVR

I didn’t test the scenario you described in your #2 question, but I don’t see a reason why it shouldn’t work. I guess you will use a tool similar to “UltraMonkey” to check if a server is up or not and based on that assign the VIP to the active server.

Zoran

Hi Zoran,

Thanks for that information. Your solution worked fine.

After a bit of testing with our setup, however, we would prefer for the client to get the least loaded server once and save the information. We have an IPTV setup with a web front end that the client connects to. Each time they change the channel, they get redirected to the stream URL. This method would make them check with the load banancer each time, which seem undesirable for us. Because of that, I started to see if I could imitate the way the old load balancer worked. You query the Load Balancing Server, and you get an IP address of the Least Loaded Edge in return. In the WowzaDynamicLoadBalancingAddon_UsersGuide, I was trying to use the setup under ‘Host-specific information’. It seemed like it was working well.

We are using this to query the server from the client:

http://[load-balancer-ip-address]:1935/redirect/?request=server

In response, we get back the IP and port of the primary server. When clients start connecting, however, we noticed that edge1 gets, by far, the majority of the connections. As in edge1=150 edge2=40. Am I missing something?

Here are the options I have in our Server.xml on each server:

         
         <Property>
            <Name>loadbalanceType</Name>
            <Value>Server,Client</Value>
            <Type>String</Type>
         </Property>
         <Property>
            <Name>loadbalanceKey</Name>
            <Value>[secret key]</Value>
            <Type>String</Type>
         </Property>
         <Property>
            <Name>loadbalanceClientName</Name>
            <Value>[hostname of machine this xml is on]</Value>
            <Type>String</Type>
         </Property>
         <Property>
            <Name>loadbalanceServerIP</Name>
            <Value>[virtual IP of cluster]</Value>
            <Type>String</Type>
         </Property>
         <Property>
            <Name>loadbalanceServerPort</Name>
            <Value>1935</Value>
            <Type>String</Type>
         </Property>
         <Property>
            <Name>loadbalanceDecisionOrder</Name>
            <Value>Connection</Value>
            <Type>String</Type>
         </Property>
         <Property>
            <Name>loadbalanceBandwidthEnable</Name>
            <Value>Off</Value>
            <Type>String</Type>
         </Property>
         <Property>
            <Name>loadbalanceBandwidthLimit</Name>
            <Value>0</Value>
            <Type>String</Type>
         </Property>
         <Property>
            <Name>loadbalanceConnectionEnable</Name>
            <Value>On</Value>
            <Type>String</Type>
         </Property>
         <Property>
            <Name>loadbalanceConnectionLimit</Name>
            <Value>0</Value>
            <Type>String</Type>
         </Property>
         <Property>
            <Name>loadbalanceIgnoreClients</Name>
            <Value>FMLE</Value>
            <Type>String</Type>
         </Property>
         <Property>
            <Name>loadbalanceAllowRemoteClientShutdown</Name>
            <Value>On</Value>
            <Type>String</Type>
         </Property>

Any help would be great! I know I am just missing something simple. Thanks!

Jordan

Hi everyone. Any update on this? Again, what we are looking for is for the loadbalancer to split the connections based only on connection for decision order. Right now, only one server seems to be getting the load although both of them show up in :1935redirect/Ioadbalancerinfo. When we go to the primary load balancer server with:

http://172.20.24.12:1935/redirect/?request=server

we get an IP and port, but no matter how many connections we add to that server, we always get the same IP, not the least loaded server.

Also, I noticed that I posted this in the Wowza 3 forums and it should probably go in the Wowza 4. Before I re-post, could I just get the thread moved?

Thanks for your help!

Jordan