Wowza Community

Please help, i failed to setup load balancer 4.5

hi, please help me.

i want to use load balancer function.

i read https://www.wowza.com/docs/how-to-load-balance-between-servers-using-google-cloud-platform

and WowzaDynamicLoadBalancingAddOn_UserGuide_4.5.pdf.

but failed.

this is my senario.

i have one reapeater server and one edge server.

i success repeater and edge streaming.

I used a repeater as a load balancer server without adding a server to test if load-balancing function worked.

WowzaStreamingEngineLoadBalancer-4.5.0.zip file unpacked and put in /usr/local-dir/ folder.

  1. first server == repeater server == load balancer server

a)Server.xml

<?xml version="1.0" encoding="UTF-8"?>
<Root version="2">
	<Server>
		<Name>Wowza Streaming Engine</Name>
		<Description>Wowza Streaming Engine is robust, customizable, and scalable server software that powers reliable streaming of high-quality video and audio to any device, anywhere.</Description>
		<RESTInterface>
			<Enable>true</Enable>
			<IPAddress>*</IPAddress>
			<Port>8087</Port>
			<!-- none, basic, digest, remotehttp, digestfile -->
			<AuthenticationMethod>none</AuthenticationMethod>
			<DiagnosticURLEnable>true</DiagnosticURLEnable>
			<SSLConfig>
				<Enable>false</Enable>
				<KeyStorePath></KeyStorePath>
				<KeyStorePassword></KeyStorePassword>
				<KeyStoreType>JKS</KeyStoreType>
				<SSLProtocol>TLS</SSLProtocol>
				<Algorithm>SunX509</Algorithm>
				<CipherSuites></CipherSuites>
				<Protocols></Protocols>
			</SSLConfig>
			<IPWhiteList>127.0.0.1,13</IPWhiteList>
			<IPBlackList></IPBlackList>
			<EnableXMLFile>false</EnableXMLFile>
			<DocumentationServerEnable>true</DocumentationServerEnable>
			<DocumentationServerPort>8089</DocumentationServerPort>
			<!-- none, basic, digest, remotehttp, digestfile -->
			<DocumentationServerAuthenticationMethod>none</DocumentationServerAuthenticationMethod>
			<Properties>
			</Properties>
		</RESTInterface>
		<CommandInterface>
			<HostPort>
				<ProcessorCount>${com.wowza.wms.TuningAuto}</ProcessorCount>
				<IpAddress>*</IpAddress>
				<Port>8083</Port>
			</HostPort>
		</CommandInterface>
		<AdminInterface>
			<!-- Objects exposed through JMX interface: Server, VHost, VHostItem, Application, ApplicationInstance, MediaCaster, Module, Client, MediaStream, SharedObject, Acceptor, IdleWorker -->
			<ObjectList>Server,VHost,VHostItem,Application,ApplicationInstance,MediaCaster,Module,IdleWorker</ObjectList>
		</AdminInterface>
		<Stats>
			<Enable>true</Enable>
		</Stats>
		<!-- JMXUrl: service:jmx:rmi://localhost:8084/jndi/rmi://localhost:8085/jmxrmi -->
		<JMXRemoteConfiguration>
			<Enable>false</Enable>
			<IpAddress>localhost</IpAddress>
			<!-- set to localhost or internal ip address if behind NAT -->
			<RMIServerHostName>localhost</RMIServerHostName>
			<!-- set to external ip address or domain name if behind NAT -->
			<RMIConnectionPort>8084</RMIConnectionPort>
			<RMIRegistryPort>8085</RMIRegistryPort>
			<Authenticate>true</Authenticate>
			<PasswordFile>${com.wowza.wms.ConfigHome}/conf/jmxremote.password</PasswordFile>
			<AccessFile>${com.wowza.wms.ConfigHome}/conf/jmxremote.access</AccessFile>
			<SSLSecure>false</SSLSecure>
		</JMXRemoteConfiguration>
		<UserAgents>Shockwave Flash|CFNetwork|MacNetwork/1.0 (Macintosh)</UserAgents>
		<Streams>
			<DefaultStreamPrefix>mp4</DefaultStreamPrefix>
		</Streams>
		<ServerListeners>
			<ServerListener> 
				<BaseClass>com.wowza.wms.plugin.loadbalancer.listeners.ServerListener</BaseClass> 
			</ServerListener>
		
			<ServerListener>
				<BaseClass>com.wowza.wms.mediacache.impl.MediaCacheServerListener</BaseClass>
			</ServerListener>
			<!--
			<ServerListener>
				<BaseClass>com.wowza.wms.plugin.loadbalancer.ServerListenerLoadBalancerListener</BaseClass>
			</ServerListener>
			-->
			<!--
			<ServerListener>
				<BaseClass>com.wowza.wms.plugin.loadbalancer.ServerListenerLoadBalancerSender</BaseClass>
			</ServerListener>
			-->
		</ServerListeners>
		<VHostListeners>
			<VHostListener>
				<BaseClass>com.wowza.wms.plugin.loadbalancer.listeners.VHostListener</BaseClass>
			</VHostListener>
		</VHostListeners>
		<HandlerThreadPool>
			<PoolSize>${com.wowza.wms.TuningAuto}</PoolSize>
		</HandlerThreadPool>
		<TransportThreadPool>
			<PoolSize>${com.wowza.wms.TuningAuto}</PoolSize>
		</TransportThreadPool>
		<RTP>
			<DatagramStartingPort>6970</DatagramStartingPort>
			<DatagramPortSharing>false</DatagramPortSharing>
		</RTP>
		<Manager>
			<!-- Properties defined are used by the Manager -->
			<Properties>
			</Properties>
		</Manager>
		<Transcoder>
			<PluginPaths>
				<QuickSync></QuickSync>
			</PluginPaths>
		</Transcoder>
		<!-- 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>127.0.0.1</Value>
				<Type>String</Type>
			</Property>
			<Property>
				<Name>loadbalanceServerPort</Name>
				<Value>1935</Value>
				<Type>String</Type>
			</Property>
			<Property>
				<Name>loadbalanceClientConnectionEnable</Name>
				<Value>On</Value>
				<Type>String</Type>
			</Property>
			<Property>
				<Name>loadbalanceClientConnectionLimit</Name>
				<Value>100</Value>
				<Type>String</Type>
			</Property>
			<Property>
				<Name>loadbalanceClientBandwidthEnable</Name>
				<Value>On</Value>
				<Type>String</Type>
			</Property>
			<Property>
				<Name>loadbalanceClientBandwidthLimit</Name>
				<Value>50000</Value>
				<Type>String</Type>
			</Property>
			<Property>
				<Name>loadbalanceServerIgnoreClients</Name>
				<Value>FMLE</Value>
				<Type>String</Type>
			</Property>
			<Property>
				<Name>loadbalanceServerDecisionOrder</Name>
				<Value>Bandwidth,Connection</Value>
				<Type>String</Type>
			</Property>
		</Properties>
	</Server>
