发表在StackOverflow上,但我认为这可能与这个人群更密切。
我有一个MSMQ消息发送到服务器上的第二个DNS名称的问题。 如果我们为同一台服务器发送IP,那么我们没有问题,但是这不是我们正在build立的架构。 关于为什么MSMQ会关心收到哪个名字的任何想法?
这是我们的例子:
服务器信息:物理服务器load-int-01具有与之关联的第二个IP和DNS名称。 第一个IP / DNS: load-int-01
,IP为10.0.10.10
第二个IP / DNS为: load-intv
,IP为10.0.10.20
使用的队列path格式:
FormatName:DIRECT=OS:load-int-01\private$\MyQueue
– > Works Fine
FormatName:DIRECT=OS:load-intv\private$\MyQueue
– >返回以下错误:
该队列不存在或您没有足够的权限来执行此操作
我们也尝试使用IP地址,而这两组IP都正常工作。
FormatName:DIRECT=TCP:10.0.10.10\private$\MyQueue
– > Works Fine FormatName:DIRECT=TCP:10.0.10.20\private$\MyQueue
– > Works Fine
可能是由于反向查找。 我不确定MSMQ如何获取其主机名信息,但是如果从Windows获取主机名而不是第二个IP的DNS主机名,则第二个IP的反向查找将失败,因为它将返回不同的第二个DNS主机名那么服务器的实际主机名。
通过DNSparsing使用DNS名称而不是IP,这两种方法都应该解决:
FORMATNAME:Direct=OS:load-intv\private$\MyQueue FORMATNAME:Direct=OS:load-int-01\private$\MyQueue
此外,在MSMQ服务器上运行以下registry脚本(每个http://support.microsoft.com/kb/306785 ):
reg.exe ADD HKLM\Software\Microsoft\MSMQ\Parameters /V IgnoreOSNameValidation /t REG_DWORD /d 1 /f
MSMQ可能期望计算机的NetBIOS名称与用于实现的DNS主机名相匹配。 当您尝试使用CNAME将驱动器映射到Windows服务器时,也存在同样的问题。
有一种方法可以通过添加registry项来为其名称添加别名:
HKEY_Local_Machine\System\CurrentControlSet\Services\LanmanServer\Parameters Add Value: OptionalNames REG_SZ with as value the name of the alias If you make it a type REG_MULTI_SZ, you can add multiple aliases.
你是在同一台机器上发送(local-load-intv)还是从远程机器发送?
另外,什么IP地址实际上返回时,您查询负载intv和load-int-01的DNS? 只是你提到的那个 – 分别是10.0.10.20和10.0.10.10 – 还是额外的?
涉及任何HOSTS文件? 如果是这样,你有任何其他的DNS名称映射到10.0.10.20?
欢呼声John Breakwell(MSFT)