ABR via Edge Deployment and LB

Hello,

We have installed 10 Wowza servers, where 2 of them are used as Origin servers, and the 8 others are used as Edge servers.

Our use case in live streaming to approximetly 5k concurrent users in 1080p, so we would like all of the users to access the Edge servers and not to the Origin directly.

We are open to suggestions regarding the player we can use, but we want to choose our best options regarding the following matters:

  1. We want each user accessing a video through a player to have an ABR ability, using ngrp and not SMIL (because most of the third party players don’t support SMIL). How should it be configured using Edge?

  2. What is the best way to get load balancing between all of the end users? we would like them to access some kind of DNS LB name (as the player “video source”), and then it’ll redirect each user to a different Edge server.

  3. when setting up an Edge server, I saw that when the primary origin is unavialable, it dosen’t fallbacks automaticaly to the secondary, altough it is online and configured correctly. what could be the reason?

Regards,

Ron.

Hello Ron,

Maybe the best option is to go with jwplayer or jwplayer for start, as they are widely used with wowza. If you come accross some functionality missing in those players, you can take a look at some other options as well.

  1. There is no special configuration player-wise. Players don’t really know if you’re using origin/edge or a single-server setup. The URL supplied to the player just needs to have a “ngrp:” prefix before the streamname. I’m assuming you have the ngrp streams configured and working on origin servers already? If so, you can add this to Startup streams on edge servers and you should be able to play them from jwplayer/flowplayer. If you are having any problems, please specify which exactly.

  2. Take a look at Wowza Load Balancer. This LB monitors the health and load of all edge servers and redirects users to the best edge server (based on the supplied decision process). This satisfies the requirements you specified. In this setup however you depend on reliability of one edge that acts as a LB, so you have a reliability issue. If you want to address this you could either have two Wowza LBs, and maybe DNS load balancing between them (although this introduces a new problem) or some other load balancing mechanism in front of wowza (such as AWS Route53, or some linux LB tool, etc.)

  3. Do you have any log messages? Bear in mind that the primary origin has to be really unavailable (e.g. server is dead or wowza stopped) in order to active fallback. If just the stream is unavailable, there will be no fallback.

Hi,

Can you post what you have exactly in your StartupStreams.xml file? It may be a mis-configured XML file. You can also check for any mis-configured XML files by reviewing your access log files and looking for any XML Parse error lines.

To use SMIL files in an origin/edge repeater workflow, you would also need to make sure that the same SMIL file is present on both the origin and the edge server.

Michelle

Hi Ron,

Startup streams serves exactly that purpose on edge servers. I haven’t really done this with ngrp, but I have with smil. I guess it should work the same way. If I’m right, you should add the ngrp:mystream_all (or whatever you configured on origin) to startup streams (Server/Startup streams) with liverepeater as mediacaster type.

You should end up with something like this in the StartupStreams.xml on edge server(s):

wowz://origin_url:1935/app_name/definst

ngrp:mystream_all

liverepeater

Let me know if you need more detailed instructions on how to configure this.

I tested this and, as far as I can see, there is no way to use ngrp when using edge servers. It seems that you’ll have to go with .smil files instead. You can take a look at this guide to see how its done: https://www.wowza.com/docs/how-to-create-and-play-smil-files-with-streams-created-by-wowza-transcoder

You get the same thing, although you do have some overhead creating appropriate smil files.

Yes, that is the correct format of an entry in StartupStreams.xml.

You also need to create an appropriate smil file(s) in the content folder. You can find how to do that in the link I sent previously.

When you create smil files, you can also add them to Startup Streams from Engine Manager (Server/SMIL Files/Add to Startup Streams) instead by editing xml file.

Once you do this and restart application on edge server, you should see active streams in Engine Manager (Applications/app_name/Incoming Streams). If streams are here and active, then you did it the right way.

Hello,

First of all, i’d like to thank you very much for your assistance.

I wanted to refer this sentence:"If so, you can add this to Startup streams on edge servers and you should be able to play them from jwplayer/flowplayer. "

It is unclear what i need to setup and change in order to get all of my Edge servers to pull all of my transcoded streams from the Origin servers.

I need each one of my Edge servers to be able to supply all renditions to the players that will interact with them, and not with the Origin servers.

Currently, each time someone asks for a stream, it pulls it by demand.

I’d like to create a mechanism where players will seamlessly connect to Edge servers, and will be able to pull all renditions avialable on Origin servers using ngrp feature. How can i achieve this?

Iv’e read the article below, and it doesn’t state an answer to my question above.

https://www.wowza.com/docs/how-to-start-streams-at-server-startup

  • As far as i understand, Startup streams ignores the primary and secondary origin servers.

Regards,

Ron.

Thanks Again,

I’ve configured as instructed on an edge server, and restarted the Wowza streaming engine and the Wowza manager, but it seems that there are “No startup streams defined” when using the Web GUI going to Server>Startup Streams.

Do you have any idea why?

Thanks Again,

How can i be sure that i’m implementing smil the right way?

Does it have to look like this?

wowz://origin_url:1935/app_name/definst

smil:mystream.smil

liverepeater

Hi,

Iv’e tried setting up this configuration.

I wasn’t able to see incoming streams, and was’nt able to see the StartupStream category in the GUI at all.