Automated Installation and Configuration (Windows Server AppFabric Caching)
This section explains the steps for automated installation and configuration of the Windows Server AppFabric caching features. In an unattended installation, the user does not see any user-interface, because all options are specified from the command-line. There is a specific sequence of commands required to either add a cache host to a cache cluster or remove a cache host from a cache cluster. This section describes the commands for both scenarios. Note that it is also possible to use the AppFabric Configuration Wizard to configure the caching features with a user interface. For more information on the AppFabric Configuration Wizard, see Configure Windows Server AppFabric.
This section divides the automated installation steps into five tasks:
Install Windows Server AppFabric caching features
Create a new cache cluster
Add a cache host
Remove a cache host
Remove a cache cluster
For PowerShell scripts that automate these steps, see these examples:
Tip
To learn the basics about launching and running Windows PowerShell commands, see Using Windows PowerShell to Manage Windows Server AppFabric Caching Features.
Tip
Although some of the following commands must run locally on the target cache host, Windows PowerShell supports running commands on remote machines. For more information, see Running Remote Commands
Install Windows Server AppFabric caching features
Before creating a new cache cluster or configuring AppFabric caching on a cache host, you must first install the Windows Server AppFabric caching features. For instructions about how to silently install AppFabric, see Automated Installation. The caching features include:
CachingService
CacheClient
CacheAdmin
For example, consider a scenario where the setup binary is named Setup.exe. Note that the actually binary name will vary depending on your chosen platform. The following example shows how to silently install the AppFabric caching features onto a server:
Setup.exe /install /i cachingservice,cacheclient,cacheadmin /l:c:\temp\setup.log
Note in this example, we are also directing the log file to the c:\temp\setup.log. You can examine this log file to investigate the results of the installation.
After AppFabric caching features are installed on a machine, you then need to configure them. The following sections describe the steps necessary for automating this process.
Create a new cache cluster
If you are creating a new cache cluster, you must first call the New-CacheCluster
Windows PowerShell command. When you create a new cache cluster, you must decide where to store the cluster configuration settings. You can choose to use the System.Data.SqlClient provider, the XML provider, or a custom provider. For more information, see Configuration Model.
The following example creates a small cache cluster. It stores the configuration settings on a SQL Server machine named SQLServer1
with an existing database named CacheClusterConfigurationDB
.
New-CacheCluster -Provider System.Data.SqlClient -ConnectionString "Data Source=SQLServer1;Initial Catalog=CacheClusterConfigurationDB;Integrated Security=True" -Size Small
Note
Note that if you use SQL Server database mirroring to increase availability of the cache cluster, you must specify the failover partner in the connection string. For more information, see SQL Server-Based Cluster Configuration.
The following example creates a large cache cluster. It stores the configuration settings in an XML file on a network share named \\Server1\CacheConfigShare
.
New-CacheCluster -Provider XML -ConnectionString "\\Server1\CacheConfigShare" -Size Large
In both examples, the caller must have the adequate permissions on the configuration store location. For System.Data.SqlClient, the caller must be a db_owner on the target database or a member of the sysadmin role on the SQL Server instance. For XML, the caller must have owner permissions on the shared folder.
Add a cache host
To add a cache host to an existing cache cluster, you need to perform the following steps in order:
Command/Step | Description |
---|---|
Register-CacheHost |
Register the cache host with the cache cluster. |
Add-CacheHost |
Configure the cache host to be part of the cache cluster. |
Add-CacheAdmin |
Optionally configure Cache Administration on the current cache host. |
Configure the Firewall |
Allow the AppFabricCachingService service through the firewall. Also allow Remote Service Management. |
Start-CacheHost |
Start the new cache host. |
Register-CacheHost
You use the Register-CacheHost
command to register a cache host with an existing cache cluster. This includes specifying port numbers and the Windows account for the Caching Service. The Provider
and ConnectionString
parameters specify the target cache cluster for the new cache host.
The following example adds the cache host machine, CacheServer1
, to a cache cluster whose configuration store is located in an XML file at the file share \\Server1\CacheConfigShare
. The built-in NT Authority\Network Service
account is specified for the identity of the Caching Service.
Register-CacheHost -Provider XML -ConnectionString "\\Server1\CacheConfigShare" -Account "NT Authority\Network Service" -CachePort 22233 -ClusterPort 22234 -ArbitrationPort 22235 -ReplicationPort 22236 -HostName CacheServer1
Note that for the XML provider, the caller must have full control over the target network share. For the System.Data.SqlClient provider, the caller must have permissions to read, write, create SQL logins, and add permissions to the target database.
Unlike many other configuration commands, the Register-CacheHost
command accepts a HostName
parameter, so it can be run remotely.
Add-CacheHost
The Add-CacheHost
command configures the cache host to become part of the existing cache cluster. The Provider
and ConnectionString
parameters specify the target cache cluster for the new cache host.
The following example demonstrates how to call Add-CacheHost
.
Add-CacheHost -Provider XML -ConnectionString "\\Server1\CacheConfigShare" -Account "NT Authority\Network Service"
Note that this command must be run locally on the cache host that is being configured. You must also run this command from an elevated Windows PowerShell session with administrator privileges.
Warning
You must supply a value for the Account
parameter for the Add-CacheHost
command. If you do not specify an account, permissions will not be properly configured for the Caching Service. Note that in a domain environment with security enabled, the NT Autority\Network Service
account must be used.
Add-CacheAdmin
You can optionally use the Add-CacheAdmin
command to configure the Cache Administration feature on a cache host. This gives you the ability to administer the cache cluster from this machine by using Windows PowerShell commands. The Cache Administration feature must be installed on the machine.
The following example demonstrates how to call Add-CacheAdmin
.
Add-CacheAdmin -Provider XML -ConnectionString "\\Server1\CacheConfigShare"
Note that this command must be run locally on the cache host that is being configured. You must also run this from an elevated Windows PowerShell session with administrator privileges.
Configure the Firewall
In order to successfully use the AppFabric caching features, you must configure the for the DistributedCacheService.exe service. By default this service installs to the C:\Windows\System32\AppFabric directory.
If you are using the Windows firewall, you can enable a firewall policy group that automatically gets installed with AppFabric. The following Windows Powershell commands enable the firewall policy group named "Windows Server AppFabric: AppFabric Caching Service". You should also enable the "Remote Service Management" firewall rules to enable the AppFabric Caching Service to be controlled remotely.
netsh advfirewall firewall set rule group="Windows Server AppFabric: AppFabric Caching Service" new enable=Yes
netsh advfirewall firewall set rule name="Remote Service Management (RPC)" profile=domain new enable=Yes
netsh advfirewall firewall set rule name="Remote Service Management (RPC-EPMAP)" profile=domain new enable=Yes
netsh advfirewall firewall set rule name="Remote Service Management (NP-In)" profile=domain new enable=Yes
Start-CacheHost
If you want to enable the new cache host to participate in the cache cluster, you must start the cache host. If the cache cluster is down, you must start the entire cache cluster. The cache cluster is down if all of the hosts are down. This can be assessed by calling Get-CacheHost
with no parameters.
Get-CacheHost
If all the hosts show a service status of DOWN
, then start the cache cluster with the Start-CacheCluster
command.
Start-CacheCluster
However, if at least one host has a service status of UP
, then the cache cluster is running. In this case, use the Start-CacheHost
command.
Start-CacheHost -Hostname CacheServer2 -CachePort 22233
Note that after a cache host machine reboots, the Caching Service does not start automatically; you should use either Start-CacheHost
or Start-CacheCluster
depending on the state of the cache cluster.
You must also run this command from an elevated Windows PowerShell session with administrator privileges.
Warning
Always use the Windows PowerShell commands to start and stop the Caching Service. Never start or stop the AppFabricCachingService service directly from the Services program in Administrative Tools.
Remove a cache host
To remove a cache host from a cache cluster, you need to perform the following steps in order.
Command/Step | Description |
---|---|
Stop-CacheHost |
Stop the cache host if it is running. |
Unregister-CacheHost |
Unregister the cache host with the cache cluster. |
Remove-CacheHost |
Remove the cache host configuration from the machine. |
Remove-CacheAdmin |
Optionally remove the configuration of the Cache Administration feature. |
Configure the Firewall |
Remove any firewall exceptions for the Caching Service. |
Stop-CacheHost
If you want to remove a cache host from an existing cluster, you must first stop the cache host. You can determine whether the cache host is running by calling the Get-CacheHost
command. The following example demonstrates how to view the cache host information for the local cache host.
Get-CacheHost -HostName localhost -CachePort 22233
Although the previous command gives you information about a specific cache host, you should always consider the status of the entire cache cluster before stopping any one cache host. This can be done by calling Get-CacheHost
with no parameters.
Get-CacheHost
The following shows example output from this command for a two-server cache cluster.
HostName : CachePort Service Name Service Status Version Info
-------------------- ------------ -------------- ------------
CacheServer1:22233 AppFabricCachingService UP 1 [1,1][1,1]
CacheServer2:22233 AppFabricCachingService UP 1 [1,1][1,1]
In this example, both CacheServer1
and CacheServer2
are running. You can attempt to stop one of these cache hosts and leave the cache cluster operational through the other cache host. The following example shows how to stop CacheServer2
with the Stop-CacheHost
command.
Stop-CacheHost -HostName CacheServer2 -CachePort 22233
Note that any data cached on the stopped cache host is lost. Also, attempting to stop the cache host will fail if it would result in the loss of quorum for either lead hosts or secondaries. For more information on lead hosts, see Lead Hosts and Cluster Management. For more information on secondaries, see High Availability. In these cases, you must stop the entire cluster with the Stop-CacheCluster
command.
If stopping the cache host were to stop the cache cluster, then use the Stop-CacheCluster
command instead. For example, consider the following sample output from the Get-CacheHost
command.
HostName : CachePort Service Name Service Status Version Info
-------------------- ------------ -------------- ------------
CacheServer1:22233 AppFabricCachingService DOWN 1 [1,1][1,1]
CacheServer2:22233 AppFabricCachingService UP 1 [1,1][1,1]
In this example, CacheServer1
is stopped, and CacheServer2
is running. Stopping CacheServer2
would bring down the cluster. Instead of using the Stop-CacheHost
command to stop CacheServer2
, use the Stop-CacheCluster
command instead.
Stop-CacheCluster
You must run this command from an elevated Windows PowerShell session with administrator privileges.
Unregister-CacheHost
The Unregister-CacheHost
command removes the cache host from the cache cluster.
If this command is run before Remove-CacheHost
, then you are not required to specify values for the Provider
or ConnectionString
parameters. If the command is run locally, you also not required to specify a value for the HostName
parameter.
Unregister-CacheHost -RemoveServicePermissions
The following example unregisters a cache host by specifying the provider, connection string, and hostname. It removes a cache host named CacheServer2
from a cache cluster. This cache cluster uses the System.Data.SqlClient provider, so the connection string is a SQL Server connection string to a database server named SQLServer1
and a configuration database named CacheClusterConfigurationDB
.
Unregister-CacheHost -Provider System.Data.SqlClient -ConnectionString "Data Source=SQLServer1;Initial Catalog=CacheClusterConfigurationDB;Integrated Security=True" + -HostName CacheServer2 -RemoveServicePermissions
Note that for the XML provider, the caller must have full control over the target network share. For the System.Data.SqlClient provider, the caller must have permissions to read, write, remove SQL logins, and remove permissions on the target database.
Unlike many other configuration commands, the Unregister-CacheHost
command accepts a HostName
parameter, so it can be run remotely.
Remove-CacheHost
The Remove-CacheHost
command removes the cache host configuration from the server.
Remove-CacheHost
Note that this command must be run locally on the cache host that is being configured. You must also run this command from an elevated Windows PowerShell session with administrative credentials.
Remove-CacheAdmin
If the Cache Administration feature is configured on the cache host, you can remove it with the Remove-CacheAdmin
command.
Remove-CacheAdmin
Note that this command must be run locally on the cache host that is being configured. You must also run this command from an elevated Windows PowerShell session with administrative credentials.
Configure the Firewall
You should remove or disable any exceptions in the firewall for the Caching Service, DistributedCacheService.exe. If you are using the Windows firewall, you should have previously enabled the installed firewall group "Windows Server AppFabric: AppFabric Caching Service". If so, you can disable this policy group by using the following PowerShell commands. If you also enabled the "Remote Service Management" rules, you can also disable those rules. However, other services or applications may have enabled the "Remote Service Management" rules. In this scenario, you would not disable the "Remote Service Management" rules.
netsh advfirewall firewall set rule group="Windows Server AppFabric: AppFabric Caching Service" new enable=No
netsh advfirewall firewall set rule name="Remote Service Management (RPC)" profile=domain new enable=No
netsh advfirewall firewall set rule name="Remote Service Management (RPC-EPMAP)" profile=domain new enable=No
netsh advfirewall firewall set rule name="Remote Service Management (NP-In)" profile=domain new enable=No
Remove a cache cluster
If you have removed the final cache host from the cluster, you can also choose to remove the cache cluster configuration store. To do this, use the Remove-CacheCluster
command. If the cache cluster uses the XML provider, this command deletes the XML file that contains the configuration settings. If the cache cluster uses the System.Data.SqlClient provider, this command deletes the tables in the specified database. Note that the file share and the database are not removed.
Remove_CacheCluster -Provider System.Data.SqlClient -ConnectionString "Data Source=SQLServer1;Initial Catalog=CacheClusterConfigurationDB;Integrated Security=True"
See Also
Concepts
Deploying and Configuring Windows Server AppFabric Caching Features