|
|
 Rank: Devotee
Joined: 9/4/2007 Posts: 36 Location: Rome
|
Hi,
I had a load balancing cluster working fine with Umbraco 3.0.2 and updated umbraco.dll from Niels.
After upgrading to version 3.0.3 publishing on one node does not propagate to the other one.
In order to nail down the problem I istalled a fresh instance of Umbraco 3.0.3 on the cluster and distributed calls are still ignored.
Does anybody sees the same behaviour?
Marco Lusini
|
|
 Rank: Devotee
Joined: 9/4/2007 Posts: 36 Location: Rome
|
To double check that this is a 3.0.3 issue, I installed a 3.0.2 on the same cluster following the same steps and then replacing umbraco.dll with the one from http://forum.umbraco.org/14354#post-14354and this instance correctly updates the cache in each node of the cluster...
|
|
 Rank: Devotee
Joined: 9/4/2007 Posts: 36 Location: Rome
|
The problem is related to Save&Publish, if I publish content from the context menu in content tree it works as expected.
|
|
 Rank: Devotee
Joined: 9/4/2007 Posts: 36 Location: Rome
|
I found that the released ver. 3.0.3 is calling
content.Instance.PublishNode(_document);
in the Publish method of editContent class (file editContent.aspx.cs), whereas the fixed unbraco.dll released for 3.0.2 uses
library.PublishSingleNode(_document.Id);
Would it be possible to release another fix?
Regards,
Marco
|
|
 Rank: Addict
Joined: 3/17/2008 Posts: 953 Location: Nyborg, Denmark
|
I'll follow up on this and include it in 3.0.4 coming this week. Thanks for the brilliant research :thumbup:
Jeeeez, did I really start this :-)
|
|
 Rank: Addict
Joined: 3/17/2008 Posts: 953 Location: Nyborg, Denmark
|
I'll follow up on this and include it in 3.0.4 coming this week. Thanks for the brilliant research and thanks to Casey for bringing this to my attention :thumbup:
Jeeeez, did I really start this :-)
|
|
 Rank: Devotee
Joined: 1/10/2008 Posts: 75 Location: London
|
Hello, as I need Umbraco to get working on a load-balanced environnement I've downloaded the latest source code, made the modification you mentionned (replaced content.Instance.PublishNode(_document); by library.PublishSingleNode(_document.Id);) re-compiled and published my new DLLs (on top of a 3.0.4 install, that didn't seem to bother umbraco too much). Unfortunaly, the problem remained. Looking at how the cache refresh was done, I found that basically it was trying to call the cacheRefresher webservice of the x IP addresses listed in the <server> node of the umbracoSettings.config file: Code: foreach (XmlNode n in UmbracoSettings.DistributionServers.SelectNodes("./server")) { CacheRefresher cr = new CacheRefresher(); cr.Url = "http://" + xmlHelper.GetNodeValue(n) + GlobalSettings.Path + "/webservices/cacheRefresher.asmx"; cr.RefreshById(uniqueIdentifier, Id, _login, _password); }
My umbracoSettings.config file looks like this: Code: <servers> <server>192.168.100.100</server> <server>192.168.100.101</server> <!-- add ip number or hostname, make sure that it can be reached from all servers --> <server />
Each IP can be reached from all servers, but does it means also that my web site needs to be the default web site of each of my IIS instances? I suppose the workaround is to have a distinct domain that points to a specific server that I can specify in my server list. Is that correct ? thanks seb [/code] http://www.be-k.net
|
|
 Rank: Devotee
Joined: 9/4/2007 Posts: 36 Location: Rome
|
Sebastien Bicais wrote: Each IP can be reached from all servers, but does it means also that my web site needs to be the default web site of each of my IIS instances? I suppose the workaround is to have a distinct domain that points to a specific server that I can specify in my server list. Is that correct ?
In order to use the DistributedCall feature your umbraco site must respond at the address specified in the <server> tag. Note that you can also specify a port with the IP address. In my servers I usually config IIS to respond both to the IP dedicated to the site on port 80 and to the private IPs of each node on another port. Then I use the private IP in umbracoSetting.config. Check this for an example: http://forum.umbraco.org/19251#post-19466Marco
|
|
 Rank: Devotee
Joined: 1/10/2008 Posts: 75 Location: London
|
thanks for clarifying that marco. I have created 2 dummy hostnames on my 2 clusters IIS and modify each host file entries to map the names to the correct server; it works well. For synchronisation, I just have a robocopy script than runs every minute. I will wait to have multiple editors updating the content to report any problem but so far it does the job. Many thanks for your help seb http://www.be-k.net
|
|
 Rank: Devotee
Joined: 9/4/2007 Posts: 36 Location: Rome
|
In order to synchronize the file system under Windows Server 2003 you can also use DFS with replicated root. Watch out for synchronization problems in the XML cache, though: http://forum.umbraco.org/20232Marco Lusini
|
|
 Rank: Devotee
Joined: 1/10/2008 Posts: 75 Location: London
|
I will wait you found a solution to your problem before going that way :D No seriously I had a quick look, the thing is that you need to open more ports to allow the servers to communicate. In my organisation it takes a week to get that done, so I'll stick to my robocopy script for now. Seb http://www.be-k.net
|
|
 Rank: Devotee
Joined: 9/4/2007 Posts: 36 Location: Rome
|
Sebastien Bicais wrote: I will wait you found a solution to your problem before going that way :D
The error I am referring to is not related to file system replication, you could have it also with robocopy :( Marco
|
|
|
Guest |