Windows Azure:虚拟机之间的文件共享、命名管道

Windows Azure:虚拟机之间的文件共享、命名管道

我无法让命名管道在 Azure 中的单个 VM 或 2 个 VM 中工作。可用性集不是一种选择。

因此,如果虚拟机名称为 testVM.cloudapp.net,则命名管道会因用户名或密码不正确而失败。如果我们使用 testVM 而不是 FQDN,则命名管道可以正常工作。

没有虚拟网络,我们已经正确设置了防火墙(甚至将其关闭)。

添加一个 lmhosts 文件,将内部 ipaddress 映射到 testVM.cloudapp.net 并不能解决这个问题。访问 \testVM.cloudapp.net 要求进行身份验证并失败。但 \testVM 可以工作。我该如何设置才能使其工作。一旦它工作正常,我想将其扩展到多个虚拟机。

答案1

命名管道仅在同一台物理机器上工作。(它们读取/写入内存块)

在 Azure 上,无法保证两台虚拟机位于同一台物理机器上*(而且我怀疑即使它们位于同一台物理机器上,它们是否被允许共享内存)。

因此,你需要使用一些基于 IP 的 Web 服务(tcp、http、AMPQ

如果您想要共享文件,最好写入 Azure blob 存储并让您的第二台 VM 从中读取。Web 服务通常不擅长处理大块数据(通常 >2MB)

*我猜他们不会将它们放在同一台物理机器上,因为那将是一个单点故障,在这种情况下,更大的实例将是更好的选择。


更新

如果您使用WCF 命名管道绑定(NetNamedPipesBinding)您只能在单台机器上使用它。

使用Windows 命名管道跨越机器边界,因为它会回退到 tcp。(如果您使用 WCF,那么在跨越机器边界时,您应该选择基于 tcp 的绑定)更多详细信息这里

相关内容