使用 AlwaysOn 可用性组设置 AD FS 部署

高度可用的异地分布式拓扑提供:

  • 消除单一故障点:使用故障转移功能,即使全球某个数据中心发生故障,也可以实现高度可用的 AD FS 基础结构。
  • 改进了性能:可以使用建议的部署来提供高性能 AD FS 基础结构

可以为高度可用的异地分布式方案配置 AD FS。 以下指南将概述 AD FS 与 SQL Always On 可用性组,并提供部署注意事项和指南。

概述 - AlwaysOn 可用性组

有关 AlwaysOn 可用性组的详细信息,请参阅 AlwaysOn 可用性组概述(SQL Server)

从 AD FS SQL Server 场节点的角度来看,AlwaysOn 可用性组将单个 SQL Server 实例替换为策略/项目数据库。  客户端(AD FS 安全令牌服务)使用可用性组侦听程序连接到 SQL。 下图显示了具有 AlwaysOn 可用性组的 AD FS SQL Server 群集。

使用 SQL 的服务器场

Always On 可用性组 (AG) 是一个或多个一起故障转移的用户数据库。 可用性组由主要可用性副本和一到四个次要副本组成,这些副本通过基于 SQL Server 日志的数据移动进行数据保护维护,而无需共享存储。 每个副本均由 WSFC 的不同节点上的 SQL Server 实例承载。 可用性组和相应的虚拟网络名称注册为 WSFC 群集中的资源。

主副本节点上的可用性组侦听器响应传入客户端请求以连接到虚拟网络名称,并根据连接字符串中的属性,将每个请求重定向到相应的 SQL Server 实例。 在发生故障转移时,并不是将共享物理资源的所有权转移到另一个节点,而是利用 WSFC 在另一 SQL Server 实例上重新配置一个辅助副本,使其成为可用性组的主副本。 然后,将可用性组的虚拟网络名称资源转移到该实例。 在任何给定时刻,只有一个 SQL Server 实例可以托管可用性组数据库的主要副本,所有关联的辅助副本必须分别驻留在单独的实例上,每个实例必须驻留在单独的物理节点上。

注释

如果计算机在 Azure 上运行,请设置 Azure 虚拟机,使侦听器配置能够与 AlwaysOn 可用性组通信。 有关详细信息,请参阅虚拟机:SQL Always On 侦听程序

有关 AlwaysOn 可用性组的其他概述,请参阅 AlwaysOn 可用性组概述(SQL Server)。

注释

如果组织需要跨多个数据中心进行故障转移,建议在每个数据中心创建项目数据库,并启用后台缓存,以减少请求处理期间的延迟。 请按照说明在微调 SQL 和降低延迟时执行此操作。

部署指南

  1. 对于 AD FS 部署的目标,请考虑适合的数据库。 AD FS 使用数据库来存储配置,在某些情况下,与联合身份验证服务相关的事务数据。 可以使用 AD FS 软件来选择内置 Windows 内部数据库(WID)或Microsoft SQL Server 2008 或更高版本以在联合身份验证服务中存储数据。 下表描述了 WID 和 SQL 数据库之间受支持的功能之间的差异。
类别 功能 / 特点 由 WID 支持 由 SQL 支持
AD FS 功能 联合服务器场部署 是的 是的
AD FS 功能 SAML 工件解析。 注意:对于 SAML 应用程序来说,这并不常见 是的
AD FS 功能 SAML/WS 联合身份验证令牌重放检测。 注意:仅当 AD FS 从外部 IDP 接收令牌时才是必需的。 如果 AD FS 不充当联合合作伙伴,则不需要这样做。 是的
数据库功能 使用拉取复制的基本数据库冗余,其中托管数据库只读副本的一个或多个服务器将请求在源服务器(托管该数据库的读/写副本)上所进行的更改
数据库功能 使用高可用性解决方案的数据库冗余,例如群集或镜像(在数据库层) 是的
其他功能 OAuth Authcode 方案 是的 是的

如果你是具有 100 多个信任关系的大型组织,需要向内部用户和外部用户提供对联合应用程序或服务的单一登录访问权限,则建议使用 SQL。

如果您的组织具有 100 个或更少的已配置信任关系,WID 将提供数据和联合服务冗余(在这种情况下,每个联合服务器会将更改复制到同一服务器场中的其他联合服务器)。 WID 不支持令牌重播检测或工件解析,并且最多支持 30 台联合服务器。 有关规划部署的详细信息,请访问 此处

SQL Server 高可用性解决方案

