多协议、性能稳定、丰富API的流媒体服务器软件
Wowza Streaming Engine的负载均衡(Load Balancing)的详细配置
当一台Wowza服务器不能及时处理所有的播放连接请求时,可以利用Wowza的Load Balancer模块将播放连接请求重定向多台Wowza Streaming Engine中的一台上。

Load Balancer 模块支持以下流传输协议(包括直播和点播):

  • MPEG-DASH
  • Apple HTTP Live Streaming (HLS)
  • Real Time Messaging Protocol (RTMP)
  • Real Time Streaming Protocol (RTSP)


一、安装


Wowza的负载均衡配置需要你配置一台Wowza 服务作为负载均衡器("Load Balancer") ,它用来将连接请求重定向到其它提供流服务的Wowza服务器上("Servers") 。 这些流服务器会间歇性的向Load Balancer发送当前的负载信息,从而让Load Balancer可以追踪其它Wowza流服务器的可用性。

下面,我们为您介绍了如何配置Load Balancerload-balancing Server


1、Load Balancer的配置


下面的配置说明给出了如何将一台Wowza Wowza Streaming Engine 服务器配置为一个Load Balancer。

  1. 安装最新的Load Balancing 模块:

    1. 1、将模块解压(Unzip)到一个临时目录上。

    2. 2、将[package]/lib/wms-plugin-loadbalancer.jar文件拷贝到Wowza Streaming Engine服务器的[install-dir]/lib/文件夹下

    要获得更详细的安装说明,请参考下载的安装包下的Wowza 动态负载均衡用户指导手册(WowzaDynamicLoadBalancingAddOn_UsersGuide.pdf)。


  2. 在一个文本编辑器中打开[install-dir]/conf/Server.xml,在文件的<ServerListeners>部分加入一个server listener ,如下:
    <ServerListener>
    	<BaseClass>com.wowza.wms.plugin.loadbalancer.general.LoadBalancerServer</BaseClass>
    </ServerListener>
    			

    请参考Wowza 负载均衡用户使用手册(WowzaDynamicLoadBalancingAddOn_UsersGuide.pdf)中的关于Server.xml中配置负载均衡的示例。


  3. 在一个文本编辑器中打开[install-dir]/conf/Server.xml文件,在文件最下面的<Properties>部分添加以下属性:
    <!-- Properties defined here will be added to the IServer.getProperties() collection -->
    	<Properties>
    		<Property>
    			<Name>loadbalanceType</Name>
    			<Value>Server,Client</Value>
    			<Type>String</Type>
    		</Property>
    		<Property>
    			<Name>loadbalanceKey</Name>
    			<Value>123456789012345</Value>
    			<Type>String</Type>
    		</Property>
    		<Property>
    			<Name>loadbalanceServerIP</Name>
    			<Value>[Load Balancer IP address (xxx.xxx.x.xxx)]</Value>
    			<Type>String</Type>
    		</Property>
    		<Property>
    			<Name>loadbalanceServerPort</Name>
    			<Value>1935</Value>
    			<Type>String</Type>
    		</Property>
    		<Property>
    			<Name>loadbalanceDecisionOrder</Name>
    			<Value>Bandwidth,Connection</Value>
    			<Type>String</Type>
    		</Property>
    		<Property>
    			<Name>loadbalanceIgnoreClients</Name>
    			<Value>FMLE</Value>
    			<Type>String</Type>
    		</Property>
    		<Property>
    			<Name>loadbalanceBandwidthEnable</Name>
    			<Value>On</Value>
    			<Type>String</Type>
    		</Property>
    		<Property>
    			<Name>loadbalanceBandwidthLimit</Name>
    			<Value>50000</Value>
    			<Type>String</Type>
    		</Property>
    		<Property>
    			<Name>loadbalanceConnectionEnable</Name>
    			<Value>On</Value>
    			<Type>String</Type>
    		</Property>
    		<Property>
    			<Name>loadbalanceConnectionLimit</Name>
    			<Value>100</Value>
    			<Type>String</Type>
    		</Property>
    </Properties>
    			

    要获得更详细的配置说明,请参考下载的安装包下的Wowza 动态负载均衡用户指导手册(WowzaDynamicLoadBalancingAddOn_UsersGuide.pdf),里面还有一些参数配置以及Server.xml中的配置示例。


  4. 在一个文本编辑器中打开[install-dir]/conf/VHost.xml文件,在文件的默认流服务主机和端口的<HTTPProviders>部分添加以下HTTP Provider(请确认它们位于默认流服务的<HTTPProviders>中所有HTTProvider的最前面):
    <HTTPProvider>
      <BaseClass>com.wowza.wms.plugin.loadbalancer.http.LoadBalancerPublicInterface</BaseClass>
      <RequestFilters>redirect*</RequestFilters>
      <AuthenticationMethod>none</AuthenticationMethod>
    </HTTPProvider>
    <HTTPProvider>
      <BaseClass>com.wowza.wms.plugin.loadbalancer.http.LoadBalancerInterface</BaseClass>
      <RequestFilters>*loadbalancerInterface</RequestFilters>
      <AuthenticationMethod>none</AuthenticationMethod>
    </HTTPProvider>
    <HTTPProvider>
      <BaseClass>com.wowza.wms.plugin.loadbalancer.http.LoadBalancerInformation</BaseClass>
      <RequestFilters>*loadbalancerInfo</RequestFilters>
      <AuthenticationMethod>admin-digest</AuthenticationMethod>
    </HTTPProvider>
    			

    要获得更多关于Http Provider的说明以及在VHost.xml中的示例,请参考下载的安装包下的Wowza 动态负载均衡用户指导手册(WowzaDynamicLoadBalancingAddOn_UsersGuide.pdf)。


  5. 最后,重启Wowza Streaming Engine。要了解更多,请参考启动Wowza

