Receiver Storefront – adding a server to a server group

As I’m going through high availability architecture design for some customer with CloudGateway features, Receiver Storefront, I wanted to try in my XenServer @ home lab the “Join existing server group” option build in Receiver Storefront when you launch it for the first time.

My first server already setup is SUOMIWEB02 and I want to install Receiver Storefront on the server SUOMIWEB01 which actually host my WebInterface 5.4. Since Receiver Storefront 1.1 you can install it on the same server as the WebInterface (for migration purpose). You can find bellow a brief description about what’s new in the 1.1 version.

What’s New in Receiver Storefront 1.1

Pass-through authentication to AppController. Once logged on to Citrix Receiver or Access Gateway, users can access Web and software-as-a-service (SaaS) applications through AppController without needing to authenticate again. For more information, see Planning Your Receiver Storefront Deployment.

Default support for legacy clients. When you create a new store, access for older clients that support Web Interface XenApp Services sites is enabled by default. For more information, see Configuring Stores.

Installation alongside Web Interface. Receiver Storefront can be hosted on the same Microsoft Internet Information Services (IIS) instance as Web Interface. For more information, see Installing and Setting Up Receiver Storefront.

Other Features

High availability. You can group your Receiver Storefront servers for increased scalability and fault tolerance. For more information, see Planning Your Receiver Storefront Deployment.

Application synchronization. Subscribed desktops and applications follow users from device to device so that they do not need to subscribe to the same resources each time they use a different device. For more information, see Planning Your Receiver Storefront Deployment.

Automatically provisioned applications. You can automatically subscribe all users to a core set of applications. For more information, see Integrating Receiver Storefront into Your Environment.

One-click client configuration. You can configure Citrix Receiver for your users by making provisioning files available. For more information, see Configuring Stores.

I won’t explain the installation process again, it’s very simple and you can still check it here if you need it : http://www.archy.net/2011/12/31/web-interface-moving-forward-to-receiver-strorefront/

Let’s focus on the server I want to add to my existing setup, 1 server hosting Storefront Receiver with an external SQL database.

This is the step by step how to you need to follow to do so :

On the new Receiver Strorefront (SUOMIWEB01) server :

On the existing Receiver Strorefront (SUOMIWEB02) server :

On the new Receiver Strorefront (SUOMIWEB01) server :

On the existing Receiver Strorefront (SUOMIWEB02) server

The two servers are now part of the same Receiver Storefront group, now you need to synchronize them, to do so, you need to follow the next step on the NEW Receiver Storefront server :

Now everything is ready. you need to think how to load balance them, Microsoft NLB or another load balancer appliance (NetScaler for example)

Of course I had some issue during this simple process because I used my “old” WebInterface 5.4 server to host the new Receiver Storefront server… The synchronization was failing…

and I had 3 error messages in the event log of the new server I was trying to add to the Receiver Storefront group :

Log Name:      Citrix Delivery Services
Source:        Citrix Configuration Replication Service
Date:          4/21/2012 10:17:31 PM
Event ID:      1
Task Category: (2850)
Level:         Error
Keywords:      Classic
User:          N/A
Computer:      SUOMIWEB01.SUOMI.INC
Description:
 
Citrix.DeliveryServices.PowerShell.Command.Runner.Exceptions.PowerShellExecutionException, Citrix.DeliveryServices.PowerShell.Command.Runner, Version=2.1.0.0, Culture=neutral, PublicKeyToken=e8b77d454fa2a856
An error occured running the command: 'Add-DSFeatureInstances'
 
System.Management.Automation.ActionPreferenceStopException, System.Management.Automation, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35
Command execution stopped because the preference variable "ErrorActionPreference" or common parameter is set to Stop: Exception of type 'Citrix.DeliveryServices.Framework.Web.Deployment.Exceptions.WebApplicationAlreadyExists' was thrown.
   at System.Management.Automation.Internal.PipelineProcessor.SynchronousExecuteEnumerate(Object input, Hashtable errorResults, Boolean enumerate)
   at System.Management.Automation.PipelineNode.Execute(Array input, Pipe outputPipe, ArrayList& resultList, ExecutionContext context)
   at System.Management.Automation.StatementListNode.ExecuteStatement(ParseTreeNode statement, Array input, Pipe outputPipe, ArrayList& resultList, ExecutionContext context)
 
Event Xml:
<Event xmlns="http://schemas.microsoft.com/win/2004/08/events/event">
  <System>
    <Provider Name="Citrix Configuration Replication Service" />
    <EventID Qualifiers="0">1</EventID>
    <Level>2</Level>
    <Task>2850</Task>
    <Keywords>0x80000000000000</Keywords>
    <TimeCreated SystemTime="2012-04-21T20:17:31.000000000Z" />
    <EventRecordID>85</EventRecordID>
    <Channel>Citrix Delivery Services</Channel>
    <Computer>SUOMIWEB01.SUOMI.INC</Computer>
    <Security />
  </System>
  <EventData>
    <Data>
