基于 SQL Server 的群集配置(Windows Server AppFabric 缓存)

Windows Server AppFabric 提供了使用 SQL Server 数据库存储群集配置设置的选项。AppFabric 配置向导会自动准备用于管理群集配置的目标数据库。然后,AppFabric 将此数据库用作定义缓存群集、缓存主机和命名缓存的主参考点。群集中的所有缓存服务器必须能够访问群集配置数据库。

有关为群集配置存储位置准备 SQL Server 数据库的详细信息,请参阅 Windows Server AppFabric 安装向导 (https://go.microsoft.com/fwlink/?LinkId=169172)。

在 AppFabric 缓存功能的配置期间,可以指定现有 SQL Server 数据库,也可以选择让向导为您在指定的 SQL Server 上创建一个新数据库。群集中的所有缓存服务器必须能够访问群集配置数据库。

Tip技巧
默认情况下,AppFabric 缓存服务不会自动启动。您必须使用管理 Windows Powershell 命令提示符中的 Start-CacheCluster 命令启动该服务。但是,当 SQL Server 用于配置存储时,您可以将每个缓存主机上的该服务更改为自动启动。方法是:在每个缓存服务器上修改服务管理器工具中“AppFabric 缓存服务”的属性,以将启动类型更改为自动。

可用性注意事项

群集配置存储位置可以是分布式缓存系统的单一故障点。出于这个原因,我们建议您采取相应措施来提高存储群集配置设置的 SQL Server 数据库的可用性。一个选项是使用 Microsoft Windows Server 2008 故障转移群集 (https://go.microsoft.com/fwlink/?LinkId=130692)(可能为英文网页)托管缓存群集配置存储位置的“群集”数据库资源。

另一个选项是使用 SQL Server 数据库镜像。有关详细信息,请参阅使用数据库镜像 (https://go.microsoft.com/fwlink/?LinkId=190691)(可能为英文网页)。请注意,使用数据库监控有以下三个要求:

  • 向连接字符串中添加 Failover Partner 属性。

  • 为每个缓存主机添加计算机帐户,作为 SQL Server 在合作伙伴服务器上的登录。例如,如果在 Domain1 域中计算机名称为 CacheServer1,则计算机帐户为 Domain1\CacheServer1$。对于主 SQL Server 来说该操作是自动完成的,但对于故障转移合作伙伴服务器来说,则必须手动完成该操作。

  • 以合作伙伴服务器上镜像配置数据库中用户的身份为每个缓存主机添加计算机帐户。该用户应该具有 db_datareaderdb_datawriter 权限。

如果已配置缓存群集,则可以使用 Windows PowerShell 命令手动修改连接字符串。在每台缓存主机上使用以下步骤:

  1. 打开 Windows PowerShell 命令窗口并运行 Use-CacheCluster 命令。

  2. 运行 Remove-CacheHostRemove-CacheAdmin 命令。

  3. 运行 Add-CacheHost 命令,指定具有 Failover Partner 属性的新连接字符串。例如:

    Add-CacheHost -Provider System.Data.SqlClient -ConnectionString "Data Source=SQLServer1;Initial Catalog=CacheClusterConfigurationDB;Integrated Security=True;Failover Partner=SQLServer2"  -Account "NT Authority\Network Service"
    
  4. 运行 Add-CacheAdmin 命令,指定具有 Failover Partner 属性的新连接字符串。例如:

    Add-CacheAdmin -Provider System.Data.SqlClient -ConnectionString "Data Source=SQLServer1;Initial Catalog=CacheClusterConfigurationDB;Integrated Security=True;Failover Partner=SQLServer2"
    
Tip技巧
可以下载脚本 ChangeConnString.ps1 以自动更改所有缓存主机上的连接字符串。有关详细信息,请参阅 ChangeConnString.ps1 下载

备注

缓存群集管理员需要具有对缓存群集配置存储数据库的 db_owner 权限,才能在故障转移之后在 Windows PowerShell 中运行缓存命令。

权限

所有缓存主机必须具有对承载群集配置数据库的数据库服务器的登录权限。群集配置数据库还必须配置安全设置,以便每个缓存服务器都具有到数据库的 SQL Server 登录以及对该数据库的 db_datareaderdb_datawriterEXECUTE 权限。

备注

安装程序将会尝试自动配置这些权限。请注意,执行安装的人员的安全标识必须具有对 SQL Server 数据库的 db_owner 权限和到 SQL Server 实例的 SQL Server 登录。

如果创建一个 Windows 安全组来管理对缓存配置数据库的访问,则只需设置一次 SQL Server 登录和数据库权限。例如,可以设置名为 ClusterACacheServers 的 Windows 安全组以指示有权成为缓存群集 ClusterA 一部分的缓存服务器。

在创建 ClusterACacheServers 安全组之后,授予该组适用缓存服务器成员身份的域计算机帐户(例如,domain\computername$)。然后授予 ClusterACacheServers 安全组到数据库的 SQL Server 登录,以及对数据库的 db_datawriterdb_datareaderEXECUTE 权限。完成此设置之后,每次在向缓存群集添加服务器时,只需将新服务器的域计算机帐户添加到该安全组即可。

数据库结构

在您首次使用基于 SQL Server 的配置选项配置 AppFabric 缓存功能时,该配置工具会在指定数据库中创建许多表格。还有一些为群集的内部操作添加的存储过程。

备注

群集配置数据库中的数据无法进行手动编辑。为了帮助确保群集的持续运行,仅缓存主机和安装程序写入数据库。

数据库安全性

在连接字符串中使用密码存在安全风险,因此,应尽可能避免。连接字符串以明文形式存储在每个缓存服务器上的缓存主机配置文件 (DistributedCacheService.exe.config) 中。为了最大程度地降低这种风险,应使用集成安全性建立与 SQL Server 的可信连接。通过使用这种方法,您无需将密码存储在连接字符串中。如果没有集成安全性,将需要在连接字符串中使用明文密码。帮助确保连接字符串安全的最佳方法如下所示(按风险逐渐增加的方式排列):

  1. 使用集成安全性。

  2. 使用密码保护连接字符串的安全,并最小化连接字符串的传送。

  3. 最小化所有连接字符串的生存期和接触点。

数据库连接

在您使用 SQL Server 2005 或更新数据库存储群集配置设置时,请确保将服务器配置为允许足够的并发连接,以能够容纳群集中的所有缓存主机。不支持群集中缓存主机数超出可用并发连接数。

服务器可能配置为未对并发连接设置任何限制,但是,数据库管理员还可能出于管理或其他原因将该设置配置得非常低。在这种情况下,在将缓存主机添加到缓存群集之前,应确保服务器可以支持其他连接。

另请参阅

概念

基于共享文件夹的群集配置(Windows Server AppFabric 缓存)
群集配置设置(Windows Server AppFabric 缓存)
客户端配置选项(Windows Server AppFabric 缓存)
配置缓存群集(Windows Server AppFabric 缓存)
开发缓存客户端(Windows Server AppFabric 缓存)

  2011-12-05