将此发布在 StackOverflow 上,但我认为这可能与这群人更密切相关。
我在向服务器上的第二个 DNS 名称发送 MSMQ 消息时遇到问题。如果我们为同一台服务器发送 IP,我们没问题,但这不是我们在架构上要去的地方。关于为什么 MSMQ 会关心它收到的名称的任何想法?
这是我们的示例:
服务器信息:物理服务器 load-int-01,具有与之关联的第二个 IP 和 DNS 名称。第一个 IP/DNS: load-int-01
, 带 IP10.0.10.10
第二个 IP/DNS: load-intv
, 带 IP10.0.10.20
使用的队列路径格式:
FormatName:DIRECT=OS:load-int-01\private$\MyQueue
-> 工作正常
FormatName:DIRECT=OS:load-intv\private$\MyQueue
-> 返回以下错误:
队列不存在或您没有足够的权限执行此操作
我们也尝试改用 IP 地址,两组 IP 都可以正常工作。
FormatName:DIRECT=TCP:10.0.10.10\private$\MyQueue
-> 工作正常FormatName:DIRECT=TCP:10.0.10.20\private$\MyQueue
-> 工作正常
要通过 DNS 解析,请使用 DNS 名称而不是 IP,这两种方式都应该解析:
此外,在 MSMQ 服务器上运行以下注册表脚本(根据http://support.microsoft.com/kb/306785):
可能是由于反向查找。我不确定 MSMQ 如何获取其主机名信息,但如果它从 Windows 获取主机名而不是第二个 IP 的 DNS 主机名,那么对第二个 IP 的反向查找将失败,因为它将返回第二个不同的 dns 主机名然后是服务器的实际主机名。
MSMQ 可能期望计算机的 netbios 名称与用于到达那里的 dns 主机名匹配。这与您尝试使用 CNAME 将驱动器映射到 Windows 服务器时遇到的问题相同。
有一种方法可以通过添加注册表项来为其命名:
您是在同一台机器上发送(本地到 load-intv)还是从远程机器上发送?
另外,当您在 DNS 中查询 load-intv 和 load-int-01 时,实际返回了哪些 IP 地址?只是你提到的那些 - 分别是 10.0.10.20 和 10.0.10.10 - 还是额外的?
是否涉及任何 HOSTS 文件?如果是这样,您是否有任何其他 DNS 名称映射到 10.0.10.20?
干杯约翰·布雷克韦尔 (MSFT)