Using Web Farm Framework behind a Proxy

We have seen quite a few instances where users are setting up a web farm using Web Farm Framework (WFF) behind a proxy. As WFF relies on getting the products from the internet through Web Platform Installer, and provisioning will fail if it can't reach the outside world, so your proxy settings need to be passed to the server. One thing to note is that as WFF runs on a server as a local account, any proxy settings coming down from your AD will not be used by the Web Platform Installer. If you see the following in your error log, it is a tell tail sign that the content servers can't reach the internet.

2011-11-07T15:16:28.8528558+00:00 Error Primary & Farm Server1 Failed to run operation ‘RunRemote’. Failed to run method ‘Microsoft.Web.Farm.GetInstalledProductsRemoteMethod’ on server ‘Server1′. Exception in response stream. InternetOpenUrl returned 0x80072EFD: Unknown error 12029. Exception in response stream. InternetOpenUrl returned 0x80072EFD: Unknown error 12029. Microsoft.Web.Farm.WebFarmException: Failed to run method ‘Microsoft.Web.Farm.GetInstalledProductsRemoteMethod’ on server ‘Server1′. Exception in response stream. InternetOpenUrl returned 0x80072EFD: Unknown error 12029. —> Microsoft.Web.Farm.WebFarmException: Exception in response stream —> System.Net.WebException: InternetOpenUrl returned 0x80072EFD: Unknown error 12029.

In WFF 2.2, you can set a proxy server that all your servers will use in your applicationHost.config. This setting will be passed to all your servers for their calls out to the Web Products Feed xml file used by Web Platform Installer. You can set this using the following appcmd:

appcmd.exe set config -section:webFarms /[name='Primary'].defaultProxy.enabled:"True" /[name='Primary'].defaultProxy.proxyaddress:"proxyservername:80" /[name='Primary'].defaultProxy.userName:"testuser" /[name='Primary'].defaultProxy.password:"Password1" /commit:apphost

You will need to replace the name of your webfarm where it says ‘Primary’ and put your proxy details where it says “proxyservername:80″. If you proxy requires authentication, replace “testuser” and “Password1″ with the username and password respectively.

The same settings in the applicationHost.config XML format is as follows and needs to be inside the WebFarm node: 

<defaultProxy enabled="true" proxyaddress="proxyservername:80" userName="testuser" password="Password1" />

Web Farm Framework is a very powerful system for managing your content servers, and using it behind a proxy is a very common scenario, so hopefully this will help you when configuring and troubleshooting internet connectivity issues.

Hope it helps!

 

Alex Olivier