如果使用 SQL Server 作为 AD FS 配置数据库,则可以使用 SQL Server 复制为 AD FS 场设置异地冗余。 异地冗余在两个地理上相隔很远的站点之间复制数据,以便应用程序可以从一个站点切换到另一个站点。 这样一来,如果一个站点发生故障,仍可以在第二个站点上获取所有配置数据。  如果 SQL 是部署目标的适当数据库,请继续学习此部署指南。

本指南将介绍以下内容

  • 部署 AD FS
  • 将 AD FS 配置为使用 AlwaysOn 可用性组
  • 安装故障转移群集角色
  • 运行群集验证测试
  • 启用 Always On 可用性组
  • 备份 AD FS 数据库
  • 创建 AlwaysOn 可用性组
  • 在第二个节点上添加数据库
  • 将可用性副本加入可用性组
  • 更新 SQL 连接字符串

部署 AD FS

注释

如果计算机在 Azure 上运行,则必须以特定方式配置虚拟机,以便侦听器能够与 AlwaysOn 可用性组通信。 有关配置的信息,请参阅 在 Azure SQL Server VM 上为可用性组配置负载均衡器

本部署指南将展示一个包含两个 SQL 服务器的两个节点场作为示例。 若要部署 AD FS,请按照下面的初始链接安装 AD FS 角色服务。 若要针对 AoA 组进行配置,需执行针对该角色的额外步骤。

将 AD FS 配置为使用 AlwaysOn 可用性组

使用 AlwaysOn 可用性组配置 AD FS 场需要对 AD FS 部署过程进行轻微修改。 确保每个服务器实例都运行相同的 SQL 版本。 若要查看 AlwaysOn 可用性组的先决条件、限制和建议的完整列表, 请阅读此处

  1. 必须先创建要备份的数据库,然后才能配置 AlwaysOn 可用性组。 AD FS 在设置和初始配置新 AD FS SQL Server 场的第一个联合身份验证服务节点时创建其数据库。 使用 SQL Server 为现有场指定数据库主机名。 作为 AD FS 配置的一部分,必须指定一个 SQL 连接字符串,因此必须配置第一个 AD FS 场才能直接连接到 SQL 实例(这只是临时的)。 有关配置 AD FS 场(包括使用 SQL Server 连接字符串配置 AD FS 场节点)的具体指南,请参阅 配置联合服务器

指定场

  1. 使用 SSMS 验证与数据库的连接,然后连接到目标数据库主机名。 如果将另一个节点添加到联合服务器场,请连接到目标数据库。
  2. 指定 AD FS 场的 SSL 证书。

指定 ssl 证书

  1. 将场连接到服务帐户或 gMSA。

指定服务帐户

  1. 完成 AD FS 场配置和安装。

注释

必须在域帐户下运行 SQL Server 才能安装 AlwaysOn 可用性组。 默认情况下,它作为本地系统运行。

安装故障转移群集角色

Windows Server 故障转移群集角色提供有关 Windows Server 故障转移群集的详细信息,

  1. 启动“服务器管理器”。
  2. 在“管理”菜单上,选择“添加角色和功能”。
  3. 在“开始之前”页上,选择“下一步”。
  4. 在“选择安装类型”页上,选择“基于角色”或“基于功能”的安装,然后选择“下一步”。
  5. 在“选择目标服务器”页上,选择要在其中安装该功能的 SQL Server,然后选择“下一步”。

目标服务器

  1. 在“选择服务器角色”页上,选择“下一步”。
  2. 在“选择功能”页面上,选中“故障转移群集”复选框。

选择聚类特征

  1. 在“确认安装选择”页上,选择“安装”。 无需为故障转移群集功能重启服务器。
  2. 安装完成后,选择“关闭”。
  3. 在你想要添加为故障转移群集节点的每个服务器上重复此过程。

运行群集验证测试

  1. 在安装了从远程服务器管理工具安装的故障转移群集管理工具的计算机上,或在安装了故障转移群集功能的服务器上,启动故障转移群集管理器。 若要在服务器上执行此作,请启动服务器管理器,然后在“工具”菜单上,选择“故障转移群集管理器”。
  2. 在“故障转移群集管理器”窗格中的“管理”下,选择“验证配置”。
  3. 在“开始之前”页上,选择“下一步”。
  4. 在“选择服务器或群集”页上的“输入名称”框中,输入要添加为故障转移群集节点的服务器的 NetBIOS 名称或完全限定的域名,然后选择“添加”。 为要添加的每台服务器重复此步骤。 若要同时添加多台服务器,请用逗号或分号分隔这些名称。 例如,以 server1.contoso.com 格式输入名称,server2.contoso.com。 完成后,选择“下一步”。

