Wowza Community

Dynamic Load Balancing AddOn: loadbalancer?serverInfoXML empty

I’m trying to setup a server to fill all roles:

  • Origin

  • Load Balancer Listener

  • Edge (or Load Balancer Sender)

    I have followed the README, but when I visit

    http://[load-balancer-ip-address]:1935/loadbalancer?serverInfoXML
    

    I simply get:

    Wowza Streaming Engine 4 Trial Edition (Expires: Aug 12, 2014) 4.0.0.00 build10425
    

    Here is the startup log:

    Configure logging: file:///Library/WowzaStreamingEngine/conf/log4j.properties
    INFO server server-start Wowza Streaming Engine 4 Trial Edition (Expires: Aug 12, 2014) 4.0.0.00 build10425 -
    INFO server comment - Server License Key: XXXXX-XXXXX-XXXXX-XXXXX-XXXXX-XXXXX
    INFO server comment - Maximum Connections: 10
    INFO server comment - Maximum Incoming Streams: 3
    INFO server comment - Transcoder Streams Available: Transcoder Not Available (osx-64)
    INFO server comment - nDVR Available: Yes
    INFO server comment - DRM Available: Yes
    INFO server comment - HTTP Origin Available: No
    INFO server comment - REST API Available: Yes
    INFO server comment - Hardware Available Processors: 8
    INFO server comment - Hardware Physical Memory: 669MB/16384MB
    INFO server comment - Hardware Swap Space: 903MB/1024MB
    INFO server comment - Max File Descriptor Count: 10240
    INFO server comment - Open File Descriptor Count: 75
    INFO server comment - OS Name: Mac OS X
    INFO server comment - OS Version: 10.9.1
    INFO server comment - OS Architecture: x86_64
    INFO server comment - Java Name: Java HotSpot(TM) 64-Bit Server VM
    INFO server comment - Java Vendor: Oracle Corporation
    INFO server comment - Java Version: 1.7.0_51
    INFO server comment - Java VM Version: 24.51-b03
    INFO server comment - Java Spec Version: 1.7
    INFO server comment - Java Home: /Library/Java/JavaVirtualMachines/jdk1.7.0_51.jdk/Contents/Home/jre
    INFO server comment - Java Max Heap Size: 3933MB
    INFO server comment - Java Architecture: 64
    INFO server comment - Java Locale[user.language]: en
    INFO server comment - Java Locale[user.country]: US
    INFO server comment - Java Locale[file.encoding]: UTF-8
    INFO server comment - Java Timezone[user.timezone]: Europe/Copenhagen
    INFO server comment - Java Args[0]: -Xmx4000M
    INFO server comment - Java Args[1]: -XX:+UseConcMarkSweepGC
    INFO server comment - Java Args[2]: -XX:+UseParNewGC
    INFO server comment - Java Args[3]: -XX:NewSize=256m
    INFO server comment - Java Args[4]: -Djava.net.preferIPv4Stack=true
    INFO server comment - Java Args[5]: -Dcom.sun.management.jmxremote=true
    INFO server comment - Java Args[6]: -Dcom.wowza.wms.runmode=standalone
    INFO server comment - Java Args[7]: -Dcom.wowza.wms.native.base=osx
    INFO server comment - Java Args[8]: -Dcom.wowza.wms.AppHome=/Library/WowzaStreamingEngine
    INFO server comment - Java Args[9]: -Dcom.wowza.wms.ConfigURL=
    INFO server comment - Java Args[10]: -Dcom.wowza.wms.ConfigHome=/Library/WowzaStreamingEngine
    INFO server comment - Server runmode: standalone
    INFO server comment - Server native.platform: osx
    INFO server comment - Server threads[h/t]: 480/320
    INFO server comment - RESTServer: Bind attempt ([any]:8087)
    INFO server comment - RESTServer: Bind successful ([any]:8087)
    INFO server comment - RESTServer: Using configs from:/Library/WowzaStreamingEngine/
    INFO server comment - RESTServer: SSL:No
    INFO server comment - RESTServer: BasicAuth:No
    INFO server comment - RESTServer: Digest:Yes
    INFO server comment - RESTServer: XML Viewer:No
    INFO server comment - Wowza REST API started
    INFO server comment - CMDInterface now listening: [any]:8083
    INFO server comment - MediaCache[MediaCache]: Thread pool size: [writer/readahead]:16/8
    INFO server comment - MediaCache[MediaCache]: MAX Pending size: [writer/readahead]:500M/25M
    INFO server comment - MediaCache[MediaCache]: Add store: path:/Library/WowzaStreamingEngine/mediacache maxSize:10737418240
    INFO server comment - MediaCache[MediaCache]: Add source[dvrorigin]: prefix:dvrorigin/ basePath:http://
    INFO server comment - MediaCache[MediaCache]: Flushing cache: start
    INFO server comment - MediaCache[MediaCache]: Flushing cache: done
    INFO server comment - MediaCache[MediaCache]: Start MediaCache GC
    INFO server comment - MediaCache[MediaCache]: Started
    INFO vhost vhost-start _defaultVHost_ -
    INFO server comment - _defaultVHost_ threads[h/t]:0/0 home:/Library/WowzaStreamingEngine
    INFO vhost comment _defaultVHost_ Bind attempt ([any]:1935:16)
    INFO vhost comment _defaultVHost_ Bind successful ([any]:1935)
    INFO vhost comment _defaultVHost_ Bind attempt ([any]:8086:4)
    INFO vhost comment _defaultVHost_ Bind successful ([any]:8086)
    INFO server comment - Server.startShutdownHook: Start server shutdown hook
    INFO server comment - ServerListenerLoadBalancerListener.onServerInit
    INFO server comment - LoadBalancerListener.bind: 0.0.0.0/0.0.0.0:1934
    INFO server comment - ServerListenerLoadBalancerSender.onServerInit
    INFO server comment - LoadBalancerEdge.parseEdgeList: /Library/WowzaStreamingEngine/conf/loadbalancertargets.txt
    INFO server comment - LoadBalancerEdge.parseEdgeList: target:MY-IP:1934
    ERROR server comment - StatsDatabaseManager:checkStorage() /Library/WowzaStreamingEngine/stats) Permsission denied testing priviledges to the stats storage.: java.io.IOException: Permission denied|at java.io.UnixFileSystem.createFileExclusively(Native Method)|at java.io.File.createNewFile(File.java:1006)|at java.io.File.createTempFile(File.java:1989)|at com.wowza.wms.stats.database.StatsDatabaseManager.checkStorage(Unknown Source)|at com.wowza.wms.stats.database.StatsDatabaseManager.setStorageRoot(Unknown Source)|
    INFO server comment - LoadBalancerServer.handleMessage[5a8bff8c-2409-440d-964b-3cbfa17b22d8]: status: RUNNING
    INFO server comment - StatsManager:startManager() Enabled=true
    INFO server comment - Wowza Streaming Engine is started!
    
    

    UPDATE: I fixed the ERROR server comment

    ERROR server comment - StatsDatabaseManager:checkStorage() /Library/WowzaStreamingEngine/stats) Permsission denied testing priviledges to the stats storage.: java.io.IOException: Permission denied|at java.io.UnixFileSystem.createFileExclusively(Native Method)|at java.io.File.createNewFile(File.java:1006)|at java.io.File.createTempFile(File.java:1989)|at com.wowza.wms.stats.database.StatsDatabaseManager.checkStorage(Unknown Source)|at com.wowza.wms.stats.database.StatsDatabaseManager.setStorageRoot(Unknown Source)|
    

    with sudo chmod -R 777 stats.

    New startup log:

    Configure logging: file:///Library/WowzaStreamingEngine/conf/log4j.properties
    INFO server server-start Wowza Streaming Engine 4 Trial Edition (Expires: Aug 12, 2014) 4.0.0.00 build10425 -
    INFO server comment - Server License Key: ET1A4-XXXXX-XXXXX-XXXXX-XXXXX-9bkQd
    INFO server comment - Maximum Connections: 10
    INFO server comment - Maximum Incoming Streams: 3
    INFO server comment - Transcoder Streams Available: Transcoder Not Available (osx-64)
    INFO server comment - nDVR Available: Yes
    INFO server comment - DRM Available: Yes
    INFO server comment - HTTP Origin Available: No
    INFO server comment - REST API Available: Yes
    INFO server comment - Hardware Available Processors: 8
    INFO server comment - Hardware Physical Memory: 428MB/16384MB
    INFO server comment - Hardware Swap Space: 903MB/1024MB
    INFO server comment - Max File Descriptor Count: 10240
    INFO server comment - Open File Descriptor Count: 75
    INFO server comment - OS Name: Mac OS X
    INFO server comment - OS Version: 10.9.1
    INFO server comment - OS Architecture: x86_64
    INFO server comment - Java Name: Java HotSpot(TM) 64-Bit Server VM
    INFO server comment - Java Vendor: Oracle Corporation
    INFO server comment - Java Version: 1.7.0_51
    INFO server comment - Java VM Version: 24.51-b03
    INFO server comment - Java Spec Version: 1.7
    INFO server comment - Java Home: /Library/Java/JavaVirtualMachines/jdk1.7.0_51.jdk/Contents/Home/jre
    INFO server comment - Java Max Heap Size: 3933MB
    INFO server comment - Java Architecture: 64
    INFO server comment - Java Locale[user.language]: en
    INFO server comment - Java Locale[user.country]: US
    INFO server comment - Java Locale[file.encoding]: UTF-8
    INFO server comment - Java Timezone[user.timezone]: Europe/Copenhagen
    INFO server comment - Java Args[0]: -Xmx4000M
    INFO server comment - Java Args[1]: -XX:+UseConcMarkSweepGC
    INFO server comment - Java Args[2]: -XX:+UseParNewGC
    INFO server comment - Java Args[3]: -XX:NewSize=256m
    INFO server comment - Java Args[4]: -Djava.net.preferIPv4Stack=true
    INFO server comment - Java Args[5]: -Dcom.sun.management.jmxremote=true
    INFO server comment - Java Args[6]: -Dcom.wowza.wms.runmode=standalone
    INFO server comment - Java Args[7]: -Dcom.wowza.wms.native.base=osx
    INFO server comment - Java Args[8]: -Dcom.wowza.wms.AppHome=/Library/WowzaStreamingEngine
    INFO server comment - Java Args[9]: -Dcom.wowza.wms.ConfigURL=
    INFO server comment - Java Args[10]: -Dcom.wowza.wms.ConfigHome=/Library/WowzaStreamingEngine
    INFO server comment - Server runmode: standalone
    INFO server comment - Server native.platform: osx
    INFO server comment - Server threads[h/t]: 480/320
    INFO server comment - RESTServer: Bind attempt ([any]:8087)
    INFO server comment - RESTServer: Bind successful ([any]:8087)
    INFO server comment - RESTServer: Using configs from:/Library/WowzaStreamingEngine/
    INFO server comment - RESTServer: SSL:No
    INFO server comment - RESTServer: BasicAuth:No
    INFO server comment - RESTServer: Digest:Yes
    INFO server comment - RESTServer: XML Viewer:No
    INFO server comment - Wowza REST API started
    INFO server comment - CMDInterface now listening: [any]:8083
    INFO server comment - MediaCache[MediaCache]: Thread pool size: [writer/readahead]:16/8
    INFO server comment - MediaCache[MediaCache]: MAX Pending size: [writer/readahead]:500M/25M
    INFO server comment - MediaCache[MediaCache]: Add store: path:/Library/WowzaStreamingEngine/mediacache maxSize:10737418240
    INFO server comment - MediaCache[MediaCache]: Add source[dvrorigin]: prefix:dvrorigin/ basePath:http://
    INFO server comment - MediaCache[MediaCache]: Flushing cache: start
    INFO server comment - MediaCache[MediaCache]: Flushing cache: done
    INFO server comment - MediaCache[MediaCache]: Start MediaCache GC
    INFO server comment - MediaCache[MediaCache]: Started
    INFO vhost vhost-start _defaultVHost_ -
    INFO server comment - _defaultVHost_ threads[h/t]:0/0 home:/Library/WowzaStreamingEngine
    INFO vhost comment _defaultVHost_ Bind attempt ([any]:1935:16)
    INFO vhost comment _defaultVHost_ Bind successful ([any]:1935)
    INFO vhost comment _defaultVHost_ Bind attempt ([any]:8086:4)
    INFO vhost comment _defaultVHost_ Bind successful ([any]:8086)
    INFO server comment - Server.startShutdownHook: Start server shutdown hook
    INFO server comment - ServerListenerLoadBalancerListener.onServerInit
    INFO server comment - LoadBalancerListener.bind: 0.0.0.0/0.0.0.0:1934
    INFO server comment - ServerListenerLoadBalancerSender.onServerInit
    INFO server comment - LoadBalancerEdge.parseEdgeList: /Library/WowzaStreamingEngine/conf/loadbalancertargets.txt
    INFO server comment - LoadBalancerEdge.parseEdgeList: target:MY-IP:1934
    INFO server comment - LoadBalancerServer.handleMessage[5a8bff8c-2409-440d-964b-3cbfa17b22d8]: status: RUNNING
    INFO server comment - StatsManager:startManager() Enabled=true
    INFO server comment - Wowza Streaming Engine is started!
    
    