2、load-balancing Server的配置


以下的配置介绍了在负载均衡的流服务器(也称做边缘服务器)上的配置,这些Wowza Streaming Engine 处理客户端的连接请求。

  1. 安装Load Balancing 模块:

    1. 1、将模块解压(Unzip)到一个临时目录上。

    2. 2、将[package]/lib/wms-plugin-loadbalancer.jar文件拷贝到Wowza Streaming Engine服务器的[install-dir]/lib/文件夹下

    要获得更详细的安装说明,请参考下载的安装包下的Wowza 动态负载均衡用户指导手册(WowzaDynamicLoadBalancingAddOn_UsersGuide.pdf)。


  2. 在一个文本编辑器中打开[install-dir]/conf/Server.xml文件,在文件的<ServerListeners>部分添加以下server listener:
    <ServerListener>
      <BaseClass>com.wowza.wms.plugin.loadbalancer.general.LoadBalancerServer</BaseClass>
    </ServerListener>
    			

    请参考Wowza 负载均衡用户使用手册(WowzaDynamicLoadBalancingAddOn_UsersGuide.pdf)中的关于Server.xml中配置负载均衡的示例。


  3. 在一个文本编辑器中打开[install-dir]/conf/Server.xml文件,在文件底部的<Properties>部分添加以下参数:
    <!-- Properties defined here will be added to the IServer.getProperties() collection -->
    	<Properties>
    		<Property>
    			<Name>loadbalanceType</Name>
    			<Value>Client</Value>
    			<Type>String</Type>
    		</Property>
    		<Property>
    			<Name>loadbalanceKey</Name>
    			<Value>123456789012345</Value>
    			<Type>String</Type>
    		</Property>
    		<Property>
    			<Name>loadbalanceServerIP</Name>
    			<Value>[Load Balancer (not this Server) IP address (xxx.xxx.x.xxx)]</Value>
    			<Type>String</Type>
    		</Property>
    		<Property>
    			<Name>loadbalanceServerPort</Name>
    			<Value>1935</Value>
    			<Type>String</Type>
    		</Property>
    		<Property>
    			<Name>loadbalanceBandwidthEnable</Name>
    			<Value>On</Value>
    			<Type>String</Type>
    		</Property>
    		<Property>
    			<Name>loadbalanceBandwidthLimit</Name>
    			<Value>50000</Value>
    			<Type>String</Type>
    		</Property>
    		<Property>
    			<Name>loadbalanceConnectionEnable</Name>
    			<Value>On</Value>
    			<Type>String</Type>
    		</Property>
    		<Property>
    			<Name>loadbalanceConnectionLimit</Name>
    			<Value>100</Value>
    			<Type>String</Type>
    		</Property>
    	</Properties>

    请参考Wowza 负载均衡用户使用手册(WowzaDynamicLoadBalancingAddOn_UsersGuide.pdf)中的关于Server.xml中配置负载均衡的示例。


  4. 最后,重启Wowza Streaming Engine。要了解更多,请参考启动Wowza软件.



二、关于重定向


Wowza的负载均衡器(Load Balancer)上提供了重定向功能,客户端播放器请求的URL的格式如下:

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

[load-balancer-ip-address]是Wowza Load Balancer服务器的IP地址,它被定义在Load Balancer服务器的properties中scheme URL参数被用于标记返回给客户端的重定向Url中的manifest文件类型,但对于RTMP 或 RTSP 来说它是没有用的,可以忽略它。


然后,客户端就会被重定向到一个可用的Wowza流服务器上,URL格式如下:

[protocol]://[load-balanced-server-ip-address]:1935/[application-name]/[stream-name]?[manifest]
		