选择服务器图片

  1. 在“测试选项”页上,选择“运行所有测试”(建议),然后选择“下一步”。
  2. 在“确认”页上,选择“下一步”。 验证页面显示运行测试的状态。
  3. 在“摘要”页上,执行下列任一操作:
  • 如果结果指示测试已成功完成,并且配置适用于群集,并且你想要立即创建群集,请确保选中“立即使用验证的节点创建群集”复选框,然后选择“完成”。 然后,继续执行 “创建故障转移群集”过程的步骤 4。

验证配置图片

  • 如果结果指示出现警告或失败,请选择“查看报告”以查看详细信息并确定必须更正的问题。 请注意,特定验证测试的警告表明该故障转移集群的某些方面可以被支持,但可能不符合推荐的最佳实践。

注释

如果你收到“验证存储空间永久预留”测试的警告,请参阅博客文章 Windows 故障转移群集验证警告指示你的磁盘不支持存储空间的永久预留 以获取详细信息。 有关硬件验证测试的详细信息,请参阅验证故障转移群集的硬件

创建故障转移群集

若要完成此步骤,请确保登录的用户帐户符合本主题的 “验证先决条件 ”部分中概述的要求。

  1. 启动“服务器管理器”。
  2. 在“工具”菜单上,选择“故障转移群集管理器”。
  3. 在“故障转移群集管理器”窗格中的“管理”下,选择“创建群集”。 将会打开“创建群集向导”。
  4. 在“开始之前”页上,选择“下一步”。
  5. 如果出现“选择服务器”页,请在“输入名称”框中输入要添加为故障转移群集节点的服务器的 NetBIOS 名称或完全限定的域名,然后选择“添加”。 为要添加的每台服务器重复此步骤。 若要同时添加多台服务器,请用逗号或分号分隔这些名称。 例如,以 server1.contoso.com 格式输入名称;server2.contoso.com。 完成后,选择“下一步”。

创建群集并选择服务器

注释

如果在 配置验证过程中运行验证后立即选择创建群集,则看不到“选择服务器”页。 已验证的节点会自动添加到“创建群集向导”,这样就不必再次输入它们。

  1. 如果之前跳过了验证,将显示“验证警告”页。 我们强烈建议你运行群集验证。 Microsoft 仅支持通过所有验证测试的群集。 若要运行验证测试,请选择“是”,然后选择“下一步”。 完成“验证配置向导”,如 “验证配置”中所述。
  2. 在用于管理群集的接入点页上,执行以下操作:
  • 在“群集名称”框中,输入用于管理群集的名称。 在执行此操作之前,请查看以下信息:
  • 在群集创建期间,此名称在 AD DS 中注册为群集计算机对象(也称为群集名称对象或 CNO)。 如果为群集指定 NetBIOS 名称,则在群集节点的计算机对象所在的同一位置中创建 CNO。 这可以是默认的计算机容器或 OU。
  • 若要为 CNO 指定其他位置,可以在“群集名称”框中输入 OU 的可分辨名称。 例如:CN=ClusterName、OU=Clusters、DC=Contoso、DC=com。
  • 如果域管理员在与群集节点所在的不同 OU 中预留了 CNO,则指定域管理员提供的可分辨名称。
  • 如果该服务器没有配置为使用 DHCP 的网络适配器,则必须为该故障转移群集配置一个或多个静态 IP 地址。 选中你想要用于群集管理的每个网络旁边的复选框。 选择所选网络旁边的“地址”字段,然后输入要分配给群集的 IP 地址。 此 IP 地址(或地址)将与域名系统(DNS)中的群集名称相关联。
  • 完成后,选择“下一步”。
  1. 在“确认”页上,查看设置。 默认情况下,选中了“将所有符合条件的存储添加到群集”复选框。 如果要执行以下作之一,请清除此复选框:
  • 你想要稍后配置存储。
  • 你计划通过故障转移群集管理器或通过故障转移群集 Windows PowerShell cmdlet 创建群集存储空间,并且尚未在文件和存储服务中创建存储空间。 有关详细信息,请参阅部署群集存储空间
  1. 选择“下一步”以创建故障转移群集。
  2. 在“摘要”页上,确认已成功创建故障转移群集。 如果出现任何警告或错误,请查看摘要输出,或选择“查看报表”以查看完整报表。 选择“完成”。
  3. 若要确认已创建群集,请验证群集名称是否列在导航树中的“故障转移群集管理器”下。 可以展开群集名称,然后在“节点”、“存储”或“网络”下选择项以查看关联的资源。 意识到群集名称在 DNS 中成功复制可能需要一些时间。 成功进行 DNS 注册和复制后,如果选择服务器管理器中的所有服务器,群集名称应列为状态为“联机”的“可管理性”服务器。

