windows-server-2008 – Windows Server 2008的分布式事务失败
我遇到了新的服务器设置问题.应用程序服务器启动到新服务器的分布式事务失败,但它们与现有数据库服务器一起正常工作.我需要帮助确定问题的原因.
由于各种原因,新服务器未运行Windows或SQL Server的最新版本. 建立 应用服务器 >操作系统:Windows Server 2008 R2 >选中网络DTC访问 >允许入站,允许出站检查 >取消选中启用XA事务 新的数据库服务器 >操作系统:Windows Server 2008 >选中网络DTC访问 >允许入站,允许出站检查 >取消选中启用XA事务 现有的数据库服务器 >操作系统:Windows Server 2003 R2 >选中网络DTC访问 >取消选中启用XA事务 所有三台服务器都属于同一个域,并且位于同一子网中.它们之间只有一个以太网交换机,没有路由器,硬件防火墙和安全设备. 问题 ASP.NET应用程序在应用程序服务器上运行,并在对现有数据库服务器(DB-04)执行事务时正常工作.对新数据库服务器(DB-06)执行相同步骤时,它会失败并报告错误消息:与基础事务管理器的通信失败. 故障排除步骤 我们在使用此应用程序之前已经看到此错误,这通常意味着未正确配置分布式事务处理协调器或防火墙正在干扰.过去,我使用DTCPing来排除故障并纠正任何错误. 但是,这次虽然DTCPing失败,但我无法确定问题的原因,因为现有的和新的数据库服务器似乎配置相同,但操作系统版本除外. 从应用程序服务器(WEB-02)到新数据库服务器(DB-06)运行测试时,以下内容来自DTCPing日志文件.请注意,我已更改IP地址和DNS名称. 从应用程序服务器上的日志文件 10-14,16:08:11.346-->Error(0x424) at clutil.cpp @256 10-14,16:08:11.346-->-->OpenCluster 10-14,16:08:11.346-->-->1060(The specified service does not exist as an installed service.) ++++++++++++++++++++++++++++++++++++++++++++++ DTCping 1.9 Report for WEB-02 ++++++++++++++++++++++++++++++++++++++++++++++ Firewall Port Settings: Port:5000-5020 RPC server is ready ++++++++++++Validating Remote Computer Name++++++++++++ 10-14,16:08:22.796-->Start DTC connection test Name Resolution: DB-06-->1.1.1.6-->s6.mydomain.com 10-14,16:08:22.812-->Start RPC test (WEB-02-->DB-06) RPC test failed 从新数据库服务器上的日志文件 10-14,16:07:46.128-->Error(0x424) at clutil.cpp @256 10-14,16:07:46.128-->-->OpenCluster 10-14,16:07:46.129-->-->1060(The specified service does not exist as an installed service.) ++++++++++++++++++++++++++++++++++++++++++++++ DTCping 1.9 Report for DB-06 ++++++++++++++++++++++++++++++++++++++++++++++ RPC server is ready 10-14,16:08:22.785-->RPC server:DB-06 received following information: Network Name: DB-06 Source Port: 56535 Partner LOG: WEB-022872.log Partner CID: 1ACD8780-9446-4E94-869D-6F1BDF787BBF 在数据库服务器上单击PING后,会将以下内容添加到日志文件中.在输出窗口中,在调用RPC方法和失败之间存在暂停,因此在超时后失败. ++++++++++++Validating Remote Computer Name++++++++++++ 10-14,16:13:18.924-->Start DTC connection test Name Resolution: Web-02-->1.1.1.2-->web-02.mydomain.com 10-14,16:13:18.933-->Start RPC test (DB-06-->Web-02) Problem:fail to invoke remote RPC method Error(0x6D9) at dtcping.cpp @303 -->RPC pinging exception -->1753(There are no more endpoints available from the endpoint mapper.) RPC test failed 正如Troubleshooting MSDTC issues with the DTCPing tool在“错误消息4 – 端点映射器中没有更多端点”部分中所解释的那样,映射器实际上有更多端点.我在应用程序服务器(具有受限端口的服务器)上运行了netstat -an,它只使用了20个可用端口中的10个.
在让Microsoft参与并完成并分析了许多网络跟踪之后,我们终于找到了问题.应用程序服务器是网络负载平衡群集的一部分,Windows Server 2008 R2上的IPv6实现如何与网络负载平衡组件交互存在缺陷.
由于服务器具有可公共路由的IPv4地址,因此IPv6堆栈会自动创建“6to4”地址.这是一个特殊的IPv6地址,对应于计算机可公开路由的IPv4地址.它为机器自己的地址和共享集群地址执行此操作.缺陷是它以自己的名义在DNS中注册了6到4个地址.这与IPv4堆栈在同一台计算机上的工作方式不同.使用IPv4时,群集IP地址未在DNS中注册. 结果是当连接到新数据库服务器和数据库服务器的应用程序服务器尝试反向绑定到应用程序服务器时,它会看到应用程序服务器有IPv6地址并尝试使用其中一个地址进行连接.但是因为它使用了与集群IP地址相对应的6to4地址,集群中的另一台服务器将接收连接,并且由于该服务器上的DTC不期望反向绑定,因此失败. 现有的数据库服务器(Windows Server 2003 R2)不使用IPv6,因此没有遇到问题. 解决方案是禁用自动6to4地址生成.您可以通过组策略或使用以下命令行执行此操作: netsh interface 6to4 set state disabled 要将其设置回来,您将运行以下命令: netsh interface 6to4 set state default 要查看当前设置,请运行以下命令.在Windows 2008 R2 / Windows 7及更高版本中,它还将指示当前设置是否归因于组策略. netsh interface 6to4 show state (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |