無法將 MSMQ 訊息傳送到伺服器的第二個 DNS 名稱

無法將 MSMQ 訊息傳送到伺服器的第二個 DNS 名稱

將此內容發佈在 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)

相關內容