创建群集完成

使用 SQL Server Configuration Manager 启用 Always On 可用性组

  1. 连接到承载要启用 Always On 可用性组的 SQL Server 实例的 Windows Server 故障转移群集 (WSFC) 节点。
  2. 在“开始”菜单上,指向“所有程序”,指向Microsoft SQL Server,指向“配置工具”,然后单击“SQL Server 配置管理器”。
  3. 在 SQL Server 配置管理器中,单击“SQL Server 服务”,右键单击“SQL Server”(<instance name>),其中 <instance name> 要为其启用 AlwaysOn 可用性组的本地服务器实例的名称,然后单击“属性”。
  4. 选择“AlwaysOn 高可用性”选项卡。
  5. 验证 Windows 故障转移群集名称字段是否包含本地故障转移群集的名称。 如果此字段为空,则此服务器实例当前不支持 AlwaysOn 可用性组。 本地计算机可能不是群集节点,WSFC 群集可能已关闭,或此版本的 SQL Server 不支持 Always On 可用性组。
  6. 选中“启用 AlwaysOn 可用性组”复选框,然后单击“确定”。 SQL Server 配置管理器保存您的更改。 然后,必须手动重新启动 SQL Server 服务。 这使您可以选择最适合您的业务要求的重新启动时间。 当 SQL Server 服务重启时,将启用 Always On,IsHadrEnabled 服务器属性将设置为 1。

启用 AoA

备份 AD FS 数据库

使用完整的事务日志备份 AD FS 配置和项目数据库。 将备份放在所选的目标中。 备份 AD FS 项目和配置数据库。

  • 单击“任务”>“备份”>“完整”>“添加到备份文件”>“确定”即可创建

备份服务器

创建新的可用性组

  1. 在对象资源管理器中,连接到承载主副本的服务器实例。
  2. 展开“Always On 高可用性”节点和“可用性组”节点。
  3. 若要启动“新建可用性组向导”,请选择“新建可用性组向导”命令。
  4. 首次运行此向导时,将显示“简介”页。 若要将来绕过此页面,可以再次单击“不显示此页面”。 阅读此页面后,单击“下一步”。
  5. 在“指定可用性组选项”页上,在“可用性组名称”字段中输入新可用性组的名称。 此名称必须是在群集和域中唯一有效的 SQL Server 标识符。 可用性组名称的最大长度为 128 个字符。 e
  6. 接下来,指定群集类型。 可能的群集类型取决于 SQL Server 版本和操作系统。 选择 WSFC、EXTERNAL 或 NONE。 有关详细信息,请参阅 “指定可用性组名称 ”页

为 AoA 组和群集命名

  1. 在“选择数据库”页上,网格列出了连接服务器实例上有资格成为可用性数据库的用户数据库。 选择一个或多个列出的数据库以参与新的可用性组。 这些数据库最初将是初始主数据库。 对于每个列出的数据库,“大小”列显示数据库大小(如果已知)。 状态列指示给定数据库是否满足可用性数据库的 先决条件 。 如果未满足先决条件,则简要状态说明指示数据库不符合条件的原因;例如,如果不使用完整恢复模式。 有关详细信息,请单击该状态说明。 如果更改数据库使其符合条件,请单击“刷新”以更新数据库网格。 如果数据库包含数据库主密钥,请在“密码”列中输入数据库主密钥的密码。

为 AoA 选择数据库

8.在“指定副本”页上,为新的可用性组指定和配置一个或多个副本。 此页包含四个选项卡。 下表介绍了这些选项卡。 有关详细信息,请参阅“指定副本”页(新建可用性组向导:添加副本向导)主题。

选项卡 简要说明
仿制品 使用此选项卡可以指定将承载辅助副本的每个 SQL Server 实例。 请注意,当前连接的服务器实例必须托管主副本。
端点 使用此选项卡可以验证任何现有的数据库镜像终结点,并且在某个服务器实例的服务帐户使用 Windows 身份验证且缺少此终结点时,自动创建该终结点。
备份首选项 使用此选项卡可为可用性组指定整个备份首选项,以及单个可用性副本的备份优先级。
侦听器 使用此选项卡可以创建可用性组侦听程序。 默认情况下,向导不会创建侦听器。