[load-balanced-server-ip-address]是集群中一台Wowza流服务器的IP地址,它既可以是在Load Balancer property configuration中定义的Load Balancer的地址, 也可以是集群中其它Wowza流服务器的地址,具体是哪一个服务器IP地址,取决于它们当前的负载。

注意:当 Load Balancer上的loadbalanceType参数被设置为Server,Client时,它既可以扮演Load Balancer的角色,也可以扮演load-balancing Server的角色,即它也可以承担向客户端提供流服务的职责(只要它自己的负载没有达到瓶颈)。 如果将这个参数设置为Server,则意味着所有的客户端连接请求都被重定向到其它load-balancing Server服务器上。

Wowza 的负载均衡机制支持以下协议的重定向:



1、HTTP 重定向


HTTP 重定向允许你在客户端通过一个http URL来访问系统,并被透明的重定向到其它Wowza流服务器上。

注意: HTTP 客户端被重定向时,是基于HTTP 302 响应状态码。你的客户端必须支持HTTP 302 状态码才能让负载均衡机制正常工作。 使用HTTP请求的RTMP 客户端必须支持XML格式的响应(下面会介绍).

Apple HLS (M3U8)

需要重定向到HLS服务器的连接请求示例:

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

在这个例子中,客户端会被重定向到下面的HLS服务器上:

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

Adobe HDS (F4M)

需要重定向到Adobe HDS服务器的连接请求示例:

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

在这个例子中,客户端会被重定向到下面Adobe HDS 服务器上:

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

在这个例子中,客户端会被重定向到下面的Smooth Streaming (Manifest)服务器上:

http://[load-balanced-server-ip-address]:1935/[application-name]/[stream-name]/Manifest

RTMP XML (RTMP)

注意: 不是所有的RTMP客户端都支持基于HTTP的XML重定向

基于Http的请求,需要重定向到一个RTMP服务器的连接请求示例:

http://[load-balancer-ip-address]:1935/redirect/[application-name]/[stream-name]/loadbalancer.smil
		

在这个例子中,一个RTMP客户端通过HTTP协议得到了一个XML格式的响应,类似如下:

<xml version="1.0"?>
  <smil>
    <head>
	  <meta base="[load-balanced-server-ip-address]:1935/[application-name]/" />"
	</head>
	<body>
	  <video src="[stream-name]" />
	</body>
</smil>
		


2、RTMP 重定向


首先要给扮演Load Balancer角色的Wowza服务器上添加RTMP重定向功能,先按前面的介绍配置Load Balancer模块,然后你需要添加一个叫做'redirect'的Wowza应用, 然后在这个应用的Application.xml文件中添加以下Module(可以通过管理界面添加)。注意,你要确认是添加在<Modules>部分的最后一个<Module>的后面。

<Module>
  <Name>Redirect</Name>
  <Description>Redirect</Description>
  <Class>com.wowza.wms.plugin.loadbalancer.redirect.ClientConnections</Class>
</Module>
		

Load Balancer上的这个模块会向客户端返回一个RTMP重定向指令, 但在Server.xml文件中定义的loadbalanceIgnoreClients中的终端的请求将被这个模块忽略(不会被重定向)。 另外,在Wowza的Live repeater架构中,Wowza边缘服务器连接作为Wowza源服务器的Load Balancer时,请求也会被这个模块忽略。


RTMP重定向请求URL示例:

rtmp://[load-balancer-ip-address]:1935/redirect/[application-name]/[stream-name]
		

在这个例子中,客户端被重定向到下面的RTMP地址:

rtmp://[load-balanced-server-ip-address]:1935/[application-name]/[stream-name]
		

注意:

  • 如果你已经在RTSP 重定向中配置了这个Module,就不用在这里重复添加了。
  • 不是所有的RTMP客户端都支持基于RTMP协议的重定向。


3、RTSP 重定向


要给Load Balancer添加RTSP重定向功能,先配置负载均衡模块, 然后添加一个叫做'redirect'的应用。 然后在应用的Application.xml文件中添加以下Module。你要确认是添加在<Modules>部分的最后一个<Module>的后面。

<Module>
  <Name>Redirect</Name>
  <Description>Redirect</Description>
  <Class>com.wowza.wms.plugin.loadbalancer.redirect.ClientConnections</Class>
</Module>
		

RTSP重定向请求的URL示例:

rtsp://[load-balancer-ip-address]:1935/redirect/[application-name]/[stream-name]
		

在这里例子中,RTSP客户端被重定向到下面的RTSP地址:

rtsp://[load-balanced-server-ip-address]:1935/[application-name]/[stream-name]
		

注意:

  • 如果你已经在RTSP 重定向中配置了这个Module,就不用在这里重复添加了。
  • 不是所有的RTSP客户端都支持基于RTSP协议的重定向。