Do you have the HTTP Provider HTTPLoadBalancerRedirector setup in your VHost.xml file?

<HTTPProvider>
	<BaseClass>com.wowza.wms.plugin.loadbalancer.HTTPLoadBalancerRedirector</BaseClass>
	<RequestFilters>*loadbalancer</RequestFilters>
	<AuthenticationMethod>none</AuthenticationMethod>
	<Properties>
		<Property>
			<Name>enableServerInfoXML</Name>
			<Value>true</Value>
			<Type>Boolean</Type>
		</Property>
	</Properties>
</HTTPProvider>

Hi,

Looking at the VHost provided it would suggest it is on the wrong port. I can see it has been added to port 8086 but it needs adding to port 1935. Also it needs to be before the com.wowza.wms.http.HTTPServerVersion otherwise you will just get returned the server version as the filter for that is set to * , i.e. match anything.

Andrew.

Yes, although I have the value set to “true” as suggested in the README.

<HTTPProviders>
    <HTTPProvider>
        <BaseClass>com.wowza.wms.http.streammanager.HTTPStreamManager</BaseClass>
        <RequestFilters>streammanager*</RequestFilters>
        <AuthenticationMethod>admin-digest</AuthenticationMethod>
    </HTTPProvider>
    <HTTPProvider>
        <BaseClass>com.wowza.wms.http.HTTPServerInfoXML</BaseClass>
        <RequestFilters>serverinfo*</RequestFilters>
        <AuthenticationMethod>admin-digest</AuthenticationMethod>
    </HTTPProvider>
    <HTTPProvider>
        <BaseClass>com.wowza.wms.http.HTTPConnectionInfo</BaseClass>
        <RequestFilters>connectioninfo*</RequestFilters>
        <AuthenticationMethod>admin-digest</AuthenticationMethod>
    </HTTPProvider>
    <HTTPProvider>
        <BaseClass>com.wowza.wms.http.HTTPConnectionCountsXML</BaseClass>
        <RequestFilters>connectioncounts*</RequestFilters>
        <AuthenticationMethod>admin-digest</AuthenticationMethod>
    </HTTPProvider>
    <HTTPProvider>
        <BaseClass>com.wowza.wms.transcoder.httpprovider.HTTPTranscoderThumbnail</BaseClass>
        <RequestFilters>transcoderthumbnail*</RequestFilters>
        <AuthenticationMethod>admin-digest</AuthenticationMethod>
    </HTTPProvider>
    <HTTPProvider>
        <BaseClass>com.wowza.wms.http.HTTPProviderMediaList</BaseClass>
        <RequestFilters>medialist*</RequestFilters>
        <AuthenticationMethod>admin-digest</AuthenticationMethod>
    </HTTPProvider>
    <HTTPProvider>
        <BaseClass>com.wowza.wms.livestreamrecord.http.HTTPLiveStreamRecord</BaseClass>
        <RequestFilters>livestreamrecord*</RequestFilters>
        <AuthenticationMethod>admin-digest</AuthenticationMethod>
    </HTTPProvider>
 [COLOR="#0000FF"]   <HTTPProvider>
        <BaseClass>com.wowza.wms.plugin.loadbalancer.HTTPLoadBalancerRedirector</BaseClass>
        <RequestFilters>*loadbalancer</RequestFilters>
        <AuthenticationMethod>none</AuthenticationMethod>
        <Properties>
            <Property>
                <Name>enableServerInfoXML</Name>
                <Value>true</Value>
                <Type>Boolean</Type>
            </Property>
        </Properties>
    </HTTPProvider>[/COLOR]
    <HTTPProvider>
        <BaseClass>com.wowza.wms.http.HTTPServerVersion</BaseClass>
        <RequestFilters>*</RequestFilters>
        <AuthenticationMethod>none</AuthenticationMethod>
    </HTTPProvider>
