Wowza Streaming Engine的负载均衡(Load Balancing)的详细配置
转载请注明:文章来自www.wowza.cn
注意: 要访问最新的技术资料,请访问http://www.ttstream.com/wowza/

当一台Wowza服务器不能及时处理所有的播放连接请求时,可以利用Wowza的Load Balancer模块将播放连接请求重定向多台Wowza Streaming Engine中的一台上。

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

  • Adobe HTTP Dynamic Streaming (HDS)
  • Apple HTTP Live Streaming (HLS)
  • Microsoft Smooth Streaming
  • Real Time Messaging Protocol (RTMP)
  • Real Time Streaming Protocol (RTSP)
注意:Wowza的Load Balancer 模块 4.0版本仅适用于Wowza Streaming Engine™ 软件。

安装

Wowza的负载均衡配置需要你配置一台Wowza 服务作为负载均衡器("Load Balancer") ,它用来将连接请求重定向到其它提供流服务的Wowza服务器上("Servers") 。 这些流服务器会间歇性的想Load Balancer发送当前的负载信息,从而让Load Balancer可以追踪其它Wowza流服务器的可用性。www.wowza.cn 下面,我们为您介绍了如何配置Load Balancerload-balancing Server


Load Balancer的配置

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

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

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

    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>部分):
    <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

load-balancing Server的配置

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

  1. 安装Load Balancing 模块:

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

    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软件.

重定向

负载均衡器上提供了重定向功能,客户端请求的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的地址,也可以是 定义Server property configuration在中的集群中其它Wowza流服务器的地址,具体是哪一个服务器IP地址,取决于它们当前的负载。

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

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


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

Microsoft Smooth Streaming (Manifest)

需要重定向到微软Smooth Streaming (Manifest)服务器的连接请求示例:

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

在这个例子中,客户端会被重定向到下面的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>

RTMP 重定向

要给Load Balancer添加RTMP重定向功能,先配置负载均衡模块,然后你需要添加一个叫做'redirect'的应用, 然后在应用的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协议的重定向。

RTSP 重定向

要给Load Balancer添加RTSP重定向功能,先配置负载均衡模块, 然后添加一个叫做'redirect'的应用。www.wowza.cn 然后在应用的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协议的重定向。