Как использовать nServiceBus в отказоустойчивом кластере

Мы используем nServiceBus в нашей среде разработки, где у нас есть интерфейс, публикующий сообщения для службы (подписчика). Жизнь хороша.

FrontendWebServer -> MiddlewareServer

В нашей производственной среде мы будем запускать два внешних интерфейса и два сервера промежуточного программного обеспечения для аварийного переключения.

FrontendWebServer -> LoadBalancer (F5) -> MiddlewareServer

FrontendWebServer -> LoadBalancer (F5) -> MiddlewareServer

Это хорошо работает для URL-адресов, но поскольку нам нужно использовать имена компьютеров для MSMQ, мы застряли.

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

Мы пробовали использовать дистрибьютор nServiceBus (установленный на каждом интерфейсе), но кажется, что подписчик может слушать только одного дистрибьютора.

Есть идеи, как обойти эту проблему без использования отдельных конфигураций?


person Kye    schedule 17.11.2011    source источник
comment
›Внешняя публикация сообщений для меня звучит немного странно. Не могли бы вы подробнее рассказать, какую бизнес-задачу вы решаете? Публикация из внешнего интерфейса обычно плохая идея: make-awesome.com/2010/10/   -  person Andreas Öhlund    schedule 17.11.2011


Ответы (1)


Я бы поставил F5 перед веб-серверами, чтобы сбалансировать эту нагрузку. Для кластера просто укажите имя кластерного сервера и обслуживайте, а не отдельные машины. Например, если у вас есть Node1 и Node2, вы можете вызвать кластер NSBNode или что-то в этом роде.

Если вы сделаете этот кластер распространителем, вы сможете добавить за ним несколько рабочих узлов для дальнейшей балансировки нагрузки. Опять же, в этом случае также сделайте ссылку на имена очереди кластера (queue @ ClusterName).

person Adam Fyles    schedule 17.11.2011