thumbnailVirtualFilePath actually points to a virtual directory configured in your IIS. That directory could be on a file share on another server, and files generated on one server would then be immediately available on the other servers.
You could refer this page for guidance:
Thanks for reply,
But as I mentioned earlier file share in customer's cluster setup is not an option. We would need to push those images out to our own defined VPP location.
So the system requirement tech-note should say: NAS/SAN required? In this case we don't have a SAN and pointing everything to a shared folder on one of the frontend servers is not an option.
In the original post, it was briefly noted that the customer does not have a SAN, but otherwise this decision/requirement is not motivated. A SAN is not required to have a file share, and you probably have a database (connection/server) that have more or less the same properties that you require for the images: its data is shared between the nodes and it has local local storage.
In order to better understand your needs, could you motivate your standpoint in this matter?
The system requirement tech-note that you mention does not specifically handle the case of web farms, which also adds other requirements that is outside the scope of the tech-note but still required to make it work. Example of that is network connectivity between the nodes in the farm (to make the cache replication work) and a load balancer solution (L7 application such as F5 BIG-IP, WLBS or round-robin DNS) between the servers in the web farm and the clients.
In addition, as you have noticed, user generated content must be shared somehow. There are easy ways to do it (explained earlier), and harder. You have already eliminated the easy way, I just want to know why. :)
Sure, the reason that we're not allowed to use a file share is because of failover requirements by the IT department of this customer, in case that file share is unavailable.
That is a valid point. But I must, as a part of the discussion, ask how the database server is set up with regards to the failover requirements?
It is in a database cluster, with mirroring in two different data centers.
It does sound like your solution supports the availability requirements you need. You could also consider if DFS could be an option for synchronizing/sharing the data between the servers; whether it is stored in duplicate on each node in the database cluster, or on the frond end servers.
Customer is running EPiServer Relate on 3 server cluster. Images are added to blog post entries and thumbnails of various sizes are generated on-demand. Customer does not have dedicated SAN to store VPP or file system content.
Original EPiServer Relate+ image gallery handler is that thumbnails are generated only on physical folder on particular server which is serving the request. Below is fragment from ImageGalleryFactory (EPiServer.Community.ImageGallery.dll):
static Thumbnail CreateThumbnail(..)
str1 = !HostingEnvironment.IsHosted ? ImageGalleryModule.GetAbsoluteImageGalleryPath(image.ImageGalleryId) : HostingEnvironment.MapPath(ImageGalleryModule.GetVirtualThumbnailPath(image.ImageGalleryId));
The same code fragment could be found in AddImage() method that lacks of VPP support as well.
So if image thumbnail generation is requested in server A, that info is saved into database and cached and later on if request for the same size thumbnail is served from server B, then thumbnail info could be found in DB, but physical file could not be found, because it’s saved locally on server A. Result of this issue is that some images are missing on the site.
Our workaround was to implement custom image gallery handler that is derived from original one. We override most overloaded GetThumbnail() method, call base method and then copy generated file to VPP storage.
public override Thumbnail GetThumbnail(
var thumbnail = base.GetThumbnail(image, width, height, thumbnailFormat, createThumbnail, thumbnailTag, thumbBgColor);
if (thumbnail != null)
var fileCreated = CreateThumbnailInVPP(thumbnail);
We had 2 implementations: versioned VPP provider and implementation of VPP sync from (http://world.episerver.com/Blogs/David-Knipe/Dates/2009/11/Synchronising-EPiServer-VPP-folders-using-the-Microsoft-Sync-Framework/). This somehow didn’t workout very well (not quite sure – probably of incorrect sync).
Then we configured Amazon S3 as VPP provider. This solution worked pretty OK, thumbnail files are stored physically on some server which is serving the thumbnail generation request, then immediately thumbnail file is copied over to VPP and all servers have access to shared VPP folder.
Is there a better solution for image and corresponding thumbnail handling and support for VPP storage in order to be able to survive in web server cluster scenarios?
<imageGallery> under <episerver.community> element has 2 options:
which both maps to local server physical file system.
We would like to have support for storing both images and thumbnails in VPP folders.