Load Balancing configuration

Posted by Community Admin on 03-Aug-2018 20:43

Load Balancing configuration

All Replies

Posted by Community Admin on 03-Oct-2014 00:00

Hi,

I'm trying to configure Sitefinity in Load Balancing. I have two web servers hosting the same Sitefinity project in each of them. Both are able to communicate through HTTP but  if i checked the logs I get this error:

---------------------------------------

Timestamp: 10/3/2014 2:10:16 PM



Message: HandlingInstanceID: cc77df83-9b1d-4c48-b4d6-688719cb415d

An exception of type 'System.Exception' occurred and was caught.

----------------------------------------------------------------

10/03/2014 10:10:16

Type : System.Exception, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089

Message : Error sending system message to URL:
sfcms2.dev.teksavvy.ca/.../HandleMessages;
HTTP method: PUT; Host: 'sfcms2.dev.teksavvy.ca'

Source :

Help link :

Data : System.Collections.ListDictionaryInternal

TargetSite :

HResult : -2146233088

Stack Trace : The stack trace is unavailable.

Additional Info:



MachineName : SFCMS1

TimeStamp : 10/3/2014 2:10:16 PM

FullName : Telerik.Sitefinity.Utilities, Version=7.2.5310.0, Culture=neutral, PublicKeyToken=b28c218413bdf563

AppDomainName : /LM/W3SVC/2/ROOT-1-130568189975409981

ThreadIdentity :

WindowsIdentity : IIS APPPOOL\ExternalWebsite

    Inner Exception

    ---------------

    Type : System.Net.WebException, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089

    Message : The remote server returned an error: (500) Internal Server Error.

    Source : System

    Help link :

    Status : ProtocolError

    Response : System.Net.HttpWebResponse

    Data : System.Collections.ListDictionaryInternal

    TargetSite : System.IAsyncResult BeginGetResponse(System.AsyncCallback, System.Object)

    HResult : -2146233079

    Stack Trace :    at System.Net.HttpWebRequest.BeginGetResponse(AsyncCallback callback, Object state)

       at
Telerik.Sitefinity.LoadBalancing.WebServiceSystemMessageSender.WithExceptionHandling(String
url, String hostHeader, Action action)







Category: ErrorLog



Priority: 0



EventId: 9010



Severity: Warning



Title:Enterprise Library Exception Handling



Machine: SFCMS1



App Domain: /LM/W3SVC/2/ROOT-1-130568189975409981



ProcessId: 2804



Process Name: c:\windows\system32\inetsrv\w3wp.exe



Thread Name: sfcms2.dev.teksavvy.ca/.../HandleMessages-Thread-1



Win32 ThreadId:1756



Extended Properties:

----------------------------------------


And if I try to access to:  sfcms2.dev.teksavvy.ca/.../HandleMessages



I get this error:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "www.w3.org/.../xhtml1-strict.dtd">

<html xmlns="www.w3.org/.../xhtml">

<head>

<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"/>

<title>401 - Unauthorized: Access is denied due to invalid credentials.</title>

<style type="text/css">

<!--

bodymargin:0;font-size:.7em;font-family:Verdana, Arial, Helvetica, sans-serif;background:#EEEEEE;

fieldsetpadding:0 15px 10px 15px;

h1font-size:2.4em;margin:0;color:#FFF;

h2font-size:1.7em;margin:0;color:#CC0000;

h3font-size:1.2em;margin:10px 0 0 0;color:#000000;

#headerwidth:96%;margin:0 0 0 0;padding:6px 2% 6px 2%;font-family:"trebuchet MS", Verdana, sans-serif;color:#FFF;

background-color:#555555;

#contentmargin:0 0 0 2%;position:relative;

.content-containerbackground:#FFF;width:96%;margin-top:8px;padding:10px;position:relative;

-->

</style>

</head>

<body>

<div id="header"><h1>Server Error</h1></div>

<div id="content">

 <div class="content-container"><fieldset>

  <h2>401 - Unauthorized: Access is denied due to invalid credentials.</h2>

  <h3>You do not have permission to view this directory or page using the credentials that you supplied.</h3>

 </fieldset></div>

</div>

</body>

</html>

Any about what could be missing in the configuration? what user should be used to communicate between web servers?

 

I will appreciate any help, thanks

Posted by Community Admin on 06-Oct-2014 00:00

Make sure you have followed these directions. 

www.sitefinity.com/.../load-balancing

Are you using standard membership providers?

Posted by Community Admin on 06-Oct-2014 00:00

Hi Jonathan,

