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 Balancer 和 load-balancing Server。
1、Load Balancer的配置
下面的配置说明给出了如何将一台Wowza Wowza Streaming Engine 服务器配置为一个Load Balancer。
-
安装最新的Load Balancing 模块:
- 1、将模块解压(Unzip)到一个临时目录上。
- 2、将[package]/lib/wms-plugin-loadbalancer.jar文件拷贝到Wowza Streaming Engine服务器的[install-dir]/lib/文件夹下
要获得更详细的安装说明,请参考下载的安装包下的Wowza 动态负载均衡用户指导手册(WowzaDynamicLoadBalancingAddOn_UsersGuide.pdf)。
-
在一个文本编辑器中打开[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中配置负载均衡的示例。
-
在一个文本编辑器中打开[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中的配置示例。
-
在一个文本编辑器中打开[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)。
最后,重启Wowza Streaming Engine。要了解更多,请参考启动Wowza。
2、load-balancing Server的配置
以下的配置介绍了在负载均衡的流服务器(也称做边缘服务器)上的配置,这些Wowza Streaming Engine 处理客户端的连接请求。
-
安装Load Balancing 模块:
- 1、将模块解压(Unzip)到一个临时目录上。
- 2、将[package]/lib/wms-plugin-loadbalancer.jar文件拷贝到Wowza Streaming Engine服务器的[install-dir]/lib/文件夹下
要获得更详细的安装说明,请参考下载的安装包下的Wowza 动态负载均衡用户指导手册(WowzaDynamicLoadBalancingAddOn_UsersGuide.pdf)。
-
在一个文本编辑器中打开[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中配置负载均衡的示例。
-
在一个文本编辑器中打开[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中配置负载均衡的示例。
最后,重启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协议的重定向。