Skip to main content

Accessing Load Balanced Content Delivery Servers

One of the most common issues that arise on load balanced content delivery servers, is that there is a problem only with one of the servers. But troubleshooting this should be easy if you follow one (or in my case, all) of the following three options.

1. Set Http response headers for each content delivery server

Within IIS, at the root server node, choose "HTTP Response Headers". From Actions, add a unique value for each of your servers. For example

Name      Value
x-s            01
x-s            02
x-s            03


Now when you bring up your webpage, you can go to Chrome developer tools and find the x-s value in the response headers section as shown in the image below



2. Add the below line (above the </body> tag) to your default layout (master page) so that all pages on your website inherit it.

<!-- Server MachineName = @HttpContext.Current.Server.MachineName -->

Now, when you bring up your webpage, right click on the page and choose "View page source". Then scroll down to the bottom of the page (by clicking Ctrl + End) and you should see the name of the delivery server that is serving up the web page.

3. In your <Site> node of your website (withing the App_config folder), add the name of each of your delivery server to the hostname (names are pipe delimited here).
For example if your CD server name is xxxcd01
then the hostname value on CD1 would be
hostName="yourwebsite|xxxcd01"
Similarly set this on other CD servers.
ie: hostName="yourwebsite|xxxcd02"
     hostName="yourwebsite|xxxcd03"

Lastly make sure that you have added a hostname binding to your website


Now, you should be able to browse directly to your content delivery server by going to http://xxxcd01

Following the above has helped me troubleshoot a ton of issues and I hope it helps others as well. Happy Sitecoreing!



Comments

Popular posts from this blog

Create Object XML while Debugging in VS

 There are times when you put breakpoints in Visual studio and read object values within Visual Studio. This is all good if you are doing some debugging. But if you want to save an object like a Json object in Visual studio there isn't a straightforward way to do that. I found this piece of code that I copied and pasted in the Immediate Window in Visual Studio and was able to save the object as an XML file. (new System.Xml.Serialization.XmlSerializer(YourObject.GetType())).Serialize(new System.IO.StreamWriter(@"c:\tmp\YourObject.xml"), YourObject) Happy Sitecoreing!

Sitecore: Get list of logged in users

I had a deployment today and wanted to find a list of users who were logged into the Sitecore admin site. This was mainly so that I can contact them and let them know that a deployment was going to happen. I found the following link very useful as it gave me exactly what I was looking for. A list of users that were logged in and I contacted them. It also has the ability to Kick off users! http://{YourWebsite}/sitecore/client/Applications/LicenseOptions/KickUser Note: You can only see other users in this list if you have the right administrator permission. Logging in with a lower access level user only gave me the logged in user and no one else on the list.

GlassMapper

 How GlassMapper works  Glass Mapper is an object relational mapping (ORM) tool in Sitecore. It maps Sitecore items to strongly-typed classes. This makes it simple to access Sitecore data within C# code. Without an ORM, Sitecore developers would need to write and manage a lot of mapping code.  Below are example files that you can use. You have an interface class file, a class file that implements the interface and lastly you can use this in your cshtml file.  That's it. Happy Sitecoreing! IMySitecoreItemName class file namespace Your.NameSpace { [SitecoreType(TemplateId = Templates.MyTemplate.IdString, AutoMap = true)] public interface IMySitecoreItemName : IMySitecoreModel { [SitecoreField(FieldId = Templates.MySitecoreItem.Fields.MyField1)] string StringFieldName { get; set; } [SitecoreField(FieldId = Templates.MySitecoreItem.Fields.MyField2)] bool BoolFieldName { get; set; } } } Use it on your .cs file ...