Как использовать nServiceBus в отказоустойчивом кластере - PullRequest
0 голосов
/ 17 ноября 2011

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

FrontendWebServer -> MiddlewareServer

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

FrontendWebServer -> LoadBalancer (F5) -> MiddlewareServer

FrontendWebServer -> LoadBalancer (F5) -> MiddlewareServer

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

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

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

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

1 Ответ

0 голосов
/ 17 ноября 2011

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

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

...