Citrix.DeliveryServices.PowerShell.Command.Runner.Exceptions.PowerShellExecutionException, Citrix.DeliveryServices.PowerShell.Command.Runner, Version=2.1.0.0, Culture=neutral, PublicKeyToken=e8b77d454fa2a856
An error occured running the command: 'Add-DSFeatureInstances'
 
System.Management.Automation.ActionPreferenceStopException, System.Management.Automation, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35
Command execution stopped because the preference variable "ErrorActionPreference" or common parameter is set to Stop: Exception of type 'Citrix.DeliveryServices.Framework.Web.Deployment.Exceptions.WebApplicationAlreadyExists' was thrown.
   at System.Management.Automation.Internal.PipelineProcessor.SynchronousExecuteEnumerate(Object input, Hashtable errorResults, Boolean enumerate)
   at System.Management.Automation.PipelineNode.Execute(Array input, Pipe outputPipe, ArrayList&amp; resultList, ExecutionContext context)
   at System.Management.Automation.StatementListNode.ExecuteStatement(ParseTreeNode statement, Array input, Pipe outputPipe, ArrayList&amp; resultList, ExecutionContext context)
</Data>
  </EventData>
</Event>
Log Name:      Citrix Delivery Services
Source:        Citrix Configuration Replication Service
Date:          4/21/2012 10:17:31 PM
Event ID:      12
Task Category: (2801)
Level:         Error
Keywords:      Classic
User:          N/A
Computer:      SUOMIWEB01.SUOMI.INC
Description:
Failure to notify of configuration update.
Citrix.DeliveryServices.PowerShell.Command.Runner.Exceptions.PowerShellExecutionException, Citrix.DeliveryServices.PowerShell.Command.Runner, Version=2.1.0.0, Culture=neutral, PublicKeyToken=e8b77d454fa2a856
An error occured running the command: 'Add-DSFeatureInstances'
   at Citrix.DeliveryServices.PowerShell.Command.Runner.PowerShellCommandRunner.RunCommand(IPowerShellCommand command)
   at Citrix.DeliveryServices.ConfigurationReplication.PowerShell.ConfigurationWriterBL.AddFeatureInstances(List`1 instancesToCreate, List`1 featureClasses)
   at Citrix.DeliveryServices.ConfigurationReplication.BL.Synchronisation.ConfigurationSync.SynchroniseInstances(FeatureInstancesInfo instances)
   at Citrix.DeliveryServices.ConfigurationReplication.BL.Synchronisation.ConfigurationSyncController.Update(Guid primarySynchronisationLevel)
   at Citrix.DeliveryServices.ConfigurationReplication.BL.Synchronisation.ConfigurationSyncController.UpdateHostConfiguration(Guid synchronisationLevel, IConfigurationSync sync, IConfigurationReplication proxy, IPersistServiceState store)
   at Citrix.DeliveryServices.ConfigurationReplication.BL.Synchronisation.ConfigurationSyncController.UpdateHostConfiguration(Guid synchronisationLevel, String proxyEndpoint)
   at Citrix.DeliveryServices.ConfigurationReplication.WCF.ConfigurationReplication.<>c__DisplayClass3.<BeginUpdateConfiguration>b__1(Object asr)
 
System.Management.Automation.ActionPreferenceStopException, System.Management.Automation, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35
Command execution stopped because the preference variable "ErrorActionPreference" or common parameter is set to Stop: Exception of type 'Citrix.DeliveryServices.Framework.Web.Deployment.Exceptions.WebApplicationAlreadyExists' was thrown.
   at System.Management.Automation.Internal.PipelineProcessor.SynchronousExecuteEnumerate(Object input, Hashtable errorResults, Boolean enumerate)
   at System.Management.Automation.PipelineNode.Execute(Array input, Pipe outputPipe, ArrayList& resultList, ExecutionContext context)
   at System.Management.Automation.StatementListNode.ExecuteStatement(ParseTreeNode statement, Array input, Pipe outputPipe, ArrayList& resultList, ExecutionContext context)
 
Event Xml:
<Event xmlns="http://schemas.microsoft.com/win/2004/08/events/event">
  <System>
    <Provider Name="Citrix Configuration Replication Service" />
    <EventID Qualifiers="0">12</EventID>
    <Level>2</Level>
    <Task>2801</Task>
    <Keywords>0x80000000000000</Keywords>
    <TimeCreated SystemTime="2012-04-21T20:17:31.000000000Z" />
    <EventRecordID>86</EventRecordID>
    <Channel>Citrix Delivery Services</Channel>
    <Computer>SUOMIWEB01.SUOMI.INC</Computer>
    <Security />
  </System>
  <EventData>
    <Data>Failure to notify of configuration update.
