Configure a content delivery server

Last updated Tuesday, June 20, 2017 in Sitecore Experience Platform for Administrator, Developer

A content delivery server makes your web content available to your website visitors. You can configure one or more content delivery servers for improved scalability and better performance. If you expect to have high numbers of visitors or want to configure servers in different geographic locations, you can arrange content delivery servers into clusters.

Before you start configuring server roles ensure that you have read the hardware guidelines for the Sitecore Experience Platform (XP), and the Sitecore Experience Database (xDB).

Note

The information in this topic is valid for Sitecore Experience Platform 8.0 Update 3.

In this type of configuration, you use the content delivery server with the tracking feature.

Important

Tracking should be the only xDB analytics feature you enable on a dedicated content delivery server.

This topic includes the following:

xDB considerations

Depending on which type of server you want to configure there are several xDB features available that you can enable or disable such as tracking, processing or reporting. Tracking can be relevant when creating a dedicated content delivery server. It enables the tracking of contacts, personalization, goals, outcomes and more. Tracking is also a feature that you can enable in xDB or in CMS only mode.

Important

Tracking should be the only xDB analytics feature you enable on a dedicated content delivery server.

Session state considerations

In xDB, session state enables you to share your contact sessions across all browsers and devices. This is particularly important if you are configuring clusters of content delivery or processing servers. For each server cluster configure private and shared session state and a session state database to ensure that contacts stay connected to the same server until the session ends.

xAnalytics assembly files

If you have implemented custom code that uses ASP.NET Web API attribute routing, to avoid errors we recommend that you disable the following .dll files:

  • Sitecore.ExperienceAnalytics.dll
  • Sitecore.ExperienceAnalytics.Client.dll

Search and indexing considerations

Decide which search and indexing provider you want to use. You can choose Lucene, Solr or a combination of the two depending on the business purpose of your website and the type of server architecture you want to implement.

Depending on whether you use Lucene or Solr for search and indexing there is a different set of configuration steps that you need to follow. Before you choose a search provider, first read more about Using Solr or Lucene with Sitecore, as you have several different options.

If you use Lucene follow the steps below and disable all Solr configuration files and if you use Solr follow the steps below and disable all Lucene configuration files.

To configure a content delivery server:

  1. Install a standard Sitecore instance on the server you want to use for content delivery. For installation instructions, read the Installing the Sitecore Experience Platform guide on the Sitecore Developer Portal website.
  2. Remove or restrict access to the client. You do not need the Sitecore client on a content delivery server.
  3. In the /App_Config/ConnectionStrings.config file, comment out the following connection strings:
    <add name="master" connectionString="….." />
    <add name="reporting" connectionString="….."/>
    <add name="tracking.history" connectionString="mongodb:….."/>

    Content delivery servers do not require all connection strings to be active. For example, there are some security benefits in removing the reporting connection string. Either remove these connection strings completely or add comment tags to hide them.

  4. Enable or disable configuration files for the:
    • Content delivery server
    • Lucene provider
    • Solr provider
  5. Change the configuration settings for the:
    • Content delivery server
    • Solr provider

Important

When you configure xDB, you must synchronize all the servers in your solution to a single reliable time source, for example by means of the Network Time Protocol (NTP).

The aggregation of engagement automation states depends on the system time and changing this can lead to incorrect aggregation results or loss of data.

Files to enable or disable to configure a content delivery server

To configure a content delivery server, ensure that the following configuration files or .dll files are either enabled or disabled.

Note

Only files that are need to be changed from the default configuration are listed here.

Note

List Manager and Path Analyzer should be completely disabled on a content delivery server.

Configuration file

Folder

Enable

Disable

Marketing platform

ScalabilitySettings.config

Disabled by default

App_Config/Include

Picture 59

Sitecore.Analytics.Automation.TimeoutProcessing.config

App_Config/Include

Picture 60

Sitecore.Analytics.Processing.Aggregation.Services.config

App_Config/Include

Picture 61

Sitecore.Analytics.Processing.Services.config

App_Config/Include

Picture 62

Sitecore.Analytics.Reporting.config

App_Config/Include

Picture 63

Sitecore.Marketing.Client.config

App_Config/Include

Picture 2

Sitecore.Processing.config

App_Config/Include

Picture 67

Sitecore.WebDAV.config

App_Config/Include

Picture 69

SwitchMasterToWeb.config

App_Config/Include

Picture 70

Note

Configuration files are applied in alphabetical order. Rename the SwitchMasterToWeb.config file so that it is applied after other include files that contain references to the master database.

