Share Button

A simple architecture was proposed in Part I of this article to avoid down times during the Sitecore content and code deployments. In this article, the deployments problems related to search is discussed and a potential solution is illustrated.

What search technology to use?

A straight forward answer is .. NOT Lucene. Although it’s the default search provider for Sitecore, it doesn’t do well within a multi-instances environment as the instances of the index will often go out-of-sync. Other search providers can be use such as SolrCoveo for Sitecore and Elastic search. Each of these technologies may require different setup/configuration to achieve the goal of this article.

The rest of this article is based on Solr – as it’s currently the alternate search technology provided by Sitecore – showing what the potential problems are and how to avoid these problems.

 

What part of the search can cause downtime during deployments?

Two things can go wrong here:

1. Solr configuration updates

If you implemented a new feature in your website that requires a Solr configuration updates (e.g. auto complete using NGram or “Did you mean …” spellchecking) then you have to be very careful about they way of pushing the schema/config updates to the Solr server.

One mistake that developers do is restarting the Solr server to force it to read the new updates. Once the service is restarted, Sitecore will immediately show the yellow screen of death and the site will go down till the Solr server is up and running again.

Thankfully, Solr has a very helpful feature – Reload – that allows loading the config updates without causing downtime. Here is a quote from the Solr wiki pages describing the Reload function

Load a new core from the same configuration as an existing registered core. While the “new” core is initalizing, the “old” one will continue to accept requests. Once it has finished, all new request will go to the “new” core, and the “old” core will be unloaded.

  • http://localhost:8983/solr/admin/cores?action=RELOAD&core=core0

This can be useful when (backwards compatible) changes have been made to your solrconfig.xml or schema.xml files (e.g. new <field> declarations, changed default params for a <requestHandler>, etc…) and you want to start using them without stopping and restarting your whole Servlet Container.

You can also reload a Solr core using the admin portal by going to “Core Admin” -> Click on the core you want to reload -> Click the Reload button as shown in the following screenshot:

Solr Core Reload
Solr Core Reload

Read More How to Achieve Zero-Downtime Sitecore Deployments (Solr Search) – Part II

Scalability Session State Sitecore Solr

Share Button

Is it possible to devise a high-availability architecture using Sitecore that can avoid down time and broken functionality during deployments?

Well, this article discusses the potential problems you may encounter during deployments and proposes a system architecture to achieve this goal.

So, what are the main problems that affect the availability of the website during the deployment?

  1. Code/Markup/Config updates will cause the application pool to restart.
  2. Publishing new sublayouts can be problematic. i.e. publishing the subalyouts before the code and markup are deployed is good enough to get the yellow screen of death.
  3. Rebuilding indexes can cause your search and listing pages to stop working till the rebuild process is complete.

The following architecture describes how address the problems mentioned above to avoid any downtime during the deployment.

The Architecture

System Architecture
System Architecture

This proposed architecture is based on the Multi-Instance environment documented in the Sitecore scaling guide apart from having a Web database per CD server. For simplicity, the diagram illustrates the architecture on only 2 CD servers. However, in the CD servers can scale out as needed based on the performance requirements.

Read More How to Achieve Zero-Downtime Sitecore Deployments (Architecture) – Part I

Scalability Session State Sitecore