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

Using Okta Authentication for a Sitecore client site

I recently had a project where we had to add a new Sitecore site to an already multi site Sitecore 8.2 Update 7 instance. This new site had to integrate with Okta to manage user authentication. I found many articles online that integrated Okta and Sitecore's admin interface but I could not find one that just integrated Okta with a client Sitecore site. My first step was to use Okta's available ASP.NET MVC projects on their Dev site and test them out. This worked very well with the first Authenticated method I tried which was WS-Fed. But when I tried to use the same authentication method with a site in Sitecore I got errors in my logs like the following: Sitecore.Security.Principal.SitecoreIdentity does not contain a definition for Claims Claims are available in HttpContext.User.Identity but not in Sitecore.Security.Principal.SitecoreIdentity, and since we are using a Sitecore site we could not read the claims. I tried to make claims work in Sitecore using various online a

Sitecore clear cache setting

Sitecore has extensive cache settings. You can add caching at the rendering level so it affects all instances of that rendering. Or you can add caching at the component level on a particular page via the presentation details. This is all good when you are setting it up, but once this goes to production, the way caching is supposed to work is that the cache should get cleared after an item is published. So after an item is published, any associated cache should also automatically get updated. In our case, we saw that once we went to production (with extensive caching enabled) our pages loaded much faster. However when the content authors were updating content, the updates were not making it to the delivery servers. The content seemed to be stuck in the cache. We noticed that we had to do one of the following to see the updated cache. Go to the admin cache page [SitecoreSite/sitecore/admin/Cache.aspx] and click the "Clear all" button. This is not viable long term solution

Updating Sitecore Image alt text

One of the most important conditions of making a site accessible is to make sure that all images on the site have the alt field with some value that describes the image. The simplest update we can make to Sitecore is to have the alt field automatically get the image file name. That way even if content authors forget to fill the alt field, it is pre-filled with the file name. To do this just add $name to the alt field in the standard value of an image [/sitecore/templates/System/Media/Unversioned/Image/__Standard Values] This is all good for an future images that gets uploaded to Sitecore. But what about all the existing images. For that we can write a PowerShell script (see below) to get all images in the Sitecore image folder that have empty alt tags. Export that to a csv file. $pathOfImages = "master:/sitecore/media library/MyImages" $images = Get-ChildItem -Path $pathOfImages -Language * -Recurse | Where-Object { ($_.Fields["Alt"] -ne $null) -and ($_.Fields