2

我们刚刚在我们的环境中将 K2 从版本 4.6.6 升级到了 4.6.11。环境中有两台 K2 服务器设置了负载均衡器。升级后,K2 工作流 API 中的一些函数会抛出异常。

或建立连接失败,因为连接的主机没有响应。","anonymous","0.0.0.0" "Error","EnvironmentServer","15101","Generic","SourceCode.Workflow.Runtime.Management [ReleaseWorklistItem [string[] names]]","15101 发生错误, ERROR: Unable to connect to loadbal-k2-abc.com on port 5252. 连接尝试失败,因为连接方在一段时间后没有正确响应,或者连接失败,因为连接的主机没有响应。","anonymous","0.0.0.0" "Error","System","2025","InternalMarshalError","SourceCode.Hosting.Server.Runtime.HostServerBroker.InternalMarshal","2025 错误编组 SourceCode.Workflow.Runtime . Management.WorkflowManagementHostServer.ReleaseWorklistItem,无法连接到端口5252上的loadbal-k2-abc.com。连接尝试失败,因为连接方在一段时间后没有正确响应,或者连接失败,因为连接的主机没有响应. ","","", "Error","System","2025","InternalMarshalError","SourceCode.Hosting.Server.Services.TCPClientSocket.InternalMarshal","2025 编组 SourceCode.Workflow.Runtime.Management 时出错。 WorkflowManagementHostServer.ReleaseWorklistItem,无法连接到端口5252上的loadbal-k2-abc.com。连接尝试失败,因为连接方在一段时间后没有正确响应,或者连接失败,因为连接的主机没有响应。" "Error","Communication","8060","ProcessPacketError","SourceCode.Hosting.Server.Services.TCPClientSocket.ProcessMessage","8060 ProcessPacket 错误,无法连接到端口 5252 上的 loadbal-k2-abc.com . 连接尝试失败,因为连接方在一段时间后没有正确响应,或者连接失败,因为连接的主机没有响应。" 或建立连接失败,因为连接的主机没有响应。" 或建立连接失败,因为连接的主机没有响应。"

在 HostServer 日志中,我们可以看到 K2 服务器出于某种原因尝试联系 K2 负载均衡器。这看起来像是从 K2 4.6.6 的变化,它完美地工作并且没有调用负载均衡器。我们还检查了 K2 配置,并且没有在任何地方提及负载均衡器地址。

我们还在没有负载平衡器的环境中进行了升级,并且它在那里工作没有任何错误。

为什么 K2 主机服务器试图连接到 K2 4.6.11 中的负载均衡器,它从哪里获得地址?

4

1 回答 1

1

这在 K2 支持的帮助下得到了解决。K2 建立连接的方式发生了变化,我们建立连接字符串的方式也需要改变。

这是在 4.6.11 中通过 SSO 更改引入的(TFS 524432 - SSO Prompt for Credential cache)。在 4.6.10 中,当您使用以下连接字符串验证 HostServer 会话时:

Integrated=True;IsPrimaryLogin=True;Authenticate=True;EncryptedPassword=False;Host=k2.denallix.com;Port=5555;UserID=Denallix\Administrator;Password=K2pass!;WindowsDomain=denallix;SecurityLabelName=K2

与会话关联的连接字符串是:Integrated=True;IsPrimaryLogin=True;Authenticate=True;EncryptedPassword=False;Host=dlx;Port=5555;UserID=DENALLIX\Administrator;Password=K2pass!;AuthData=Denallix;SecurityLabelName=K2

因此,WindowsDomain 键在 SSO 之前没有保留,而是作为 AuthData 添加(请注意上面示例连接字符串的结尾)。

当您打开从 WorkflowManagmentServer 到 WorkflowClient 的连接时,会检查该连接是否具有 WindowsDomain、用户名和密码。如果它具有全部 3 个,它将尝试使用这些详细信息来验证用户,在 4.6.10 中我们没有保留 WindowsDomain,它只会执行一个没有用户名和密码的普通集成连接字符串。

本质上,使用这种配置,您尝试使用以下凭据 WindowsDomain + UserID 进行身份验证,这会导致使用诸如“Domain\Domain\User”之类的东西进行身份验证,并且身份验证尝试将因此而失败。

于 2016-09-23T06:12:38.100 回答