Experience Editor

Sitecore.ExperienceEditor.Speak.Requests.config

App_Config/Include

Picture 4

Experience Explorer

Sitecore.ExperienceExplorer.Speak.Requests.config

App_Config/Include

Picture 5

Path Analyzer

Sitecore.PathAnalyzer.Client.config

App_Config/Include

Picture 116

Sitecore.PathAnalyzer.config

App_Config/Include

Picture 117

Sitecore.PathAnalyzer.Processing.config

App_Config/Include

Picture 118

Sitecore.PathAnalyzer.Services.config

App_Config/Include

Picture 119

Sitecore.PathAnalyzer.StorageProviders

App_Config/Include

Picture 120

Sitecore.PathAnalyzer.dll

Website/bin

Picture 121

Sitecore.PathAnalyzer.Client.dll

Website/bin

Picture 122

Sitecore.PathAnalyzer.Services.dll

Website/bin

Picture 123

Sitecore.SequenceAnalyzer.dll

Website/bin

Picture 124

Content Testing

Sitecore.ContentTesting.Processing.Aggregation.config

App_Config/Include/ContentTesting

Picture 125

Experience Analytics

Sitecore.ExperienceAnalytics.Aggregation.config

App_Config/Include/ExperienceAnalytics

Picture 126

Sitecore.ExperienceAnalytics.Client.config

App_Config/Include/ExperienceAnalytics

Picture 127

Sitecore.ExperienceAnalytics.Reduce.config

App_Config/Include/ExperienceAnalytics

Picture 128

Sitecore.ExperienceAnalytics.StorageProviders.config

App_Config/Include/ExperienceAnalytics

Picture 129

Sitecore.ExperienceAnalytics.WebAPI.config

App_Config/Include/ExperienceAnalytics

Picture 130

Sitecore.ExperienceAnalytics.dll

Website/bin

Picture 131

Sitecore.ExperienceAnalytics.Client.dll

Website/bin

Picture 132

Experience Profile

Sitecore.ExperienceProfile.config

App_Config/Include/ExperienceProfile

Picture 133

Sitecore.ExperienceProfile.Client.config

App_Config/Include/ExperienceProfile

Picture 134

Sitecore.ExperienceProfile.Reporting.config

App_Config/Include/ExperienceProfile

Picture 135

Federated Experience Manager

Sitecore.FXM.Speak.config

App_Config/Include/FXM

Picture 136

List Management

Sitecore.ListManagement.Client.config

App_Config/Include/ListManagement

Picture 138

Sitecore.ListManagement.config

App_Config/Include/ListManagement

Picture 139

Sitecore.ListManagement.Services.config

App_Config/Include/ListManagement

Picture 140

Social Connected

Sitecore.Social.ExperienceProfile.config

App_Config/Include/Social

Picture 141

Speak

.Sitecore.Speak.Important.config

App_Config/Include

Picture 12

Sitecore.Speak.AntiCsrf.SheerUI.config

App_Config/Include

Picture 3

Sitecore.Speak.Applications.config

App_Config/Include

Picture 6

Sitecore.Speak.config

App_Config/Include

Picture 8

Sitecore.Speak.ItemWebApi.config

App_Config/Include

Picture 9

Sitecore.Speak.LaunchPad.config

App_Config/Include

Picture 10

Sitecore.Speak.Mvc.config

App_Config/Include

Picture 11

Note

To create an additional server role to trigger and process automation states by timeout for contacts with live sessions on your website, install the Sitecore Engagement Automation Live Session Agent module. You can download the module from the Sitecore Developer Portal.

Changes to configuration file settings

In the following configuration files, find the appropriate section and update each of the parameter values.

You can remove references to the master database using the SwitchMasterToWeb.config configuration file patch (included in the list of config files to enable).

Note

In Sitecore, you can create your own names for databases and indexes. This table uses the default Sitecore names for all databases and indexes, such as master, web and sitecore_marketing_asset_index_web.

Configuration file

Section

Parameter

Value

ScalabilitySettings.config

configuration/sitecore/settings/setting name="InstanceName"/patch:attribute name="value"

patch:attribute name

sc8CD1

If you have configured multiple content delivery servers, each server should have a unique name, such as:

- sc8CD2

- sc8CD3

Sitecore.Analytics.config

configuration/sitecore/scheduling/<agent type="Sitecore.Analytics.Tasks.EmailReportsTask

