I'm getting close to where I will need web farm support. Joe, I know this has been on your roadmap. Just wondering if it's something you are looking to do in the near future, if not, what it may take to sponsor (you could contact me directly on that one), and if neither of these are possible, what are the areas I need to look to update to code it myself? I'm thinking the issues are around the DB caching but am not sure. I could also use a load balancer that forces sticky sessions. Would that solve many of the issues?
There is no issue with database because all nodes would use the same database.
The issues are with the file system, if each node in the farm uses the same file system it should work fine but if they each have different copies there are many issues to solve and they will not be easy to solve. Especially difficult will be solving the search index which is file system based, other issues include user uploads and cache dependency files where we clear the cache by touching files.
I hope to complete web farm support solving these issues sometime in 2010 but it is not coming any time real soon as it is not my top priority.
I would go with as much scaling up with processors and memory on the web server as possible before trying to scale out to more servers. Typically first step is have the db on a separate server cluster as the db is usually a bottle neck long before the web code becomes a bottle neck, and you can scale out the db separately with no issues that I know of. All the challenges t be solved are for scaling out the web server.
I Did some "digging" in Developers Forums but found no recent news about WebFarm support for mojoportal. Did you make any progress? What exactly is/was your bottleneck (cpu, memory, database)?
I was just planning ahead. I've been able to run up to a 200 concurrent users without issue so i put this on hold. Some day I will move to a web farm just for redundancy and eventually increased capacity, but now I'm fine.
So. it's months later and it's time for me to implement web farm support. Couple of questions as I go about this:
1) is there a setting in web config or elsewhere that allows me to point the data directory somewhere else (like a network share)? This would allow all servers to access the same data directory.
2) When using a web farm, the SSL is placed on the Load Balancer, and the request, even if secure from the outside to the LB is sent in clear text on the local network. I believe, but have yet to test this. If my assumption is correct, the local server will think the request was not secure even though it is. Is there a way to disable the SSL message (other than to just blank it out) in the web store if no SSL is present on the local server?
1. No, but seems like you could create a virtual directory for /Data in IIS and have it point to a network share.
2. I don't see how that can work if the site has no way to know if the request is secured or not, we need to be able to rely on Request.IsSecureConnection. I would think one would install the SSL certificate on each IIS node, not on the load balancer. Of course there may be lots of vendor specific ways of doing things and they may not all work with mojoPortal.
I did not get to working on web farm support in 2010 s I had hoped and I'm still not sure when I will get to it, maybe this year but it is not a top priority for me at the moment.
I'm running into the same issues with the web farm, but thanks to being able to point a virtual Data directory to a folder on a shared drive, mojoPortal works. My question is if it is only the cache dependency file that need to be deleted, can I just have a virtual directory for "system files" pointing to: ~\Data\Sites\1\systemfiles?
I'm not sure if having this structure will affect any other parts of the site. We have an automated build that replaces our skins, so we don't want to have the whole Data directory as shared.
Yes that should work as a workaround for now, see a similar discussion on this thread.
I'm actually currently working on changes for better web farm support. I've already completed changes to allow logging to the database instead of the file system and I'm currently working on reducing/eliminating the use of dependency files for clearing the cache.
I just want to share the farm configuration I use with mojoPortal and also other CMS-systems.
I did the infrastructure design for a web-hotel and they now run over 600 websites in this configuration and has done so for more than a year now and it works absolutely great!
There are 2 very powerful physical 2008 R2/IIS 7.5 webservers running in a NLB-cluster. 10 IP-adresses are load-balanced and also there are FTP-sites for each customer that are running in the same NLB-cluster, but with single node failover mode.
Data are replicated between the servers with File Replication Service.
So nice, just upload files to any node and they are instantly replicated across.
mojoportal works flawlessly in this configuration. Some DNN-sites had problems because of some caching issues so the site on one node where not aware of new files that had replicated there, but the DNN-guys fixed that (not sure about what was the problem).
FRS is really nice and with a dedicated Gb-network between the nodes it is rellay quick as well and handles all kind of conflicts.
This is a rather special infrastructure setup and we have created a comprehensive set of custom managing-scripts so they can easily provision new sites and force replication and so on.
Addition to what i just wrote regarding https-sites.
SSL works perfectly as well with termination on the web-servers. just install the certificates on each node. With NLB there is no loadbalancer that intercepts and dispatches packets. No need to terminate SSL on an ISA-server and forward to the sites over http or anything else like that, just plain SSL that works great. You have to export and import the certificaes of course, but no problems with this at all.
That's good stuff! I've been surprised how many people are already running mojoPortal in various web farm configurations. That is why I decided its time to work on officially supporting web farms, and that is what I'm focused on right now. I'll be working on documentation also for web farm configurations and would be glad to have help if any community members would like to write tutorials about how they have configured things.