Разместил это на StackOverflow, но я думаю, что это, вероятно, больше подходит для этой публики.
У меня возникла проблема с отправкой сообщения MSMQ на второе DNS-имя на сервере. Если мы отправим IP для того же сервера, все будет в порядке, но с архитектурной точки зрения это не то, что нам нужно. Есть идеи, почему 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
Используемые форматы пути очереди:
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-адрес таким образом - оба должны разрешить:
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
Может быть из-за обратного просмотра. Я не уверен, как MSMQ получает информацию об имени хоста, но если он получает имя хоста из Windows, а не имя хоста DNS для второго IP-адреса, тогда обратный поиск для второго IP-адреса завершится неудачно, поскольку он вернет второе имя хоста DNS, которое отличается затем фактическое имя хоста сервера.
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.
Вы отправляете на одном компьютере (локальном для load-intv) или с удаленного компьютера?
Кроме того, какие IP-адреса фактически возвращаются, когда вы запрашиваете DNS для load-intv и load-int-01? Только те, которые вы упомянули - 10.0.10.20 и 10.0.10.10 соответственно - или лишние?
Есть какие-нибудь файлы HOSTS? Если да, то есть ли у вас другие DNS-имена, сопоставленные с 10.0.10.20?
Ура, Джон Брейквелл (MSFT)