Comment out this section.

    <agent type="Sitecore.Analytics.Tasks.EmailReportsTask, Sitecore.Analytics" method="Run" interval="1:00:00">
        <DatabaseName>master</DatabaseName>
     </agent>

Sitecore.Analytics.Tracking.config

<setting name="Analytics.DefaultDefinitionDatabase" value="master" />

Analytics.DefaultDefinitionDatabase

web

<setting name="Analytics.ClusterName" value="default-cd-cluster" />

If you are creating a cluster of content delivery servers, use your domain name when naming the content delivery cluster.

For example, value="cluster1.domain.com"

Do this for each node in the cluster. For a single content delivery server, use the domain name of the server instead.

Analytics.ClusterName

default-cd-cluster

<setting name="Analytics.HostName" value="" />

The global domain name of the Sitecore website.

The cluster and domain name should be identical for all content delivery servers that are in the same cluster.

For example:

<setting name="Analytics.ClusterName" value="cluster1.domain.com" />
<setting name="Analytics.HostName" value="www.domain.com" />

Analytics.HostName

There is no default value.

Sitecore.Buckets.config

configuration/sitecore databases/database

Comment out the entire master database section.

Comment out:

      
<database id="master"
...
      </database>

Sitecore.ContentSearch.config

configuration/sitecore/scheduling/agent

Comment out:

<agent type="Sitecore.ContentSearch.Tasks.Optimize" method="Run" interval="01:00:00">
        <indexes hint="list">
          <index>sitecore_master_index</index>
        </indexes>
      </agent>

Sitecore.ContentSearch.DefaultConfigurations.config

Comment out references to the master database.

configuration/sitecore/contentSearch/indexConfigurations/indexUpdateStrategies/intervalAsyncMaster

Comment out:

          <intervalAsyncMaster type="Sitecore.ContentSearch.Maintenance.Strategies.IntervalAsynchronousStrategy, Sitecore.ContentSearch">
            <param desc="database">master</param>
            <param desc="interval">00:00:05</param>            
            <CheckForThreshold>true</CheckForThreshold>
          </intervalAsyncMaster>

Comment out references to the master database.

configuration/sitecore/contentSearch/indexConfigurations/indexUpdateStrategies/syncMaster

Comment out:

<syncMaster type="Sitecore.ContentSearch.Maintenance.Strategies.SynchronousStrategy, Sitecore.ContentSearch">
            <param desc="database">master</param>
          </syncMaster>

Sitecore.Marketing.Definitions.MarketingAssets.Repositories.config

configuration/sitecore/marketingDefinitions/asset/repositories/item

Change the database name from master to web.

databaseName

web

configuration/sitecore/marketingDefinitions/asset/repositories/item

indexName

sitecore_marketing_asset_index_web

Sitecore.Marketing.config

configuration/sitecore/marketingDefinitions/campaign/repositories/item

In the marketing definition for Campaigns, change the database name from master to web.

databaseName

web

configuration/sitecore /marketingDefinitions/goal/repositories/item

In the marketing definition for Goals, change the database name from master to web.

databaseName

web

marketingDefinitions/outcome/repositories/item

In the marketing definition for Outcomes, change the database name from master to web.

databaseName

web

Sitecore.Social.config

configuration/sitecore/settings/setting

name="Social.Messages.SearchIndex.Master"

social_messages_web

Files to enable or disable for Lucene

To configure a content delivery server when using Lucene for search and indexing, you need to enable or disable the following additional configuration files.

Note

All relevant Lucene and Solr configuration files are included in this section regardless of whether they are enabled or disabled by default.

To disable a configuration file change the extension from .config to .disabled.

Configuration file

Folder

Enable

Disable

Marketing platform

Sitecore.ContentSearch.Lucene.DefaultIndexConfiguration.config

App_Config/Include

Picture 142

Sitecore.ContentSearch.Lucene.Index.Analytics.config

Enabled by default

App_Config/Include

Picture 143

Sitecore.ContentSearch.Lucene.Index.Core.config

Enabled by default

App_Config/Include

Picture 144

Sitecore.ContentSearch.Lucene.Index.Master.config

App_Config/Include

Picture 145

Sitecore.ContentSearch.Lucene.Index.Web.config

Enabled by default

App_Config/Include

Picture 146

Sitecore.ContentSearch.Solr.DefaultIndexConfiguration.config

Disabled by default

App_Config/Include

Picture 147

Sitecore.ContentSearch.Solr.Index.Analytics.config

Disabled by default

