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.
The Storefront uses ASP.NET session to store state information. Your Web farm needs to be configured with either:
- a load balancer to direct all incoming requests from the client machine to the same server thereby providing session affinity.
- use a central session service such as operating in 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 use a load balancer or 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" />
It's important that cache data is synchronized properly across servers. Start by enabling Web farm in the Web.config file.
<add key="IsWebFarm" value="true" />
Your Web farm needs to be configured with either:
- Use FileBasedCachingProvider under the persona bar Settings > Server. You must use a central file storage system in this mode (see File Storage).
- Use WebRequestCachingProvider under the persona bar Settings > Server.
- Use a central cache repository such as 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).
Typically the file storage for DNN Web farm must use a centralized SAN or NAS storage system. This is especially important when using a FileBasedCachingProvider to notify cache changes across servers.