Thanks for getting back to me. I'm following all this instruction listed in the Sitefinity Documentation o configure Load Balancing. So far before to configure the F5 to handle the request I'm just trying to have in sync both  nodes and is then when I'm getting the 500 error in the logs.

 I did notice that when I'm authenticated I have access to sfcms2.dev.teksavvy.ca/.../ and I can see the files inside of it, in this case SystemWebService.svc. But if I try to access to it II get this error:

-----------------------------------------------------------------------------------------------------------------------

Error Description: 'Resource does not exist'
This may be because an invalid URI or HTTP method was specified. Please see the service help page for constructing valid requests to the service.
--------------------------------------------------------------------------------------------------------------------------------



Is this the expected behavior?



One thing that I'm doing is that I'm creating the project in one node and then copying it over to the other node importing it using Sitefinity  Project Manager? Is this the right way to do it?



Another question is if, beside the admin user in Sitefinity, should we configure any other user to use when communicating between nodes.

Thank you  

 

 

Posted by Community Admin on 09-Oct-2014 00:00

Hello,

We have answered you in the support ticket you have opened. I will share the information with the community:

The "Resource does not Exist" error is also expected. You can see which services are available at the help page. /Sitefinity/Services/LoadBalancing/SystemWebService.svc/help (It helps if you use internet explorer here as it formats the help page nicely.) The root /Sitefinity/Services/LoadBalancing/SystemWebService.svc is not a service itself also on the help page you will notice that both of the available services it exposes expect HTTP PUT so a POST or GET to one of them will show the same error

You should not need to have import the project into the project manager after you move it. In addition, the project by itself will run on a machine that does not have the project manager as a site inside of IIS. 

Also there does not need to be an additional user set up. The only concession to security would be the security steps described in the load balancing set up. http://www.sitefinity.com/documentation/documentationarticles/configuring-security


Additional questions:
1- I created a Sitefinity project in one of my nodes. It was hosted in IIS following all the steps described in your documentation.
2- I copy over to the second node the files for the same project and I imported it using Sitefinity Project Manager. For your previous email I understand that this is not needed. If so just creating a new site under IIS and make it point to those files I copied over from the 1st node should be ok?
3- We are using form authentication. I though that configuration security you mentioned is just when you are using claim authentication. Am I right?

Do we need to specify all the WebServerUrls in the setting of each node or with just define this in one of the nodes should be ok?

You are correct. You should not have to import the site back into project manager on the other node.

However, even if you are running with forms authentication you would still have to follow the machine key portion of the security instructions. Also to be clear, you have switched Sitefinity from running in its default claims authentication to forms authentication. 

Web server URLs will also need to be defined in each node.


Regards,
Stefani Tacheva
Telerik

 
Do you want to have your say in the Sitefinity development roadmap? Do you want to know when a feature you requested is added or when a bug fixed? Explore the Telerik Sitefinity CMS Ideas&Feedback Portal and vote to affect the priority of the items
 

Posted by Community Admin on 09-Oct-2014 00:00

Thank you

I have a couple more of questions

1- so I have understood that data caching is automatically enables in Sitefinity 7.2 but if there is a configuration or page change the cache is automatically invalidated by Sitefinity in order to ensure that the changes are propagated to all the nodes, once this happens the data caching will be activated again. Is this correct?

2- Another I would like to know is if it is absolutely recommended to store configurations in the DB if load balancing enabled? If so why is the idea of having load balance enabled(all the nodes are sharing same config files)? is it just to invalidated the data cache if page or configuration changes?

 

Thanks again for your help

 

Posted by Community Admin on 10-Oct-2014 00:00

Hi,

The answers were provided in the support ticket. I am sharing the information in the forum as well.

1. It is not and this is in fact the purpose of the load balancing addon. Caching is still enabled, but when a change is made on one server that changes content that may be cached, other servers need to be informed that a change has been made and there is content in their cache that may no longer be valid. This is what the load balancing addon is doing. It uses web service calls to inform the other servers when there is content in their cache that may be invalid. It is not that caching switches off and on. 

2. It is not absolutely necessary to move configurations into the db when working in a load balanced environment, but it may well be a good idea as it would help to keep your configurations in sync for all servers.


Changes to the site configuration (Adminstration-->Settings) might invalidate the cache, but whether they do or not is immaterial if you do not have your settings shared between sites (e.g. in the database) because changes to the configuration would not be propagated to other nodes. The load balancing add on would not be writing to those configuration files on the file system for every node. This is why people put the settings in the database so that if a change is made and the cache for each server is flagged as invalid. When they rebuild their cache they are using the updated shared settings in the database.

Regards,
Stefani Tacheva
Telerik

 
Do you want to have your say in the Sitefinity development roadmap? Do you want to know when a feature you requested is added or when a bug fixed? Explore the Telerik Sitefinity CMS Ideas&Feedback Portal and vote to affect the priority of the items
 

This thread is closed