App_Config/Include

Picture 148

Sitecore.ContentSearch.Solr.Index.Core.config

Disabled by default

App_Config/Include

Picture 149

Sitecore.ContentSearch.Solr.Index.Master.config

Disabled by default

App_Config/Include

Picture 150

Sitecore.ContentSearch.Solr.Index.Web.config

Disabled by default

App_Config/Include

Picture 151

Sitecore.Marketing.Definitions.MarketingAssets.Repositories.Lucene.Index.Master.config

App_Config/Include

Picture 152

Sitecore.Marketing.Definitions.MarketingAssets.Repositories.Lucene.Index.Web.config

Enabled by default

App_Config/Include

Picture 153

Sitecore.Marketing.Definitions.MarketingAssets.Repositories.Lucene.IndexConfiguration.config

Enabled by default

App_Config/Include

Picture 154

Sitecore.Marketing.Definitions.MarketingAssets.Repositories.Solr.Index.Master.config

App_Config/Include

Picture 155

Sitecore.Marketing.Definitions.MarketingAssets.Repositories.Solr.Index.Web.config

App_Config/Include

Picture 156

Sitecore.Marketing.Definitions.MarketingAssets.Repositories.Solr.IndexConfiguration.config

App_Config/Include

Picture 160

Content Testing

Sitecore.ContentTesting.Lucene.IndexConfiguration.config

Enabled by default

App_Config/Include/ContentTesting

Picture 1

Sitecore.ContentTesting.Solr.IndexConfiguration.config

Disabled by default

App_Config/Include/ContentTesting

Picture 162

Federated Experience Manager

Sitecore.FXM.Lucene.Index.DomainsSearch.config

Enabled by default

App_Config/Include/FXM

Picture 163

Sitecore.FXM.Solr.Index.DomainsSearch.config

Disabled by default

App_Config/Include/FXM

Picture 164

List Management

Sitecore.ListManagement.Lucene.Index.List.config

App_Config/Include/ListManagement

Picture 165

Sitecore.ListManagement.Lucene.IndexConfiguration.config

App_Config/Include/ListManagement

Picture 166

Sitecore.ListManagement.Solr.Index.List.config

Disabled by default

App_Config/Include/ListManagement

Picture 167

Sitecore.ListManagement.Solr.IndexConfiguration.config

Disabled by default

App_Config/Include/ListManagement

Picture 168

Social Connected

Sitecore.Social.Lucene.Index.Master.config

App_Config/Include/Social

Picture 169

Sitecore.Social.Lucene.Index.Web.config

Enabled by default

App_Config/Include/Social

Picture 170

Sitecore.Social.Lucene.IndexConfiguration.config

Enabled by default

App_Config/Include/Social

Picture 171

Sitecore.Social.Solr.Index.Master.config

Disabled by default

App_Config/Include/Social

Picture 172

Note

Configuration files using the Master database are not required on a content delivery server.

Sitecore.Social.Solr.Index.Web.config

Disabled by default

App_Config/Include/Social

Picture 173

Sitecore.Social.Solr.IndexConfiguration.config

Disabled by default

App_Config/Include/Social

Picture 174

Files to enable or disable for Solr

To configure a content delivery server when using Solr for search and indexing, you need to enable or disable the following additional configuration files.

Note

All relevant Lucene and Solr configuration files are included in this section regardless of whether they are enabled or disabled by default.

To disable a configuration file change the extension from .config to .disabled.

Configuration file

Folder

Enable

Disable

Marketing platform

Sitecore.ContentSearch.Lucene.DefaultIndexConfiguration.config

App_Config/Include

Picture 175

Sitecore.ContentSearch.Lucene.Index.Analytics.config

App_Config/Include

Picture 176

Sitecore.ContentSearch.Lucene.Index.Core.config

App_Config/Include

Picture 177

Sitecore.ContentSearch.Lucene.Index.Master.config

App_Config/Include

Picture 178

Sitecore.ContentSearch.Lucene.Index.Web.config

Enabled by default

App_Config/Include

Picture 179

Sitecore.ContentSearch.Solr.DefaultIndexConfiguration.config

App_Config/Include

Picture 180

Sitecore.ContentSearch.Solr.Index.Analytics.config

Disabled by default

App_Config/Include

Picture 181

Sitecore.ContentSearch.Solr.Index.Core.config

Disabled by default

App_Config/Include

Picture 182

Sitecore.ContentSearch.Solr.Index.Master.config

Disabled by default

App_Config/Include