</Root>

And b) VHost.xml

<?xml version="1.0" encoding="UTF-8"?>
<Root version="2">
	<VHost>
		<Description></Description>
		<HostPortList>
			<HostPort>
				<Name>Default Streaming</Name>
				<Type>Streaming</Type>
				<ProcessorCount>${com.wowza.wms.TuningAuto}</ProcessorCount>
				<IpAddress>*</IpAddress>
				<!-- Separate multiple ports with commas -->
				<!-- 80: HTTP, RTMPT -->
				<!-- 554: RTSP -->
				<Port>1935</Port>
				<HTTPIdent2Response></HTTPIdent2Response>
				<SocketConfiguration>
					<ReuseAddress>true</ReuseAddress>
					<!-- suggested settings for video on demand applications -->
					<ReceiveBufferSize>65000</ReceiveBufferSize>
					<ReadBufferSize>65000</ReadBufferSize>
					<SendBufferSize>65000</SendBufferSize>
					<!-- suggest settings for low latency chat and video recording applications
					<ReceiveBufferSize>32000</ReceiveBufferSize>
					<ReadBufferSize>32000</ReadBufferSize>
					<SendBufferSize>32000</SendBufferSize>
					-->
					<KeepAlive>true</KeepAlive>
					<!-- <TrafficClass>0</TrafficClass> -->
					<!-- <OobInline>false</OobInline> -->
					<!-- <SoLingerTime>-1</SoLingerTime> -->
					<!-- <TcpNoDelay>false</TcpNoDelay> -->
					<AcceptorBackLog>100</AcceptorBackLog>
				</SocketConfiguration>
				<HTTPStreamerAdapterIDs>cupertinostreaming,smoothstreaming,sanjosestreaming,dvrchunkstreaming,mpegdashstreaming</HTTPStreamerAdapterIDs>
				<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>none</AuthenticationMethod>
					</HTTPProvider>
					<HTTPProvider>
						<BaseClass>com.wowza.wms.http.HTTPCrossdomain</BaseClass>
						<RequestFilters>*crossdomain.xml</RequestFilters>
						<AuthenticationMethod>none</AuthenticationMethod>
					</HTTPProvider>
					<HTTPProvider>
						<BaseClass>com.wowza.wms.http.HTTPClientAccessPolicy</BaseClass>
						<RequestFilters>*clientaccesspolicy.xml</RequestFilters>
						<AuthenticationMethod>none</AuthenticationMethod>
					</HTTPProvider>
					<HTTPProvider>
						<BaseClass>com.wowza.wms.http.HTTPProviderMediaList</BaseClass>
						<RequestFilters>*jwplayer.rss|*jwplayer.smil|*medialist.smil|*manifest-rtmp.f4m</RequestFilters>
						<AuthenticationMethod>none</AuthenticationMethod>
					</HTTPProvider>
					<HTTPProvider>
						<BaseClass>com.wowza.wms.http.HTTPServerVersion</BaseClass>
						<RequestFilters>*</RequestFilters>
						<AuthenticationMethod>none</AuthenticationMethod>
					</HTTPProvider>
				</HTTPProviders>
			</HostPort>