</HTTPProviders>

Here are the relevant files. I have port forwarded 1934 to my server’s local IP.

VHost.xml - Updated with entire file.

<?xml version="1.0" encoding="UTF-8"?>
<Root version="1">
	<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.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.timedtext.http.HTTPProviderCaptionFile</BaseClass>
					    <RequestFilters>*.ttml|*.srt|*.scc|*.vtt</RequestFilters>
					    <AuthenticationMethod>none</AuthenticationMethod>
					</HTTPProvider>
					<HTTPProvider>
						<BaseClass>com.wowza.wms.http.HTTPServerVersion</BaseClass>
						<RequestFilters>*</RequestFilters>
						<AuthenticationMethod>none</AuthenticationMethod>
					</HTTPProvider>
				</HTTPProviders>
			</HostPort>
			
			<!-- 443 with SSL -->
			<!--
			<HostPort>
				<Name>Default SSL Streaming</Name>
				<Type>Streaming</Type>
				<ProcessorCount>${com.wowza.wms.TuningAuto}</ProcessorCount>
				<IpAddress>*</IpAddress>
				<Port>443</Port>
				<HTTPIdent2Response></HTTPIdent2Response>
				<SSLConfig>
					<KeyStorePath>${com.wowza.wms.context.VHostConfigHome}/conf/keystore.jks</KeyStorePath>
					<KeyStorePassword>[password]</KeyStorePassword>
					<KeyStoreType>JKS</KeyStoreType>
					<SSLProtocol>TLS</SSLProtocol>
					<Algorithm>SunX509</Algorithm>
					<CipherSuites></CipherSuites>
					<Protocols></Protocols>
				</SSLConfig>
				<SocketConfiguration>
					<ReuseAddress>true</ReuseAddress>
					<ReceiveBufferSize>65000</ReceiveBufferSize>
					<ReadBufferSize>65000</ReadBufferSize>
					<SendBufferSize>65000</SendBufferSize>
					<KeepAlive>true</KeepAlive>
					<AcceptorBackLog>100</AcceptorBackLog>
				</SocketConfiguration>
				<HTTPStreamerAdapterIDs>cupertinostreaming,smoothstreaming,sanjosestreaming,dvrchunkstreaming,mpegdashstreaming</HTTPStreamerAdapterIDs>
				<HTTPProviders>
					<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>
			-->
			
			<!-- Admin HostPort -->
			<HostPort>
				<Name>Default Admin</Name>
				<Type>Admin</Type>
				<ProcessorCount>${com.wowza.wms.TuningAuto}</ProcessorCount>
				<IpAddress>*</IpAddress>
				<Port>8086</Port>
				<HTTPIdent2Response></HTTPIdent2Response>
				<SocketConfiguration>
					<ReuseAddress>true</ReuseAddress>
					<ReceiveBufferSize>16000</ReceiveBufferSize>
					<ReadBufferSize>16000</ReadBufferSize>
					<SendBufferSize>16000</SendBufferSize>
					<KeepAlive>true</KeepAlive>
					<AcceptorBackLog>100</AcceptorBackLog>
				</SocketConfiguration>
				<HTTPStreamerAdapterIDs></HTTPStreamerAdapterIDs>
				<HTTPProviders>
					<HTTPProvider>
						<BaseClass>com.wowza.wms.http.streammanager.HTTPStreamManager</BaseClass>
						<RequestFilters>streammanager*</RequestFilters>
						<AuthenticationMethod>admin-digest</AuthenticationMethod>
					</HTTPProvider>
					<HTTPProvider>
						<BaseClass>com.wowza.wms.http.HTTPServerInfoXML</BaseClass>
						<RequestFilters>serverinfo*</RequestFilters>
						<AuthenticationMethod>admin-digest</AuthenticationMethod>
					</HTTPProvider>
					<HTTPProvider>
						<BaseClass>com.wowza.wms.http.HTTPConnectionInfo</BaseClass>
						<RequestFilters>connectioninfo*</RequestFilters>
						<AuthenticationMethod>admin-digest</AuthenticationMethod>
					</HTTPProvider>
					<HTTPProvider>
						<BaseClass>com.wowza.wms.http.HTTPConnectionCountsXML</BaseClass>
						<RequestFilters>connectioncounts*</RequestFilters>
						<AuthenticationMethod>admin-digest</AuthenticationMethod>
					</HTTPProvider>
					<HTTPProvider>
						<BaseClass>com.wowza.wms.transcoder.httpprovider.HTTPTranscoderThumbnail</BaseClass>
						<RequestFilters>transcoderthumbnail*</RequestFilters>
						<AuthenticationMethod>admin-digest</AuthenticationMethod>
					</HTTPProvider>
					<HTTPProvider>
						<BaseClass>com.wowza.wms.http.HTTPProviderMediaList</BaseClass>
						<RequestFilters>medialist*</RequestFilters>
						<AuthenticationMethod>admin-digest</AuthenticationMethod>
					</HTTPProvider>
					<HTTPProvider>
						<BaseClass>com.wowza.wms.livestreamrecord.http.HTTPLiveStreamRecord</BaseClass>
						<RequestFilters>livestreamrecord*</RequestFilters>
						<AuthenticationMethod>admin-digest</AuthenticationMethod>
					</HTTPProvider>
					<HTTPProvider>
						<BaseClass>com.wowza.wms.plugin.loadbalancer.HTTPLoadBalancerRedirector</BaseClass>
						<RequestFilters>*loadbalancer</RequestFilters>
						<AuthenticationMethod>none</AuthenticationMethod>
						<Properties>
							<Property>
								<Name>enableServerInfoXML</Name>
								<Value>true</Value>
								<Type>Boolean</Type>
							</Property>
						</Properties>
					</HTTPProvider>
					<HTTPProvider>
						<BaseClass>com.wowza.wms.http.HTTPServerVersion</BaseClass>
						<RequestFilters>*</RequestFilters>
						<AuthenticationMethod>none</AuthenticationMethod>
					</HTTPProvider>
				</HTTPProviders>
			</HostPort>
		
		</HostPortList>
		
		<HTTPStreamerAdapters>
			<HTTPStreamerAdapter>
				<ID>smoothstreaming</ID>
				<Name>smoothstreaming</Name>
				<Properties>
				</Properties>
			</HTTPStreamerAdapter>
			<HTTPStreamerAdapter>
				<ID>cupertinostreaming</ID>
				<Name>cupertinostreaming</Name>
				<Properties>
				</Properties>
			</HTTPStreamerAdapter>
			<HTTPStreamerAdapter>
				<ID>sanjosestreaming</ID>
				<Name>sanjosestreaming</Name>
				<Properties>
				</Properties>
			</HTTPStreamerAdapter>
			<HTTPStreamerAdapter>
				<ID>dvrchunkstreaming</ID>
				<Name>dvrchunkstreaming</Name>
				<Properties>
				</Properties>
			</HTTPStreamerAdapter>
			<HTTPStreamerAdapter>
				<ID>mpegdashstreaming</ID>
				<Name>mpegdashstreaming</Name>
				<Properties>
				</Properties>
			</HTTPStreamerAdapter>
		</HTTPStreamerAdapters>
		<!-- When set to zero, thread pool configuration is done in Server.xml -->
		<HandlerThreadPool>
			<PoolSize>0</PoolSize>
		</HandlerThreadPool>
		<TransportThreadPool>
			<PoolSize>0</PoolSize>
		</TransportThreadPool>
		<IdleWorkers>
			<WorkerCount>${com.wowza.wms.TuningAuto}</WorkerCount>
			<CheckFrequency>50</CheckFrequency>
			<MinimumWaitTime>5</MinimumWaitTime>
		</IdleWorkers>
		<NetConnections>
			<ProcessorCount>${com.wowza.wms.TuningAuto}</ProcessorCount>
			<IdleFrequency>250</IdleFrequency>
			<SocketConfiguration>
				<ReuseAddress>true</ReuseAddress>
				<ReceiveBufferSize>65000</ReceiveBufferSize>
				<ReadBufferSize>65000</ReadBufferSize>
				<SendBufferSize>65000</SendBufferSize>
				<KeepAlive>true</KeepAlive>
				<!-- <TrafficClass>0</TrafficClass> -->
				<!-- <OobInline>false</OobInline> -->
				<!-- <SoLingerTime>-1</SoLingerTime> -->
				<!-- <TcpNoDelay>false</TcpNoDelay> -->
				<AcceptorBackLog>100</AcceptorBackLog>
			</SocketConfiguration>
		</NetConnections>
		<MediaCasters>
			<ProcessorCount>${com.wowza.wms.TuningAuto}</ProcessorCount>
			<SocketConfiguration>
				<ReuseAddress>true</ReuseAddress>
				<ReceiveBufferSize>65000</ReceiveBufferSize>
				<ReadBufferSize>65000</ReadBufferSize>
				<SendBufferSize>65000</SendBufferSize>
				<KeepAlive>true</KeepAlive>
				<!-- <TrafficClass>0</TrafficClass> -->
				<!-- <OobInline>false</OobInline> -->
				<!-- <SoLingerTime>-1</SoLingerTime> -->
				<!-- <TcpNoDelay>false</TcpNoDelay> -->
				<ConnectionTimeout>10000</ConnectionTimeout>
			</SocketConfiguration>
		</MediaCasters>
		<LiveStreamTranscoders>
			<MaximumConcurrentTranscodes>0</MaximumConcurrentTranscodes>
		</LiveStreamTranscoders>
		<HTTPTunnel>
			<KeepAliveTimeout>2000</KeepAliveTimeout>
		</HTTPTunnel>
		<Client>
			<ClientTimeout>90000</ClientTimeout>
			<IdleFrequency>250</IdleFrequency>
		</Client>
		<!-- RTP/Authentication/Methods defined in Authentication.xml. Default setup includes; none, basic, digest -->
		<RTP>
			<IdleFrequency>75</IdleFrequency>
			<DatagramConfiguration>
				<Incoming>
					<ReuseAddress>true</ReuseAddress>
					<ReceiveBufferSize>1024000</ReceiveBufferSize>
					<SendBufferSize>65000</SendBufferSize>
					<!-- <MulticastBindToAddress>true</MulticastBindToAddress> -->
					<!-- <MulticastInterfaceAddress>192.168.1.22</MulticastInterfaceAddress> -->
					<!-- <TrafficClass>0</TrafficClass> -->
					<MulticastTimeout>50</MulticastTimeout>
					<DatagramMaximumPacketSize>4096</DatagramMaximumPacketSize>
				</Incoming>
				<Outgoing>
					<ReuseAddress>true</ReuseAddress>
					<ReceiveBufferSize>65000</ReceiveBufferSize>
					<SendBufferSize>65000</SendBufferSize>
					<!-- <MulticastBindToAddress>true</MulticastBindToAddress> -->
					<!-- <MulticastInterfaceAddress>192.168.1.22</MulticastInterfaceAddress> -->
					<!-- <TrafficClass>0</TrafficClass> -->
					<MulticastTimeout>50</MulticastTimeout>
					<DatagramMaximumPacketSize>4096</DatagramMaximumPacketSize>
				</Outgoing>
			</DatagramConfiguration>
			<UnicastIncoming>
				<ProcessorCount>${com.wowza.wms.TuningAuto}</ProcessorCount>
			</UnicastIncoming>
			<UnicastOutgoing>
				<ProcessorCount>${com.wowza.wms.TuningAuto}</ProcessorCount>
			</UnicastOutgoing>
			<MulticastIncoming>
				<ProcessorCount>${com.wowza.wms.TuningAuto}</ProcessorCount>
			</MulticastIncoming>
			<MulticastOutgoing>
				<ProcessorCount>${com.wowza.wms.TuningAuto}</ProcessorCount>
			</MulticastOutgoing>
		</RTP>
		<Application>
			<ApplicationTimeout>60000</ApplicationTimeout>
			<PingTimeout>12000</PingTimeout>
			<UnidentifiedSessionTimeout>30000</UnidentifiedSessionTimeout>
			<ValidationFrequency>20000</ValidationFrequency>
			<MaximumPendingWriteBytes>0</MaximumPendingWriteBytes>
			<MaximumSetBufferTime>60000</MaximumSetBufferTime>
		</Application>
		<StartStartupStreams>true</StartStartupStreams>
		
		<Manager>
			<TestPlayer>
				<IpAddress>${com.wowza.wms.HostPort.IpAddress}</IpAddress>
				<Port>${com.wowza.wms.HostPort.FirstStreamingPort}</Port>
			</TestPlayer>
			<!-- Properties defined are used by the Manager -->
			<Properties>
			</Properties>
		</Manager>
		
		<!-- Properties defined here will be added to the IVHost.getProperties() collection -->
		<Properties>
		</Properties>
	</VHost>
