
將此內容發佈在 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
-> 工作正常
答案1
可能是由於反向查找造成的。我不確定MSMQ 如何獲取其主機名稱信息,但如果它從Windows 獲取主機名而不是第二個IP 的DNS 主機名,那麼第二個IP 的反向查找將失敗,因為它將返回不同的第二個dns 主機名稱然後是伺服器的實際主機名稱。
答案2
要透過 DNS 進行解析,請使用 DNS 名稱而不是 IP,這樣兩者都應該解析:
FORMATNAME:Direct=OS:load-intv\private$\MyQueue
FORMATNAME:Direct=OS:load-int-01\private$\MyQueue
此外,在 MSMQ 伺服器上執行以下註冊表腳本(按http://support.microsoft.com/kb/306785):
reg.exe ADD HKLM\Software\Microsoft\MSMQ\Parameters /V IgnoreOSNameValidation /t REG_DWORD /d 1 /f
答案3
MSMQ 可能期望電腦的 netbios 名稱與用於到達那裡的 dns 主機名稱相符。當您嘗試使用 CNAME 將磁碟機對應到 Windows 伺服器時,這與您遇到的問題相同。
有一種方法可以透過新增註冊表項來為其命名別名:
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.
答案4
您是在同一台電腦上發送(本地到 load-intv)還是從遠端電腦發送?
另外,當您在 DNS 中查詢 load-intv 和 load-int-01 時,實際傳回的 IP 位址是什麼?只是您提到的那些 - 分別是 10.0.10.20 和 10.0.10.10 - 還是額外的?
涉及任何 HOSTS 檔案嗎?如果是這樣,您是否有任何其他 DNS 名稱對應到 10.0.10.20?
乾杯約翰·布雷克韋爾 (MSFT)