//skip...

and 2) second server == edge Server

a) Server.xml

<?xml version="1.0" encoding="UTF-8"?>
<Root version="2">
	<Server>
		<Name>Wowza Streaming Engine</Name>
		<Description>Wowza Streaming Engine is robust, customizable, and scalable server software that powers reliable streaming of high-quality video and audio to any device, anywhere.</Description>
		<RESTInterface>
			<Enable>true</Enable>
			<IPAddress>*</IPAddress>
			<Port>8087</Port>
			<!-- none, basic, digest, remotehttp, digestfile -->
			<AuthenticationMethod>none</AuthenticationMethod>
			<DiagnosticURLEnable>true</DiagnosticURLEnable>
			<SSLConfig>
				<Enable>false</Enable>
				<KeyStorePath></KeyStorePath>
				<KeyStorePassword></KeyStorePassword>
				<KeyStoreType>JKS</KeyStoreType>
				<SSLProtocol>TLS</SSLProtocol>
				<Algorithm>SunX509</Algorithm>
				<CipherSuites></CipherSuites>
				<Protocols></Protocols>
			</SSLConfig>
			<IPWhiteList>127.0.0.1</IPWhiteList>
			<IPBlackList></IPBlackList>
			<EnableXMLFile>false</EnableXMLFile>
			<DocumentationServerEnable>true</DocumentationServerEnable>
			<DocumentationServerPort>8089</DocumentationServerPort>
			<!-- none, basic, digest, remotehttp, digestfile -->
			<DocumentationServerAuthenticationMethod>none</DocumentationServerAuthenticationMethod>
			<Properties>
			</Properties>
		</RESTInterface>
		<CommandInterface>
			<HostPort>
				<ProcessorCount>${com.wowza.wms.TuningAuto}</ProcessorCount>
				<IpAddress>*</IpAddress>
				<Port>8083</Port>
			</HostPort>
		</CommandInterface>
		<AdminInterface>
			<!-- Objects exposed through JMX interface: Server, VHost, VHostItem, Application, ApplicationInstance, MediaCaster, Module, Client, MediaStream, SharedObject, Acceptor, IdleWorker -->
			<ObjectList>Server,VHost,VHostItem,Application,ApplicationInstance,MediaCaster,Module,IdleWorker</ObjectList>
		</AdminInterface>
		<Stats>
			<Enable>true</Enable>
		</Stats>
		<!-- JMXUrl: service:jmx:rmi://localhost:8084/jndi/rmi://localhost:8085/jmxrmi -->
		<JMXRemoteConfiguration>
			<Enable>false</Enable>
			<IpAddress>localhost</IpAddress>
			<!-- set to localhost or internal ip address if behind NAT -->
			<RMIServerHostName>localhost</RMIServerHostName>
			<!-- set to external ip address or domain name if behind NAT -->
			<RMIConnectionPort>8084</RMIConnectionPort>
			<RMIRegistryPort>8085</RMIRegistryPort>
			<Authenticate>true</Authenticate>
			<PasswordFile>${com.wowza.wms.ConfigHome}/conf/jmxremote.password</PasswordFile>
			<AccessFile>${com.wowza.wms.ConfigHome}/conf/jmxremote.access</AccessFile>
			<SSLSecure>false</SSLSecure>
		</JMXRemoteConfiguration>
		<UserAgents>Shockwave Flash|CFNetwork|MacNetwork/1.0 (Macintosh)</UserAgents>
		<Streams>
			<DefaultStreamPrefix>mp4</DefaultStreamPrefix>
		</Streams>
		<ServerListeners>
			<ServerListener>
				<BaseClass>com.wowza.wms.mediacache.impl.MediaCacheServerListener</BaseClass>
			</ServerListener>
			<ServerListener>
				<BaseClass>com.wowza.wms.plugin.loadbalancer.general.LoadBalancerServer</BaseClass>
			</ServerListener>
		</ServerListeners>
		<VHostListeners>
			<VHostListener>
				<BaseClass>com.wowza.wms.plugin.loadbalancer.listeners.VHostListener</BaseClass>
			</VHostListener>
		</VHostListeners>
		<HandlerThreadPool>
			<PoolSize>${com.wowza.wms.TuningAuto}</PoolSize>
		</HandlerThreadPool>
		<TransportThreadPool>
			<PoolSize>${com.wowza.wms.TuningAuto}</PoolSize>
		</TransportThreadPool>
		<RTP>
			<DatagramStartingPort>6970</DatagramStartingPort>
			<DatagramPortSharing>false</DatagramPortSharing>
		</RTP>
		<Manager>
			<!-- Properties defined are used by the Manager -->
			<Properties>
			</Properties>
		</Manager>
		<Transcoder>
			<PluginPaths>
				<QuickSync></QuickSync>
			</PluginPaths>
		</Transcoder>
		<!-- 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>{first server ip}</Value>
				<Type>String</Type>
			</Property>
			<Property>
				<Name>loadbalanceServerPort</Name>
				<Value>1935</Value>
				<Type>String</Type>
			</Property>
			<Property>
				<Name>loadbalanceClientConnectionEnable</Name>
				<Value>On</Value>
				<Type>String</Type>
			</Property>
			<Property>
				<Name>loadbalanceClientConnectionLimit</Name>
				<Value>100</Value>
				<Type>String</Type>
			</Property>
			<Property>
				<Name>loadbalanceClientBandwidthEnable</Name>
				<Value>On</Value>
				<Type>String</Type>
			</Property>
			<Property>
				<Name>loadbalanceClientBandwidthLimit</Name>
				<Value>50000</Value>
				<Type>String</Type>
			</Property>
		</Properties>
	</Server>
</Root>

http://[load-balancer-ip]:1935/loadbalancerInfo is not working. T^T

What did I do wrong? Please help me.!!!

please please please please

We can help you @Neo Nam and thanks for posting that info, but the engineers need access to all of your logs and files. You’ll need to submit a support ticket for us to accurately diagnose.

https://www.wowza.com/support/open-ticket

Once we get your support ticket, our system tests will quickly identify where the issue is. Thanks!

Hi,

do you run wowza under windows server as a service? Then stop the service and start it as an application in /bin with the startup.bat. If it works in application modeyou have the “named user” problem you need to solve.

I shared your comment with an engineer @Martin Balsand I was told you will need to submit a support ticket as they think you have it configured incorrectly: 4.5 only requires a Server Listener to have most of the rest auto configured.

They’d like to take a closer look at your entire config. Thanks.