Назад | Перейти на главную страницу

Настройка транзакционного MSMQ на серверах с балансировкой нагрузки

У меня сейчас есть решение, работающее на одном сервере, которое использует частные очереди транзакций (msmq / wcf). Службы Windows потребляют и обрабатывают сообщения в очередях, а уровень веб-приложения помещает сообщения в очереди.

Мы переходим к конфигурации с балансировкой нагрузки по IP (циклический, два сервера, один виртуальный адрес), и нет необходимости поддерживать порядок сообщений между каждым узлом. Таким образом, простая репликация стека (веб-приложения, служб, очередей) в нормальных условиях вполне подойдет. Но я бы предпочел единый виртуальный набор очередей, чтобы никакие сообщения не терялись или не задерживались на длительные периоды времени, если какой-либо узел выходит из строя.

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

Вы не можете очень легко загрузить балансировку транзакционных очередей. Вам необходимо убедиться, что хост MSMQ получает сообщения, содержащие IP-адрес отправителя, а не балансировщик нагрузки (если вы его используете). Если вы выполняете балансировку нагрузки с помощью DNS, это, вероятно, не проблема, хотя MSMQ очень липкий, что побеждает балансировку нагрузки.

Нефть и вода - транзакционные сообщения MSMQ и балансировка нагрузки:
http://blogs.msdn.com/b/johnbreakwell/archive/2008/11/18/oil-and-water-msmq-transactional-messages-and-load-balancing.aspx