Picture 183

Sitecore.ContentSearch.Solr.Index.Web.config

Disabled by default

App_Config/Include

Picture 184

Sitecore.Marketing.Definitions.MarketingAssets.Repositories.Lucene.Index.Master.config

App_Config/Include

Picture 185

Sitecore.Marketing.Definitions.MarketingAssets.Repositories.Lucene.Index.Web.config

App_Config/Include

Picture 186

Sitecore.Marketing.Definitions.MarketingAssets.Repositories.Lucene.IndexConfiguration.config

App_Config/Include

Picture 187

Sitecore.Marketing.Definitions.MarketingAssets.Repositories.Solr.Index.Master.config

App_Config/Include

Picture 188

Sitecore.Marketing.Definitions.MarketingAssets.Repositories.Solr.Index.Web.config

App_Config/Include

Picture 189

Sitecore.Marketing.Definitions.MarketingAssets.Repositories.Solr.IndexConfiguration.config

App_Config/Include

Picture 190

Note

Configuration files using the Master database are not required on a content delivery server.

Content Testing

Sitecore.ContentTesting.Lucene.IndexConfiguration.config

App_Config/Include/ContentTesting

Picture 191

Sitecore.ContentTesting.Solr.IndexConfiguration.config

*Disabled by default

App_Config/Include/ContentTesting

Picture 192

Federated Experience Manager

Sitecore.FXM.Lucene.Index.DomainsSearch.config

App_Config/Include/FXM

Picture 193

Sitecore.FXM.Solr.Index.DomainsSearch.config

App_Config/Include/FXM

Picture 194

List Management

Sitecore.ListManagement.Lucene.Index.List.config

App_Config/Include/ListManagement

Picture 195

Sitecore.ListManagement.Lucene.IndexConfiguration.config

App_Config/Include/ListManagement

Picture 196

Sitecore.ListManagement.Solr.Index.List.config

Disabled by default

App_Config/Include/ListManagement

Picture 197

Sitecore.ListManagement.Solr.IndexConfiguration.config

Disabled by default

App_Config/Include/ListManagement

Picture 198

Social Connected

Sitecore.Social.Lucene.Index.Master.config

App_Config/Include/Social

Picture 199

Sitecore.Social.Lucene.Index.Web.config

App_Config/Include/Social

Picture 200

Sitecore.Social.Lucene.IndexConfiguration.config

App_Config/Include/Social

Picture 201

Sitecore.Social.Solr.Index.Master.config

App_Config/Include/Social

Picture 202

Sitecore.Social.Solr.Index.Web.config

App_Config/Include/Social

Picture 203

Sitecore.Social.Solr.IndexConfiguration.config

App_Config/Include/Social

Picture 204

Solr configuration

If you use Solr as your search and indexing provider, first ensure that you have enabled all Solr configuration files required on a content delivery server. If you use multiple cores, no further configuration is necessary.

It is no longer necessary to store each default index in a separate Solr core. However, for optimal performance this approach is preferred. If you store each default index in a separate Solr core the names of these cores will match the names of the Sitecore indexes.

Solr cores required on a content delivery server:

  • sitecore_core_index
  • sitecore_web_index
  • sitecore_fxm_web_index
  • sitecore_marketing_asset_index_web
  • social_messages_web

Note

Multiple Solr cores may improve the performance of your search and indexing. For example, you should use separate cores for each index in a production environment and only share indexes on a single core in a development environment. The Solr website provides more detailed guidance and advice when configuring Solr.

Renaming Solr cores

You can change the default Solr core names to your own custom names and can also store several Sitecore indexes in a shared Solr core.

If you want to change the default Solr core names and use your own custom names, then you also need to change the names in each Sitecore Solr configuration file.

To set a Solr core for a Sitecore index:

  1. In the App_Config\Include folder, open the configuration file where the Sitecore index is declared. For example, in the Sitecore.ContentSearch.Solr.Index.Core.config file.
  2. Navigate to the section where the index is declared: configuration/sitecore/contentSearch/configuration/indexes/:
    <index id="..." type="Sitecore.ContentSearch.SolrProvider.SolrSearchIndex, 
     Sitecore.ContentSearch.SolrProvider">
       <param desc="name">$(id)</param>
       <param desc="core">$(id)</param>
  3. Change value of the core parameter to the custom name of the Solr core you want to use.

    Follow the same procedure for each Solr configuration file where you want to change the Solr core name.

Send feedback about the documentation to docsite@sitecore.net.