I recently worked on an application that required we mirror content and configuration across multiple web servers running IIS 7.5 on Windows 2008r2. Because the server configuration in IIS for this application is relatively complicated, doing it over and over would not only be tedious but it would probably introduce some human error. While the possibility of human error is mitigated by the application’s detailed documentation, I looked for a more automated approach to the process.
Using IIS 7’s shared configuration management, it’s possible to replicate the content and configuration folders between web servers. As I worked through the steps of mirroring the content and server configuration for our application, I took notes on the process to create this guide for you to use the next time you approach a similar project.
You will need a domain account – or local account on each web server if your web servers aren’t joined to an Active Directory domain – which will be used to access the shared configuration. The account only accesses this configuration and a file share to store the configuration. Your web applications continue to run under whatever application pool identity you’ve set.
Assuming you’ve configured your IIS-based web server, we can start by exporting the configuration:
- On the first web server that will host the shared configuration, create a directory and share it with full share and ntfs permissions to the service account you create. All other permissions should be removed.
- In IIS manager, click on the server node in the left pane, then open “Shared Configuration” in the right pane.
- Select the”Export Configuration” option on the right, store the export in the directory you created in step 1.
- Create an encryption key. This key should be recorded, as it is needed for all nodes accessing the shared configuration.
- After the configuration is exported, tick the ‘Enable shared configuration’ box, and enter the UNC path to the configuration and the username, domainserviceaccount and password for that account.
- Press apply, and you will be prompted for the encryption key created in step 2.
- Restart the server or run an
iisreset
to apply configuration. Check to ensure that IIS is still functioning and the IIS manager can be accessed.
After completing those steps, your web server will be running from the shared configuration, so the next step is to replicate the web content and configure all other web servers to work from the same configuration.
There are several ways of replicating the physical content, DFSR is one option, however I chose not to use it. The content on this application’s web servers is static, so frequent updates to the other nodes is unnecessary. Instead, I used robocopy – a built-in feature since Vista / Server 2008 – to mirror the content from the configured server to all others. This was executed on the web server receiving the content:
robocopy \configuredwebserverc$inetpubwwwroot c:inetpubwwwroot /MIR
Once the file content is in place, two quick steps are required to configure IIS to use the shared configuration:
- In IIS manager, click on the server node in the left pane, then open “Shared Configuration” in the right pane.
- Tick the ‘Enable shared configuration’ box. Enter the UNC path to the configuration as specified on the first web server.
- Enter the username, domainserviceaccount and password for that account. Press apply and enter the encryption key.
- Restart the IIS server to apply configuration, and check to ensure that IIS is still functioning and the IIS manager can be accessed.
You’re done. You’ve replicated all application pools and IIS configurations. If you have ODBC data sources – things external to IIS which your web applications are using – you will need to find a way to replicate these settings as well.
If the shared configuration is unavailable for any reason, IIS may act up. In Server 2008 (not R2), if the configuration disappears, IIS will essentially stop. In R2, the server will detect this, continue working and reconnect when the configuration source comes back online.
To safeguard against connectivity issues, enable offline files by following these steps:
- On the web server, in “Control Panel,” open “Offline Files.”
- In the Offline Files dialog box, click Enable Offline Files. Do not reboot the machine yet.
- Ensure that the cache is set to read only by running the following command:
REG ADD "HKLM\System\CurrentControlSet\Services\CSC\Parameters" /v ReadOnlyCache /t REG_DWORD /d 1 /f
- Reboot the Web server.
- Browse to the shared configuration folder on the web server. Right click and select “Always Available Offline”.
- Go back to the “Offline Files” in “Control Panel” and select the “Schedule” option.
The sync center option is available on Windows 2008 server only when Desktop experience is enabled. KB 951043: You cannot start Sync Center from Windows Explorer on a Windows Server 2008-based computer.
- Schedule offline file sync every day or per your requirements. Even without setting up any scheduler, the moment I change anything in applicationhost.config file, it is reflected on the web server.
Hopefully this method should save you from a few headaches and give you another option when setting up multiple IIS 7 web servers. Being able to use the same configuration minimize deployment time and makes administration a breeze.
Let me know if you have any questions or would like any additional details about the process.
-Marlin
Related Posts:
- Lilah Brown's Planets, Part II (or, Season II preview) - November 8th, 2009 [November 8th, 2009]
- Snow White needs a bailout - November 8th, 2009 [November 8th, 2009]
- To the moon - November 8th, 2009 [November 8th, 2009]
- S/1 90482 (2005) needs your help - November 8th, 2009 [November 8th, 2009]
- We'll always have Regulus - November 8th, 2009 [November 8th, 2009]
- Orcus Porcus - November 8th, 2009 [November 8th, 2009]
- Kant's Crowded Universe - November 8th, 2009 [November 8th, 2009]
- Look up! - November 8th, 2009 [November 8th, 2009]
- Baby Pictures - November 8th, 2009 [November 8th, 2009]
- Encore: Yelping at Saints - November 8th, 2009 [November 8th, 2009]
- Godspeed - November 8th, 2009 [November 8th, 2009]
- Heavens above! - November 8th, 2009 [November 8th, 2009]
- Homeward bound - November 8th, 2009 [November 8th, 2009]
- Sony Pictures and the end of the world - November 8th, 2009 [November 8th, 2009]
- Thank you from the future - November 8th, 2009 [November 8th, 2009]
- Lunar dreams - November 8th, 2009 [November 8th, 2009]
- The first of the Pluto books! - November 8th, 2009 [November 8th, 2009]
- Don't try to blame it on Rio - November 8th, 2009 [November 8th, 2009]
- Rio roundup - November 8th, 2009 [November 8th, 2009]
- The long road to a Titan storm - November 8th, 2009 [November 8th, 2009]
- Planetary Placemats - November 8th, 2009 [November 8th, 2009]
- Fog! Titan! Titan Fog! (and a peer review experiment) - November 8th, 2009 [November 8th, 2009]
- Millard Canyon Memories - November 8th, 2009 [November 8th, 2009]
- The problem with science - November 8th, 2009 [November 8th, 2009]
- P.S. on the problem with science - November 8th, 2009 [November 8th, 2009]
- How Big is 10 TB? - November 8th, 2009 [November 8th, 2009]
- Showing You Your Servers - November 8th, 2009 [November 8th, 2009]
- Pick Your Partnership: Referral Partners, Resellers and Affiliates - November 8th, 2009 [November 8th, 2009]
- Server Form Factors: Towers v. Rack-Mounts - November 8th, 2009 [November 8th, 2009]
- Lights-Out in the Data Centers - November 8th, 2009 [November 8th, 2009]
- Disruptive Technologies: Virtualization and The Cloud - November 8th, 2009 [November 8th, 2009]
- Know Thy Backups – Part I - November 8th, 2009 [November 8th, 2009]
- Know Thy Backups – Part II - November 8th, 2009 [November 8th, 2009]
- Boo Bash 2009 – Desktop Costume Included! - November 8th, 2009 [November 8th, 2009]
- Why No One Will Talk About “Cloud Computing” in 10 Years - November 8th, 2009 [November 8th, 2009]
- The end of the fall - December 13th, 2009 [December 13th, 2009]
- We Love ‘Server Huggers’ - December 13th, 2009 [December 13th, 2009]
- All About the Cloud: An Interview with Dell’s Cloud Evangelist - December 13th, 2009 [December 13th, 2009]
- Happy Solstice - December 21st, 2009 [December 21st, 2009]
- A ghost of Christmas past - December 31st, 2009 [December 31st, 2009]
- Learning from a Blender - January 5th, 2010 [January 5th, 2010]
- Changing my world - January 6th, 2010 [January 6th, 2010]
- A Server. From Scratch. - January 7th, 2010 [January 7th, 2010]
- The Planet Sand Castle: Upgrade Your Sandbox - January 12th, 2010 [January 12th, 2010]
- Hosting for Haiti - January 20th, 2010 [January 20th, 2010]
- Redefining Value - January 26th, 2010 [January 26th, 2010]
- My Experience as a Newbie at The Planet - January 28th, 2010 [January 28th, 2010]
- Confessions of Another New Planeteer - February 1st, 2010 [February 1st, 2010]
- How I Learned to Stop Worrying and Love Permissions - February 11th, 2010 [February 11th, 2010]
- Where at The Planet is Rachel? - February 15th, 2010 [February 15th, 2010]
- The Planet Storage Cloud: FYI - February 19th, 2010 [February 19th, 2010]
- Meet us in March - February 25th, 2010 [February 25th, 2010]
- The Planet in “The Channel” - March 2nd, 2010 [March 2nd, 2010]
- The Planet Server Challenge - March 13th, 2010 [March 13th, 2010]
- The Definitive Guide to Finding The Planet at SXSW - March 13th, 2010 [March 13th, 2010]
- The SXSW Iron Geek Champion! - March 15th, 2010 [March 15th, 2010]
- Drinking from the Fire Hose - March 16th, 2010 [March 16th, 2010]
- The Fastest Hands at SXSW - March 17th, 2010 [March 17th, 2010]
- System.out.println(“Hello World!”); - March 22nd, 2010 [March 22nd, 2010]
- Westmere – Get it Here - March 23rd, 2010 [March 23rd, 2010]
- Orbit on Your iPhone: A Sign of Things to Come - March 24th, 2010 [March 24th, 2010]
- #ShowMeMyServer 2.0 - March 25th, 2010 [March 25th, 2010]
- Get to Know Your Visitors - March 30th, 2010 [March 30th, 2010]
- The Next Big Thing in Hosting: The Hostatulator - April 1st, 2010 [April 1st, 2010]
- Storage Cloud and the City - April 4th, 2010 [April 4th, 2010]
- American Heart – Why I Walk - April 7th, 2010 [April 7th, 2010]
- The Cake Shouldn’t Be a Lie - April 8th, 2010 [April 8th, 2010]
- April Showers Bring May Flowers - April 9th, 2010 [April 9th, 2010]
- First at The Planet: Nehalem EX 4-Socket Servers - April 15th, 2010 [April 15th, 2010]
- Intel Guest Blog: Xeon 5600 - April 16th, 2010 [April 16th, 2010]
- Inside the Office: A Birthday Surprise - April 18th, 2010 [April 18th, 2010]
- The Planet @ Cloud Expo East - April 19th, 2010 [April 19th, 2010]
- The Planet @ ad:tech SF - April 22nd, 2010 [April 22nd, 2010]
- ad:tech Server Challenge - April 22nd, 2010 [April 22nd, 2010]
- ad:tech Panel: Developing Communities Online - April 23rd, 2010 [April 23rd, 2010]
- The Planet @ Interop Las Vegas - April 27th, 2010 [April 27th, 2010]
- Overflowing With Value: 10TB is Back! - April 28th, 2010 [April 28th, 2010]
- The Cloud is NOT the Revolution - April 29th, 2010 [April 29th, 2010]
- The Importance of Orbit 2.0 - May 5th, 2010 [May 5th, 2010]
- The Planet @ Web 2.0 Expo - May 6th, 2010 [May 6th, 2010]