Citrix.DeliveryServices.PowerShell.Command.Runner.Exceptions.PowerShellExecutionException, Citrix.DeliveryServices.PowerShell.Command.Runner, Version=2.1.0.0, Culture=neutral, PublicKeyToken=e8b77d454fa2a856
An error occured running the command: 'Add-DSFeatureInstances'
   at Citrix.DeliveryServices.PowerShell.Command.Runner.PowerShellCommandRunner.RunCommand(IPowerShellCommand command)
   at Citrix.DeliveryServices.ConfigurationReplication.PowerShell.ConfigurationWriterBL.AddFeatureInstances(List`1 instancesToCreate, List`1 featureClasses)
   at Citrix.DeliveryServices.ConfigurationReplication.BL.Synchronisation.ConfigurationSync.SynchroniseInstances(FeatureInstancesInfo instances)
   at Citrix.DeliveryServices.ConfigurationReplication.BL.Synchronisation.ConfigurationSyncController.Update(Guid primarySynchronisationLevel)
   at Citrix.DeliveryServices.ConfigurationReplication.BL.Synchronisation.ConfigurationSyncController.UpdateHostConfiguration(Guid synchronisationLevel, IConfigurationSync sync, IConfigurationReplication proxy, IPersistServiceState store)
   at Citrix.DeliveryServices.ConfigurationReplication.BL.Synchronisation.ConfigurationSyncController.UpdateHostConfiguration(Guid synchronisationLevel, String proxyEndpoint)
   at Citrix.DeliveryServices.ConfigurationReplication.WCF.ConfigurationReplication.&lt;&gt;c__DisplayClass3.&lt;BeginUpdateConfiguration&gt;b__1(Object asr)
 
System.Management.Automation.ActionPreferenceStopException, System.Management.Automation, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35
Command execution stopped because the preference variable "ErrorActionPreference" or common parameter is set to Stop: Exception of type 'Citrix.DeliveryServices.Framework.Web.Deployment.Exceptions.WebApplicationAlreadyExists' was thrown.
   at System.Management.Automation.Internal.PipelineProcessor.SynchronousExecuteEnumerate(Object input, Hashtable errorResults, Boolean enumerate)
   at System.Management.Automation.PipelineNode.Execute(Array input, Pipe outputPipe, ArrayList&amp; resultList, ExecutionContext context)
   at System.Management.Automation.StatementListNode.ExecuteStatement(ParseTreeNode statement, Array input, Pipe outputPipe, ArrayList&amp; resultList, ExecutionContext context)
</Data>
  </EventData>
</Event>
Log Name:      Citrix Delivery Services
Source:        Citrix Configuration Replication Service
Date:          4/21/2012 10:17:31 PM
Event ID:      19
Task Category: (2801)
Level:         Error
Keywords:      Classic
User:          N/A
Computer:      SUOMIWEB01.SUOMI.INC
Description:
Failed to get the end status of the sever configuration update.
System.ServiceModel.FaultException, System.ServiceModel, Version=3.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
An error occured running the command: 'Add-DSFeatureInstances'
   at Citrix.DeliveryServices.ConfigurationReplication.WCF.ConfigurationReplication.EndUpdateConfiguration(IAsyncResult asyncResult)
 
Event Xml:
<Event xmlns="http://schemas.microsoft.com/win/2004/08/events/event">
  <System>
    <Provider Name="Citrix Configuration Replication Service" />
    <EventID Qualifiers="0">19</EventID>
    <Level>2</Level>
    <Task>2801</Task>
    <Keywords>0x80000000000000</Keywords>
    <TimeCreated SystemTime="2012-04-21T20:17:31.000000000Z" />
    <EventRecordID>88</EventRecordID>
    <Channel>Citrix Delivery Services</Channel>
    <Computer>SUOMIWEB01.SUOMI.INC</Computer>
    <Security />
  </System>
  <EventData>
    <Data>Failed to get the end status of the sever configuration update.
System.ServiceModel.FaultException, System.ServiceModel, Version=3.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
An error occured running the command: 'Add-DSFeatureInstances'
   at Citrix.DeliveryServices.ConfigurationReplication.WCF.ConfigurationReplication.EndUpdateConfiguration(IAsyncResult asyncResult)
</Data>
  </EventData>
</Event>

If you read carefully, an existing webapplication was existing causing an issue, and when I checked my existing and the new server C:\inetpub\wwwroot\Citrix and I had the PNAgent directory on both side. So I just wen to disable the PNAgent legacy feature on the existing Receiver Storefront server and the synchronization went fine. If I need to enable the PNAgent legacy feature again, I will need to change the directory of the PNAgent service site on the “old” WebInterface 5.4. If you add a brand new server to an existing configuration you want have this issue.

Resources :
Receiver Storefront 1.1 eDocs : [link]
Receiver Storefront 1.1 download : [link]

Post author