We have a pool of FMS 3.5 servers behind a haproxy load balancer. They are working fine with RTMP and download with HTTP through FMS proxy. We need now to have RTMPT working for some clients behind a strict firewall.
1) We started configuring the haproxy load balancer to work in HTTP (level 7) mode and we changed the FMS Adaptor.xml configuration file on all servers with the tag below:
<HTTPIdent2 enabled="true">External IP of the Load Balancer</HTTPIdent2>
The Flash player was working in RTMPT under Windows, but we got error messages under Linux or Mac: "502 Bad Gateway" or "Server not found"...
2) We cleared that <HTTPIdent2> setting, as we saw from the documentation that it was optional (http://help.adobe.com/en_US/FlashMediaServer/3.5_AdminGuide/WS5b3ccc51 6d4fbf351e63e3d119f2926583-7ffb.html#WS5b3ccc516d4fbf351e63e3d119f2926 bcf-7fec), with the same result:
RTMPT working under Windows, failure on Mac or Linux.
3) The we set the indiviual external IP address of each FMS server in the <HTTPIdent2> tag. Now, we have RTMPT working an all platforms, but we don't benefit from load balancing. Here is what we see with a network monitor:
- Initial request GET /fcs/indent2 to load balancer, and one FMS server from the pool respond with its own externer IP address.
- Next request to that FMS server IP address for POST /open/1
- Then all requests for content are sent directly to the FMS server, bypassing the load balancer: POST /send/mYemaD8ix7G2MFOr/NNN
4) We've changed the load balancer to use TCP (level 4) proxying, and these 3 described behavior are still the same regarding RTMPT. In fact, we found a bug because the load balancer was dispatching the RTMPT requests in round robin on all the servers of the pool, opening a session on all servers!
It's working for all platforms, but I don't consider that configuration to be correct and it seems to me to be a hack.
What is the proper way to configure FMS behind a load balancer?