使用 SQL Server 复制设置异地冗余

重要

如果你要创建一个 AD FS 场并使用 SQL Server 来存储配置数据,可以使用 SQL Server 2008 或更高版本。

如果要使用 SQL Server 作为 AD FS 配置数据库,则可以使用 SQL Server 复制为 AD FS 场设置异地冗余。 异地冗余在两个地理上相隔很远的站点之间复制数据,以便应用程序可以从一个站点切换到另一个站点。 这样一来,如果一个站点发生故障,仍可以在第二个站点上获取所有配置数据。 有关详细信息,请参阅使用 SQL Server 的联合服务器场中的“SQL Server 异地冗余”部分。

先决条件

安装并配置 SQL 服务器场。 有关详细信息,请参阅 https://technet.microsoft.com/evalcenter/hh225126.aspx。 在初始 SQL Server 上,确保 SQL Server 代理服务正在运行并设置为自动启动。

为异地冗余创建第二个(副本)SQL Server

  1. 安装 SQL Server(有关详细信息,请参阅 https://technet.microsoft.com/evalcenter/hh225126.aspx)。 将生成的 CreateDB.sql 和 SetPermissions.sql 脚本文件复制到副本 SQL Server。

  2. 确保 SQL Server 代理服务正在运行并设置为自动启动

  3. 在主 AD FS 节点上运行 Export-AdfsDeploymentSQLScript,以创建 CreateDB.sql 和 SetPermissions.sql 文件。 例如:PS:\>Export-AdfsDeploymentSQLScript -DestinationFolder . –ServiceAccountName CONTOSO\gmsa1$. 显示如何在主 AD FS 节点上运行 Export-AdfsDeploymentSQLScript 的屏幕截图。

  4. 将脚本复制到辅助服务器。 在 SQL Management Studio 中打开 CreateDB.sql 脚本,然后单击“执行”显示在 SQL Management Studio 中打开 CreateDB.sql 脚本的屏幕截图。

  5. 在 SQL Management Studio 中打开 SetPermissions.sql 脚本,然后单击“执行”显示在 SQL Management Studio 中打开 SetPermissions.sql 脚本的屏幕截图。

注意

还可以从命令行使用以下命令。

c:\>sqlcmd –i CreateDB.sql

c:\>sqlcmd –i SetPermissions.sql

在初始 SQL Server 上创建发布服务器设置

  1. 在 SQL Server Management Studio 的“复制”下,右键单击“本地发布”,然后选择“新建发布...”显示“新建发布”菜单选项的屏幕截图。

  2. 在“新建发布向导”屏幕上,单击“下一步”。
    显示“新建发布向导”屏幕的屏幕截图。

  3. 在“分发服务器”页上,选择本地服务器作为分发服务器,然后单击“下一步”显示在何处选择本地服务器作为分发服务器的屏幕截图。

  4. 在“快照”文件夹页上,输入“\\SQL1\repldata”代替默认文件夹。 (注意:你可能必须自行创建此共享)。 显示在何处输入默认“快照”文件夹的路径的屏幕截图。

  5. 选择“AdfsConfigurationV3”作为发布数据库,然后单击“下一步”显示在何处选择“AdfsConfigurationV3”作为发布数据库的屏幕截图。

  6. 在“发布类型”中,选择“合并发布”并单击“下一步”显示操作位置的屏幕截图

  7. 在“订阅服务器类型”中,选择“SQL Server 2008 或更高版本”并单击“下一步”显示在何处选择“SQL Server 2008 或更高版本”的屏幕截图。

  8. “项目 ”页上,选择“ ”节点以选择所有表,然后 取消选中 SyncProperties 表(不应复制此表)
    显示清除 SyncProperties (IdentityServerPolicy) 复选框的位置的屏幕截图。

  9. 在“文章”页上,选择“用户定义的函数”节点以选择所有用户定义的函数,然后单击“下一步”显示在何处选中“用户定义的函数”复选框的屏幕截图。

  10. 在“文章问题”页上单击“下一步”显示“文章问题”屏幕的屏幕截图。

  11. 在“筛选表行”页上,单击“下一步”显示“筛选表行”屏幕的屏幕截图。

  12. 在“快照代理”页上,选择默认值“即时”和“14 天”,然后单击“下一步”显示快照代理屏幕的屏幕截图。
    可能需要为 SQL 代理创建域帐户。 使用为域帐户 CONTOSO\sqlagent 配置 SQL 登录名中的步骤为此新 AD 用户创建 SQL 登录名并分配特定的权限。

  13. 在“代理安全性”页上,单击“安全设置”并输入为 SQL 代理创建的域帐户(不是 GMSA)的用户名/密码,然后单击“确定”。 单击 “下一步”显示在何处输入域帐户的用户名和密码的屏幕截图。

  14. 在“向导操作”页上,单击“下一步”显示“向导操作”屏幕的屏幕截图。

  15. 在“完成向导”页上,为发布输入一个名称,然后单击“完成”显示在何处为发布输入名称的屏幕截图。

  16. 创建发布后,应会看到成功状态。 单击 “关闭”显示发布成功完成的屏幕截图。

  17. 返回 SQL Server Management Studio,右键单击新的发布,然后单击“启动复制监视器”显示“启动复制监视器”菜单选项的屏幕截图。

在副本 SQL Server 上创建订阅设置

确保已按如上所述在初始 SQL Server 上创建发布者设置,然后完成以下过程:

  1. 在副本 SQL Server 上,从 SQL Server Management Studio 的“复制”下,右键单击“本地订阅”,然后选择“新建订阅...”显示选择“新建订阅”的位置的屏幕截图。

  2. 在“新建订阅向导”页上,单击“下一步”显示“新建订阅向导”屏幕的屏幕截图。

  3. 在“发布”页上,从下拉列表中选择发布服务器。 展开“AdfsConfigurationV3”,选择前面创建的发布的名称,然后单击“下一步”显示在何处展开“AdfsConfigurationV3”并选择创建的发布的名称的屏幕截图。

  4. 在“合并代理位置”页上,选择“在其订阅服务器上运行每个代理(拉取订阅)”(默认设置),然后单击“下一步”显示在其订阅服务器上运行每个代理(请求订阅)选项的屏幕截图。
    这与下面的订阅类型一起确定冲突解决逻辑。 有关详细信息,请参阅检测并解决合并复制冲突

  5. 在“订阅服务器”页上,选择“AdfsConfigurationV3”作为订阅服务器数据库,然后单击“下一步”显示“订阅服务器”屏幕的屏幕截图。

  6. 在“合并代理安全性”页上,单击“...”并使用省略号图标框输入为 SQL 代理创建的域帐户(不是 GMSA)的用户名和密码,然后单击“下一步”显示“合并代理安全性”屏幕的屏幕截图。

  7. 在“同步计划”上,选择“持续运行”并单击“下一步”显示在何处选择“持续运行”的屏幕截图。

  8. 在“初始化订阅”中,单击“下一步”显示“初始化订阅”屏幕的屏幕截图。

  9. 在“订阅类型”中,选择“客户端”并单击“下一步”

    此处此处介绍此选项的含义。 本质上,我们采用简单的“第一个连接到发布服务器者优先”的冲突解决逻辑,并且不需要重新发布到其他订阅服务器。 显示“订阅类型”屏幕的屏幕截图。

  10. 在“向导操作”页上,确保已选中“创建订阅”,然后单击“下一步”显示在何处确认是否已选择“创建订阅”选项的屏幕截图。

  11. 在“完成向导”页上,单击“完成”显示“完成向导”屏幕的屏幕截图。

  12. 订阅完成创建过程后,应会看到成功消息。 单击“关闭” 。 设置异地冗余

验证初始化和复制过程

  1. 在主 SQL 服务器上,右键单击“复制”节点,然后单击“启动复制监视器”

  2. 在“复制监视器”中单击发布

  3. 在“所有订阅”选项卡上,右键单击并选择“查看详细信息”

    应该可以在用于初始复制的“操作”下看到许多条目

  4. 此外,可以在“SQL Server 代理\作业”节点下查看计划了哪些作业来执行发布/订阅操作。 只会显示本地作业,因此在故障排除时请务必检查发布服务器和订阅服务器。 右键单击某个作业,然后选择“查看历史记录”以查看执行历史记录和结果

为域帐户 CONTOSO\sqlagent 配置 SQL 登录名

  1. 在主要和副本 SQL Server 上创建名为 CONTOSO\sqlagent(在上述过程中在“代理安全性”页上创建并配置的新域用户的名称)的新登录名

  2. 在 SQL Server 中,右键单击创建的登录名并选择“属性”,然后在“用户映射”选项卡下,将此登录名映射到具有公共和 db_genevaservice 角色的 AdfsConfiguration 和 AdfsArtifact 数据库。 另外,将此登录名映射到分发数据库,并为 distribution 表和 adfsconfiguration 表添加 db_owner 角色。 在主要和副本 SQL Server 上,都可以执行此操作。 有关详细信息,请参阅 复制代理安全模式

  3. 为相应的域帐户授予对配置为分发服务器的共享的读写权限。 确保对共享权限和本地文件权限都设置读写权限。

将 AD FS 节点配置为指向 SQL Server 副本场

设置异地冗余后,可以通过 AD FS 配置向导 UI 或 Windows PowerShell,使用标准的 AD FS“加入”场功能,将 AD FS 场节点配置为指向副本 SQL Server 场。

如果使用 AD FS 配置向导 UI,请选择“将联合服务器添加到联合服务器场”。 切勿选择“在联合服务器场中创建第一个联合服务器”

如果使用 Windows PowerShell,请运行 Add-AdfsFarmNode。 切勿运行 Install-AdfsFarm

出现提示时,提供副本 SQL Server 而不是初始 SQL Server 的主机名和实例名