Revindex Storefront

Web farm

This is an advanced topic for businesses running multiple servers. You can skip this topic if you're running a single machine.

Revindex Storefront has some basic support for Web farm installation (running across multiple Web servers) allowing you to scale to millions of customers. Web farm is a complex setup and should only be configured by experienced administrators with strong understanding of network, IIS, ASP.NET and DNN. Improper configuration of Web farm will result in instability of your system. Since every Web farm environment is unique, you should perform your own testing to make sure the software works for your environment.

A common form of Web farm setup involves directing the user to a random or weighted Web server for each incoming Web request. Therefore, you need to ensure every Web server is capable of accessing the cache and session information, otherwise the user may see inconsistent data navigating from one page to another.


By default, as of version 6.3.1, the Storefront uses ASP.NET session to store state information (in older versions, the Storefront uses DNN data cache object). This means your Web farm needs to be configured to use State Server or SQL Server mode to preserve session across machines. Other equivalent variation of this concept that allows sharing of session information out-of-process may also work (e.g. Windows Azure has several equivalent implementations of session storage modes such as TableStorage, SQL Azure, Windows Azure Caching, etc. as well as other 3rd party session providers like NCache, etc.).

If you're unable to change your session provider, you can try to shift the session responsibility from ASP.NET to DNN by configuring the Storefront to persist session information to DNN's data cache object. To configure the Storefront to use DNN data cache object, you need to add the key to your Web.config's appSettings section (please note that every Web server must be configured the same way):

<add key="SessionProvider" value="dnncache" />

Finally, if you're unable to employ any of the session storage modes above, you can configure your load balancer to direct all incoming requests from the same source IP address to the same Web server. This sticky IP routing approach alleviates any need to share session since it essentially operates as one Web server from the user standpoint.


You will also need to ensure your DNN cache mode is using an out-of-process caching provider (e.g. AppFabric, NCache, Memcached, etc.).  Having a centralized cache ensures all the participating Web servers see the same data. Without a centralized cache, you may get inconsistent data (e.g. the inventory for a product is reduced when purchased from one Web server, but is not updated in the cache of another server). 


Powered by Revindex Wiki