</Root>

Server.xml

<?xml version="1.0" encoding="UTF-8"?>
<Root version="1">
	<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-->
			<AuthenticationMethod>digest</AuthenticationMethod>
			<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>
			<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>
			<Properties>
				<Property>
					<Name>statsManagerDebugEnable</Name>
					<Value>false</Value>
					<Type>Boolean</Type>
				</Property>
				<Property>
					<Name>statsDatabaseManagerDebugEnable</Name>
					<Value>false</Value>
					<Type>Boolean</Type>
				</Property>
			</Properties>
		</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.ServerListenerLoadBalancerListener</BaseClass>
			</ServerListener>
			<ServerListener>
				<BaseClass>com.wowza.wms.plugin.loadbalancer.ServerListenerLoadBalancerSender</BaseClass>
			</ServerListener>
		</ServerListeners>
		<VHostListeners>
			<!--
			<VHostListener>
				<BaseClass></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>
		<!-- Properties defined here will be added to the IServer.getProperties() collection -->
		<Properties>
			<Property>
				<Name>loadBalancerListenerKey</Name>
				<Value>023D4FB4IS83</Value>
			</Property>
			<Property>
				<Name>loadBalancerListenerIpAddress</Name>
				<Value>*</Value>
			</Property>
			<Property>
				<Name>loadBalancerListenerPort</Name>
				<Value>1934</Value>
				<Type>Integer</Type>
			</Property>
			<Property>
				<Name>loadBalancerListenerRedirectorClass</Name>
				<Value>com.wowza.wms.plugin.loadbalancer.LoadBalancerRedirectorConcurrentConnects</Value>
			</Property>
			<Property>
				<Name>loadBalancerListenerMessageTimeout</Name>
				<Value>5000</Value>
				<Type>Integer</Type>
			</Property>
			
			<Property>
				<Name>loadBalancerSenderTargetPath</Name>
				<Value>${com.wowza.wms.AppHome}/conf/loadbalancertargets.txt</Value>
			</Property>
			<Property>
				<Name>loadBalancerSenderRedirectAddress</Name>
				<Value>87.50.61.185</Value>
			</Property>
			<Property>
				<Name>loadBalancerSenderMonitorClass</Name>
				<Value>com.wowza.wms.plugin.loadbalancer.LoadBalancerMonitorDefault</Value>
			</Property>
			<Property>
				<Name>loadBalancerSenderMessageInterval</Name>
				<Value>2500</Value>
				<Type>Integer</Type>
			</Property>
			
		</Properties>
	</Server>
