MSMQ в кластере
Я настроил MSMQ для работы в кластере. Кластер состоит из двух виртуальных машин Hyper-V и использует общее хранилище на третьей виртуальной машине (все виртуальные машины совместно используют домен Windows, и они видят друг друга через сеть). Оснастка диспетчера отказоустойчивого кластера показывает, что служба MSMQ работает. Некластеризованные службы MSMQ на компьютерах, которые являются членами кластера, как показано, работают в оснастке служб. Теперь я пытаюсь отправить сообщение с удаленного компьютера (с третьей виртуальной машины) в кластерную службу MSMQ и в некластеризованные службы MSMQ. Я использую следующие имена очередей:
- FORMATNAME: Прямая = ОС:{кластерный-MSMQ-NetBIOS-имя}\ частная $\{ИмяОчереди}
- FORMATNAME: Прямая =TCP:{кластерного-MSMQ-IP-адрес}\ частные $\{ИмяОчереди}
- FORMATNAME: Прямая =TCP:{некластерный-MSMQ-IP-адрес}\ частные $\{ИмяОчереди}
Если указан некластеризованный IP-адрес msmq, сообщение доставляется в некластеризованный экземпляр msmq. Но когда я пытаюсь получить доступ к кластеризованному экземпляру msmq, отправленное сообщение остается в очереди исходящих сообщений и выдает "Ожидание подключения" (не удалось подключить сокет Winsock). И очередь на кластеризованном экземпляре msmq пуста.
Я пытался подключиться к кластерному сервису msmq с помощью telnet. Для соединения я указал кластерный IP-адрес msmq и порт 1801. Он говорит: "Не удалось открыть соединение с хостом, на порту 1801: Ошибка подключения".
Любая идея?
Дополнительная информация. Когда я нажимаю на пункт меню "Управление очередью сообщений", когда оба сервера кластера подключены к сети, в оснастке отсутствует элемент очереди сообщений в дереве. Когда я приостанавливаю один сервер (второй), в дереве появляется элемент очереди сообщений. И когда в дереве есть элемент очереди сообщений, сообщения начинают обрабатываться (я вижу, что они исчезают из очереди исходящих сообщений на отправляющем сервере, но я не вижу их на принимающем сервере).
1 ответ
Кажется, что вы можете управлять очередями кластеризованных сообщений только с того кластерного узла, который теперь является владельцем роли. На узле кластера, который сейчас не активен, отсутствует пункт меню "Управление очередью сообщений".
И учитывая тот факт, что сообщения не доставлялись в кластерный экземпляр msmq, я просто переустановил функцию окон msmq на одном из узлов кластера и заново создал роль кластера msmq. После этих манипуляций доставка сообщений только начала работать.