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