使MSDTC跨两个EC2实例工作

问题描述 投票:2回答:2

我有两个EC2实例,一个在IIS中运行网站,另一个托管SQL-Server实例。该网站正在为此服务器进行正常通信,从数据库中提取数据而不会出现问题。但是,当我去写一套数据时,我正在使用DTC,这给了我一些问题。当我尝试编写(因此包装在事务中)时,我收到以下错误消息:

由于通信问题,MSDTC事务管理器无法从源事务管理器中提取事务。可能的原因是:存在防火墙且MSDTC进程没有例外,两台计算机无法通过其NetBIOS名称找到对方,或者两个事务管理器之一未启用对网络事务的支持。 (来自HRESULT的异常:0x8004D02B)。

如果我从SQL实例运行DTCPing.exe到IIS实例,我得到以下结果:

09-20,12:19:12.861 - >启动RPC测试( - > WIN-I9MDBIKCVAD)问题:无法在dtcping.cpp @ 303调用远程RPC方法错误(0x6BA) - > RPC pinging exception - > 1722(RPC服务器不可用。)RPC测试失败

我试过的事情:

  • 在两台服务器上使用的IAM安全组设置中允许使用确保端口3372
  • 尝试在安全组设置中启用“所有TCP”和“所有UDP”
  • 将其他计算机的net bios名称的主机文件条目添加到为每个实例设置的弹性IP.在两台服务器上启用了Ensuers MSDTC并配置
  • 确保RPC服务在两台计算机上运行

任何人都有任何关于可能导致此问题的建议吗?

谢谢

amazon-ec2 msdtc
2个回答
0
投票

原来问题是关于事务管理器通信设置。默认情况下,MSDTC启用了“需要相互身份验证”,但这两台计算机无法使用默认的“NT AUTHORITY \ NetworkService”帐户进行身份验证。解决方案是在两台机器上创建一个用户,使其能够进行身份验证,或者更简单地说,只需选择“无需身份验证”。应用此设置,重新启动服务及其工作!


0
投票

原来,在我们的案例中,需要在App Server和SQL机器上打开端口135(RPC),以便MSDTC将MSDTC对象从SQL发送到客户端。

如果您仍然遇到问题,可能是因为DTC正在选择1024到65535之间的端口。因此,只需允许每个App \ SQL中的Amazon EC2“入站规则”允许来自其他服务器。

© www.soinside.com 2019 - 2024. All rights reserved.