“Сервис очереди сообщений, не доступный” в Windows Failover Cluster

Я отлаживаю на сайте где наше выполнение приложения на отказоустойчивом кластере с 3 узлами с кластерной группой MSMQ для организации очередей сообщения. Мы видим, что системные работы над некоторыми комбинациями узлов, но не всех, таким образом заменяют безопасность, не так хорошо как предназначенный.

Проблема с получением сообщений от кластеризованной очереди.

Когда наше выполнение приложения на кластерном узле B или C, это работает, независимо от которого узла работает MSMQ (работы =, наше приложение получает сообщения). Когда наше выполнение приложения на узле A, это перестало работать из-за сервиса очереди сообщений, не доступного, независимо от того, куда MSMQ работает.

Чтобы перепутать вещи еще больше, я создал маленький WCF-MQ-proxy сервис с клиентом GUI, который позволяет мне отправлять команду службе, которая затем отправит к или получит от очереди сообщений, как указано клиентом - и даст как можно больше обратной связи в процессе. Шаблон является тем же с этим приложением, кроме узла, где это перестало работать, узел C - независимо от того, куда MSMQ работает.

Вот некоторые вещи, которые я проверил:

  • Услуга (наше приложение) работает в соответствии с теми же учетными записями пользователя домена на всех 3 узлах.
  • Файл конфигурации приложения содержит тот же путь к очереди сообщений.
  • Права доступа очереди: все имеют полный контроль.
  • Локальный сервис MSMQ работает на всех узлах, и я удостоверился, что локальные очереди не называют тем же как кластеризованные.
  • Брандмауэр отключен на всех узлах.
  • Узел A отличается от B и C, в котором он имеет дополнительное сетевое соединение на той же подсети как сеть кластера. Таким образом, когда я проверяю с помощью ping-запросов его от узла B, это отвечает в "неправильном" интерфейсе. Не уверенный, если это имеет значение, но это немного странно.
  • Сервисная опция "Use network name for machine name", кажется, ничего не изменяет. Мой сервис прокси сообщает, что чувствовал название машины, и для узла это всегда возвращает кластерное название группы на узлах B и C, он всегда возвращает имя узла.
  • Кластерная группа MSMQ использует общий диск iscsi для устройства хранения данных.

Я - просто разработчик, не эксперт по инфраструктуре Microsoft каким-либо образом, таким образом, я хотел бы спросить: что рекомендуемые шаги должны взять при отладке кластеризованной установки MSMQ как это?

2
задан 27 February 2015 в 10:00
1 ответ

Итак, после нескольких недель отладки этого самостоятельно и вместе с группой поддержки Microsoft Message Queue решение было найдено.

TLDR; решение состоит в том, чтобы удалить или переименовать раздел реестра

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\<SERVICENAME>\Environment

Причина ошибки в том, что клиент MQ не может найти службу MQ в локальной системе - а это необходимо для связи с удаленным MQ - вроде как локальная служба SMTP пересылка ваших писем в удаленные системы. Однако в данном случае локальная система является не узлом кластера, а «группой кластера», и в этой группе кластера не работает служба MQ (поскольку это не настоящая система, а просто псевдоним). Причина, по которой клиент MQ ищет службу в группе кластеров, заключается в том, что в настройках службы кластера установлен флажок «Использовать сетевое имя для имени компьютера». Это добавляет новое значение в реестр узлов кластера, устанавливая среду для службы. И настоящая проблема заключается в том, что когда этот флажок снят, он не удаляет значение из реестра, что фактически делает невозможным правильную очистку параметра (из графического интерфейса) после его установки. Поэтому исправление состоит в том, чтобы удалить значение вручную с помощью regedit или regedt.

3
ответ дан 3 December 2019 в 10:44

Теги

Похожие вопросы