You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

BizTalk Server 2020集群环境SSO连接失败故障求助

BizTalk 2020 接入集群化EntSSO报RPC不可用故障排查方案

现有部署架构

  • 服务器A、服务器B:部署Microsoft BizTalk 2020服务
  • 服务器C、服务器D:部署Microsoft SQL Server 2019 AlwaysOn可用性组

已完成前置配置

  • 完成集群MSDTC角色配置
  • 在服务器C、D安装Enterprise SSO服务并完成集群配置:在服务器C创建SSO系统,将服务关联的服务器名称修改为MSDTC集群访问点,在服务器D加入该SSO系统后完成主密钥还原,前期本地配置校验无异常

故障现象

在服务器A配置BizTalk、尝试加入现有SSO系统,指向SQL AG Listener并输入预先配置的EntSSO服务AD域账号时,连续触发三层报错:

  • 顶层报错:SQL Server clus-sql-ls 上的SSO数据库 SSODB 指定的SSO主密钥服务器 clus-msdtc 无法找到,缺少主密钥服务器时SSO服务无法正常运行
  • 二级报错:(0xC0002A0F) 无法联系SSO服务器“%1”,请检查SSO配置状态及目标服务器上SSO服务是否正常运行
  • 底层子报错:无法联系SSO服务器 clus-msdtc,请检查SSO配置状态及该服务器上SSO服务运行状态(RPC: 0x800706BA: RPC服务器不可用)
    已完成的校验项:
  • DTCPing测试服务器A与C、服务器A与D之间的MSDTC连通性结果正常
  • 节点本地Enterprise SSO服务处于运行状态
  • AG主副本所在服务器C的SSO管理控制台显示配置状态正常

排查方向与修复步骤

1. 校验集群EntSSO资源的依赖配置(最高优先级)

该故障90%以上的诱因是EntSSO未被正确配置为集群通用服务资源,仅在节点本地启动:

  • 本地启动的EntSSO只会监听节点物理IP的RPC端口,不会响应集群虚拟名称clus-msdtc的RPC请求,DTCPing测试的是节点物理IP的MSDTC连通性,无法覆盖该场景
  • 修复操作:
    1. 打开故障转移集群管理器,定位到承载MSDTC/EntSSO的角色
    2. 确认角色下包含四类资源:clus-msdtc虚拟IP资源、clus-msdtc网络名称资源、MSDTC资源、EntSSO通用服务资源
    3. 配置EntSSO服务资源的依赖项为「clus-msdtc网络名称 + MSDTC资源」,禁止依赖本地节点名称
    4. 将C、D节点本地服务列表中EntSSO的启动类型改为手动,完全由集群控制服务启停,避免节点本地自动启动的服务抢占注册
    5. 重启整个EntSSO集群角色,待资源全部上线后再做后续校验

2. 校验RPC端口连通性与防火墙规则

DTCPing仅验证MSDTC协议所需端口,EntSSO的RPC通信依赖独立端口规则:

  • 第一步在服务器A执行telnet clus-msdtc 135,验证RPC终结点映射器端口连通性,不通则在集群角色当前所在节点、网络边界防火墙上放通针对clus-msdtc虚拟IP的135端口入站规则
  • 第二步若135端口连通,在服务器A执行rpcdump /s clus-msdtc,检查输出列表中是否存在ENTSSO服务对应的RPC终结点;若不存在,说明EntSSO未向集群网络名称注册RPC接口,重启集群EntSSO角色后重试
  • 若环境限制动态RPC端口范围,可在C、D节点通过注册表给EntSSO配置固定RPC端口:定位到注册表路径HKLM\SOFTWARE\Microsoft\Enterprise Single Sign-On,新建DWORD值RpcTcpPort,设置为选定的空闲单端口(如5050),重启EntSSO集群角色后,在防火墙放通该固定端口即可

3. 校验SSO数据库配置与Kerberos SPN

  • 数据库配置校验:在AG主副本执行以下SQL,确认SSODB存储的主密钥服务器名称正确:
    USE SSODB
    SELECT PropertyName, PropertyValue FROM SSO_Properties 
    WHERE PropertyName IN ('SSOAdminServer','SSOSecretServer')
    
    若返回值不是clus-msdtc,通过SSO配置管理工具重新修改主密钥服务器名称,确保AG副本同步该配置后再做故障转移测试
  • SPN配置校验:RPC Kerberos认证失败会直接抛出0x800706BA错误,在域控执行以下命令检查EntSSO服务账号的SPN记录:
    setspn -L <EntSSO服务使用的AD域账号>
    
    若缺失以下记录,手动执行命令添加(替换域后缀为实际环境值):
    setspn -S ENTSSO/clus-msdtc <EntSSO服务域账号>
    setspn -S ENTSSO/clus-msdtc.yourdomain.com <EntSSO服务域账号>
    

4. 校验服务器A本地客户端配置

  • 定位到服务器A的注册表路径HKLM\SOFTWARE\Microsoft\ENTSSO,检查字符串值SSOServer是否为clus-msdtc,若为本地节点名或其他值,手动修改后重启服务器A的EntSSO服务
  • 确认服务器A上的EntSSO服务登录账号与C、D节点使用的是同一个AD域账号,且该账号属于本地Administrators组、域SSO Administrators组,同时拥有SQL实例的securityadmin、dbcreator角色,以及SSODB的db_owner权限

内容的提问来源于stack exchange,提问作者JaggenSWE

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.29 12:33:32