</Root>

loadbalancertargets.txt

# [load-balancer-ip-address],[load-balancer-port],[encryption-key]
87.50.61.185,1934,023D4FB4IS83

crossdomain.xml

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE cross-domain-policy SYSTEM "http://www.adobe.com/xml/dtds/cross-domain-policy.dtd">
<cross-domain-policy>
	<allow-access-from domain="*" secure="false"/>
	<site-control permitted-cross-domain-policies="all"/>
</cross-domain-policy>

Hi Andrew

The only mentions of port 8086 in VHost.xml is this:

<!-- Admin HostPort -->
			<HostPort>
				<Name>Default Admin</Name>
				<Type>Admin</Type>
				<ProcessorCount>${com.wowza.wms.TuningAuto}</ProcessorCount>
				<IpAddress>*</IpAddress>
				<Port>8086</Port>

If I change that to port 1935 I will get a:

WARN vhost comment _defaultVHost_ Bind failed, try again ([any]:1935): java.net.BindException: Address already in use

As you can see in the code snippets I have posted, the HostPort/HTTPProvider XML snippet has been added just before the HTTPProvider definition for com.wowza.wms.http.HTTPServerVersion as instructed in the README and as instructed by you. I have reposted it below:

<HTTPProviders>
    <HTTPProvider>
        <BaseClass>com.wowza.wms.http.streammanager.HTTPStreamManager</BaseClass>
        <RequestFilters>streammanager*</RequestFilters>
        <AuthenticationMethod>admin-digest</AuthenticationMethod>
    </HTTPProvider>
    <HTTPProvider>
        <BaseClass>com.wowza.wms.http.HTTPServerInfoXML</BaseClass>
        <RequestFilters>serverinfo*</RequestFilters>
        <AuthenticationMethod>admin-digest</AuthenticationMethod>
    </HTTPProvider>
    <HTTPProvider>
        <BaseClass>com.wowza.wms.http.HTTPConnectionInfo</BaseClass>
        <RequestFilters>connectioninfo*</RequestFilters>
        <AuthenticationMethod>admin-digest</AuthenticationMethod>
    </HTTPProvider>
    <HTTPProvider>
        <BaseClass>com.wowza.wms.http.HTTPConnectionCountsXML</BaseClass>
        <RequestFilters>connectioncounts*</RequestFilters>
        <AuthenticationMethod>admin-digest</AuthenticationMethod>
    </HTTPProvider>
    <HTTPProvider>
        <BaseClass>com.wowza.wms.transcoder.httpprovider.HTTPTranscoderThumbnail</BaseClass>
        <RequestFilters>transcoderthumbnail*</RequestFilters>
        <AuthenticationMethod>admin-digest</AuthenticationMethod>
    </HTTPProvider>
    <HTTPProvider>
        <BaseClass>com.wowza.wms.http.HTTPProviderMediaList</BaseClass>
        <RequestFilters>medialist*</RequestFilters>
        <AuthenticationMethod>admin-digest</AuthenticationMethod>
    </HTTPProvider>
    <HTTPProvider>
        <BaseClass>com.wowza.wms.livestreamrecord.http.HTTPLiveStreamRecord</BaseClass>
        <RequestFilters>livestreamrecord*</RequestFilters>
        <AuthenticationMethod>admin-digest</AuthenticationMethod>
    </HTTPProvider>
