+1-888-365-2779
Try Now
More in this section

Forums / General Discussions / Load Balancing configuration

Load Balancing configuration

6 posts, 0 answered
  1. Ailyn
    Ailyn avatar
    3 posts
    Registered:
    26 Sep 2014
    03 Oct 2014
    Link to this post

    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:
    http://sfcms2.dev.teksavvy.ca/Sitefinity/Services/LoadBalancing/SystemWebService.svc/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: http://sfcms2.dev.teksavvy.ca/Sitefinity/Services/LoadBalancing/SystemWebService.svc/HandleMessages-Thread-1



    Win32 ThreadId:1756



    Extended Properties:

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


    And if I try to access to:  http://sfcms2.dev.teksavvy.ca/Sitefinity/Services/LoadBalancing/SystemWebService.svc/HandleMessages



    I get this error:

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

    <html xmlns="http://www.w3.org/1999/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">

    <!--

    body{margin:0;font-size:.7em;font-family:Verdana, Arial, Helvetica, sans-serif;background:#EEEEEE;}

    fieldset{padding:0 15px 10px 15px;}

    h1{font-size:2.4em;margin:0;color:#FFF;}

    h2{font-size:1.7em;margin:0;color:#CC0000;}

    h3{font-size:1.2em;margin:10px 0 0 0;color:#000000;}

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

    background-color:#555555;}

    #content{margin:0 0 0 2%;position:relative;}

    .content-container{background:#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

  2. Jonathan
    Jonathan avatar
    119 posts
    Registered:
    19 Dec 2012
    06 Oct 2014 in reply to Ailyn
    Link to this post

    Make sure you have followed these directions. 

    http://www.sitefinity.com/documentation/documentationarticles/installation-and-administration-guide/load-balancing

    Are you using standard membership providers?

  3. Ailyn
    Ailyn avatar
    3 posts
    Registered:
    26 Sep 2014
    06 Oct 2014 in reply to Jonathan
    Link to this post

    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 http://sfcms2.dev.teksavvy.ca/Sitefinity/Services/LoadBalancing/ 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  

     

     

  4. Stefani Tacheva
    Stefani Tacheva avatar
    718 posts
    Registered:
    21 Nov 2016
    09 Oct 2014
    Link to this post
    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
     
  5. Ailyn
    Ailyn avatar
    3 posts
    Registered:
    26 Sep 2014
    09 Oct 2014 in reply to Stefani Tacheva
    Link to this post

    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

     

  6. Stefani Tacheva
    Stefani Tacheva avatar
    718 posts
    Registered:
    21 Nov 2016
    10 Oct 2014
    Link to this post
    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
     
6 posts, 0 answered