Amazon ec2 让MSDTC跨两个EC2实例工作

Amazon ec2 让MSDTC跨两个EC2实例工作,amazon-ec2,msdtc,Amazon Ec2,Msdtc,我有两个EC2实例,一个在IIS中运行网站,另一个托管SQL Server实例。此服务器的网站通讯正常,从数据库中提取数据时没有问题。然而,当我编写一组数据时,我使用的是DTC,这给我带来了问题。当我尝试写入(并因此在事务中包装)时,会收到以下错误消息: MSDTC事务管理器无法从中提取事务 由于通信问题,源事务管理器无法启动。可能的 原因是:存在防火墙,并且没有例外 在MSDTC过程中,这两台机器无法通过各自的路径找到对方 NetBIOS名称,或未启用对网络事务的支持 对于两个事务管理器之一。

我有两个EC2实例,一个在IIS中运行网站,另一个托管SQL Server实例。此服务器的网站通讯正常,从数据库中提取数据时没有问题。然而,当我编写一组数据时,我使用的是DTC,这给我带来了问题。当我尝试写入(并因此在事务中包装)时,会收到以下错误消息:

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

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

09-20,12:19:12.861-->开始RPC测试(->WIN-I9MDBIKCVAD)问题:失败 在dtcping.cpp@303处调用远程RPC方法错误(0x6BA) -->RPC ping异常 -->1722(RPC服务器不可用。)RPC测试失败

我尝试过的事情:

  • 确保在中的IAM安全组设置中允许使用端口3372 在两台服务器上使用
  • 已尝试在安全组设置中启用“所有TCP”和“所有UDP”
  • 为另一台计算机的网络bios名称添加了主机文件项 要为每个实例设置弹性IP,请确保在两台服务器上都启用并配置了MSDTC
  • 已确保RPC服务正在上运行 两台机器
有人对这个问题的原因有什么建议吗


谢谢

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

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


如果仍然存在问题,可能是因为DTC选择了1024和65535之间的端口。因此,只需在每个App\SQL中允许您的Amazon EC2“入站规则”从另一台服务器发出。

Hi@ldj。我遇到了类似的问题。如果没有主机文件适配,您是否找到了允许netbios解析的方法?AWS论坛相关问题