[COLOR="#0000FF"]    <HTTPProvider>
        <BaseClass>com.wowza.wms.plugin.loadbalancer.HTTPLoadBalancerRedirector</BaseClass>
        <RequestFilters>*loadbalancer</RequestFilters>
        <AuthenticationMethod>none</AuthenticationMethod>
        <Properties>
            <Property>
                <Name>enableServerInfoXML</Name>
                <Value>true</Value>
                <Type>Boolean</Type>
            </Property>
        </Properties>
    </HTTPProvider>[/COLOR]
    <HTTPProvider>
        <BaseClass>com.wowza.wms.http.HTTPServerVersion</BaseClass>
        <RequestFilters>*</RequestFilters>
        <AuthenticationMethod>none</AuthenticationMethod>
    </HTTPProvider>
</HTTPProviders>

Can you please be very specific about what I should edit and where I have come to deviate from the instructions in the README?

I see now that there are two HostPort (not counting the one that is commented out) in the VHost.xml, one

<Name>Default Streaming</Name>
<Type>Streaming</Type>

and one

<Name>Default Admin</Name>
<Type>Admin</Type>

I had added

<HTTPProvider>
	<BaseClass>com.wowza.wms.plugin.loadbalancer.HTTPLoadBalancerRedirector</BaseClass>
	<RequestFilters>*loadbalancer</RequestFilters>
	<AuthenticationMethod>none</AuthenticationMethod>
	<Properties>
		<Property>
			<Name>enableServerInfoXML</Name>
			<Value>true</Value>
			<Type>Boolean</Type>
		</Property>
	</Properties>