指定副本详细信息

  1. 在“选择初始数据同步”页上,选择要创建和加入可用性组的新辅助数据库的方式。 选择以下选项之一:
  • 自动种子设定
  • SQL Server 自动为此组中的每个数据库创建次要副本。 自动种子设定要求数据和日志文件路径在参与此组的每个 SQL Server 实例上均相同。 可在 SQL Server 2016 (13.x) 及更高版本中使用。 请参阅 “自动初始化 AlwaysOn 可用性组”。
  • 完整数据库和日志备份
  • 如果环境满足自动启动初始数据同步的要求,请选择此选项(有关详细信息,请参阅本主题前面的先决条件、限制和建议)。 如果在创建可用性组后选择“完全”,向导会将每个主数据库及其事务日志备份到网络共享,并在承载辅助副本的每个服务器实例上还原备份。 然后,该向导将每个辅助数据库联接到可用性组。 在“指定可由所有副本访问的共享网络位置”字段中,指定承载副本的所有服务器实例都具有读写访问权限的备份共享。 有关详细信息,请参阅本主题前面的先决条件。 在验证步骤中,向导将执行测试,确保所提供的网络位置有效,测试将在名为“BackupLocDb_”加 Guid 的主要副本上创建数据库,并对所提供的网络位置执行备份,然后在次要副本上进行还原。 如果向导无法删除该数据库,则删除此数据库及其备份历史记录和备份文件是安全的。
  • 仅加入
  • 如果在将承载辅助副本的服务器实例上手动准备了辅助数据库,则可以选择此选项。 该向导将每个现有辅助数据库联接到可用性组。
  • 跳过初始数据同步
  • 如果要使用您自己的数据库和主数据库的日志备份,请选择此选项。 有关详细信息,请参阅启动 Always On 辅助数据库的数据移动 (SQL Server)

选择数据同步选项

  1. “验证”页验证此向导中指定的值是否符合“新建可用性组向导”的要求。 若要进行更改,请单击“上一步”以返回到以前的向导页以更改一个或多个值。 单击“下一步”返回到“验证”页,然后单击“重新运行验证”。

  2. 在“摘要”页上,查看新可用性组的选项。 若要进行更改,请单击“上一页”返回到相关页面。 进行更改后,单击“下一步”以返回到“摘要”页。

注释

若用于承载新可用性副本的服务器实例的 SQL Server 服务帐户尚未作为登录存在,“新建可用性组向导”需要创建该登录。 在“摘要”页上,向导显示要创建的登录名的信息。 如果单击“完成”,向导将为 SQL Server 服务帐户创建此登录名并授予登录 CONNECT 权限。 如果对所选内容感到满意,可以选择单击“脚本”以创建向导将执行的步骤的脚本。 然后,若要创建和配置新的可用性组,请单击“完成”。

  1. “进度”页显示创建可用性组的步骤的进度(配置终结点、创建可用性组以及将辅助副本加入组)。
  2. 这些步骤完成后,“结果”页将显示每个步骤的结果。 如果所有这些步骤都成功,则新的可用性组得到了完全配置。 如果任何步骤导致错误,您可能需要手动完成配置或对失败的步骤使用向导。 有关给定错误的原因的信息,请单击“结果”列中关联的“错误”链接。 向导完成后,单击“关闭”退出。

验证完成

在辅助节点上添加数据库

  1. 使用创建的备份文件在辅助节点上通过 UI 还原工件数据库。 通过 UI 还原

  2. 还原处于 NON-RECOVERY 状态的数据库。 针对 non recovery 进行还原

  3. 重复过程以还原配置数据库。

将可用性副本加入可用性组

  1. 在对象资源管理器中,连接到承载辅助副本的服务器实例,然后单击服务器名称以便展开服务器树。
  2. 展开“Always On 高可用性”节点和“可用性组”节点。
  3. 选择连接到的次要副本的可用性组。
  4. 右键单击次要副本,然后单击“加入可用性组”。
  5. 这会打开“将副本加入可用性组”对话框。
  6. 若要将次要副本加入可用性组,请单击“确定”。

加入次要副本

更新 SQL 连接字符串

最后,使用 PowerShell 编辑 AD FS 属性以更新 SQL 连接字符串,以使用 AlwaysOn 可用性组侦听器的 DNS 地址。 在每个节点上运行配置数据库更改,并在所有 AD FS 节点上重启 AD FS 服务。 初始目录值会根据场版本而变化。

PS:\>$temp= Get-WmiObject -namespace root/ADFS -class SecurityTokenService
PS:\>$temp.ConfigurationdatabaseConnectionstring=”data source=<SQLCluster\SQLInstance>; initial catalog=adfsconfiguration;integrated security=true”
PS:\>$temp.put()
PS:\> Set-AdfsProperties –artifactdbconnection ”Data source=<SQLCluster\SQLInstance >;Initial Catalog=AdfsArtifactStore;Integrated Security=True”