A key function of StoreFront that we see being used extensively in the field is the ability de-duplicate identical resources across multiple farms/sites to present users with a single application or desktop icon, instead of multiple copies of the same resource – commonly called resource aggregation or multi-site settings.
Two years ago, I posted some examples of how to configure resource aggregation with StoreFront to meet different requirements (such as identical versus non-identical farms/sites). At the time, these settings were only configurable by editing a web.config file, which was ripe for typos and misconfigurations.
Now, it’s two years later and, of course, things have changed: many of these settings have been moved into the console (as of 3.5) and we added a new setting to load balance non-identical sites (as of 3.6), so I figured it was time (or even past time) for an update to explore these new options and help decipher the impact of various checkboxes now exposed in the console.
The resource aggregation settings available in the console are accessible through the Manage Delivery Controllers option in the Action pane of the Store. If you define more than two farms/sites, the “Configure” option at the bottom of the window will automatically become enabled.
If choose to “Configure,” you will see a window prompting you to configure user farm mapping and/or resource aggregation. Note that you cannot just “aggregate resources” without defining a user group – you must also “map users to controllers” before saving the configuration (if you want the resource aggregation to apply to all users, you can choose to map “Everyone”).
Once you have defined a user group that this configuration should apply to, select the aggregate resources link and you will see the following screen to select which sites will be configured for aggregation. Check the box next to the sites that contain identical resources and select Aggregate. Note that if you want to define multiple, distinct aggregation groups, this must still be done by editing the web.config file – it is not yet possible via the GUI.
In version 3.6, there are also two new key options at the bottom, which can be enabled together or individually:
- Controllers publish identical resources: This setting places the farms in the same “equivalent farm set.” No new functionality here, but again, if you want to configure more than one equivalent farm set, you have to edit the web.config file – you cannot do it via the GUI.
- Load balance resources across controllers: This setting either load balances sessions across the farms or configures them for failover order. The ability to do this without requiring the two farms/sites to be 100% identical is a new feature of 3.6 that was a significant limitation before. Previously, if two sites were non-identical but with some overlapping resources, configuring them for aggregation meant that the aggregated resources were automatically launched in failover order. Load balancing was limited to identical sites.
To take advantage of the new “load balancing of non-identical sites” 3.6 feature, check the “load balance” option and leave the “identical resources option unchecked as shown below.
This results in the following settings being written to the web.config file within the Store directory. We can see that in order to accomplish this new configuration, an “identical” parameter was added that specifies whether the listed sites are identical or not. If set to false, identical resources will be aggregated (and load balanced) but unique resources from each site will still be displayed.
<equivalentFarmSets>
<clear />
<equivalentFarmSet name=”EFS_0″ loadBalanceMode=”LoadBalanced” identical=”false” aggregationGroup=”DefaultAggregationGroup”>
<primaryFarmRefs>
<clear />
<farm name=”Farm1″ />
<farm name=”Farm2″ />
</primaryFarmRefs>
<backupFarmRefs>
<clear />
</backupFarmRefs>
</equivalentFarmSet>
</equivalentFarmSets>
The other three combinations of these settings result in configurations that were previously possible, but for completeness:
Checking only the “identical resources” option results in an equivalent farm set with identical sites configured for failover order:
<equivalentFarmSets>
<clear />
<equivalentFarmSet name=”EFS_0″ loadBalanceMode=”Failover” identical=”true” aggregationGroup=”DefaultAggregationGroup”>
<primaryFarmRefs>
<clear />
<farm name=”Farm1″ />
<farm name=”Farm2″ />
</primaryFarmRefs>
<backupFarmRefs>
<clear />
</backupFarmRefs>
</equivalentFarmSet>
</equivalentFarmSets>
Checking both options results in an equivalent farm set with identical sites configured for load balanced order:
<equivalentFarmSets>
<clear />
<equivalentFarmSet name=”EFS_0″ loadBalanceMode=”LoadBalanced” identical=”true” aggregationGroup=”DefaultAggregationGroup”>
<primaryFarmRefs>
<clear />
<farm name=”Farm1″ />
<farm name=”Farm2″ />
</primaryFarmRefs>
<backupFarmRefs>
<clear />
</backupFarmRefs>
</equivalentFarmSet>
</equivalentFarmSets>
And lastly, leaving both settings unchecked results in an aggregation group with two separate equivalent farm sets:
<equivalentFarmSets>
<clear />
<equivalentFarmSet name=”EFS_0″ loadBalanceMode=”Failover” identical=”false”
aggregationGroup=”DefaultAggregationGroup”>
<primaryFarmRefs>
<clear />
<farm name=”Farm1″ />
</primaryFarmRefs>
<backupFarmRefs>
<clear />
</backupFarmRefs>
</equivalentFarmSet>
<equivalentFarmSet name=”EFS_1″ loadBalanceMode=”Failover” identical=”false”
aggregationGroup=”DefaultAggregationGroup”>
<primaryFarmRefs>
<clear />
<farm name=”Farm2″ />
</primaryFarmRefs>
<backupFarmRefs>
<clear />
</backupFarmRefs>
</equivalentFarmSet>
</equivalentFarmSets>
Hope this helps answer some questions for those of you keeping up with the latest StoreFront releases.