</HTTPProvider>

under the Admin HostPort, instead of the Streaming HostPort, which it now makes sense I shouldn’t. To avoid this a note could be made in the README which now simply states

  1. Edit [install-dir]/conf/VHost.xml and add the following HostPort/HTTPProvider XML snippet just before the HTTPProvider definition for com.wowza.wms.http.HTTPServerVersion:

FWIW - this was my problem also.

I’m glad it helped you too. :stuck_out_tongue:

Some questions:

  • What host port do you have that defined under?

  • Do you have any IP address specifically defined?

  • Could you post the entire VHost.xml?

I am having the same problem, but with Wowza 3.6.4. I think my installation is very vanilla. I have an origin and multiple edge servers.

I configured the origin according to the README in the LoadBalancer_2.0.zip. When I start it up, it comes up without error.

I configured one edge server (and I can use it to pull live streams from the origin) and started it up. It also comes up without error.

Here is the snippet from my origin log:

2014-02-12 16:40:05 CST comment server INFO 200 - Wowza Media Server is started! - - - 4.16 - - - - - - - - - - - - - - - - - - - - - - - - -

2014-02-12 16:40:05 CST comment server INFO 200 - LoadBalancerListener.bind: 0.0.0.0/0.0.0.0:1934 - - - 4.166 - - - - - - - - - - - - - - - - - - - - - - - - -

2014-02-12 16:40:06 CST comment server INFO 200 - LoadBalancerServer.handleMessage[MY_EDGE_GUID]: status: RUNNING - - - 5.282 - - - - - - - - - - - - - - - - - - - - - - - - -

Here is my edge log (I replaced my IP address with MY_ORIGIN_IP):

2014-02-12 16:50:14 CST comment server INFO 200 - ServerListenerLoadBalancerSender.onServerInit - - - 3.661 - - - - - - - - - - - - - - - - - - - - - - - - -

2014-02-12 16:50:14 CST comment server INFO 200 - LoadBalancerEdge.parseEdgeList: C:\app\wowza3.6.4\conf\loadbalancertargets.txt - - - 3.664 - - - - - - - - - - - - - - - - - - - - - - - - -

2014-02-12 16:50:14 CST comment server INFO 200 - LoadBalancerEdge.parseEdgeList: target:MY_ORIGIN_IP:1934 - - - 3.665 - - - - - - - - - - - - - - - - - - - - - - - - -

2014-02-12 16:50:14 CST comment server INFO 200 - Wowza Media Server is started! - - - 3.673 - - - - - - - - - - - - - - - - - - - - - - - - -

However, when I attempt to get serverInfo, this is the only thing reported:

http://MY_ORIGIN_HOST:1935/loadbalancer?serverInfoXML

Wowza Media Server 3 Perpetual Edition 3.6.4 build9641

No errors anywhere, but no info either.

FWIW - this was my problem also.