Мы планируем разработать высокодоступную систему на основе Microsoft Message Queuing (MSMQ). В настоящее время мы собираем варианты высокой доступности для MSMQ. Мы планируем использовать Windows Server 2008R2 в качестве базовой операционной системы.
Какие конкретные технологии доступны для обеспечения высокой доступности службы MSMQ?
Мы рассмотрели отказоустойчивую кластеризацию Windows и NLB, но кластеризация, похоже, имеет слишком большое время переключения при отказе (более 10 секунд), а NLB не поддерживает обмен транзакционными сообщениями.
Есть ли у кого-нибудь опыт работы с такими решениями, как VM Ware Fault Tolerance или что-то подобное? Известны ли вам какие-либо другие решения, обеспечивающие высокую доступность для MSMQ, при этом поддерживая низкое время переключения при отказе (<5 секунд) и обмен транзакционными сообщениями?
Вы определенно захотите изучить возможность кластеризации Server 2008. Вы можете настроить приложение службы очереди сообщений для обеспечения высокой доступности и отказоустойчивости. Основным условием для его настройки является наличие SAN.
http://msdn.microsoft.com/en-us/library/dd897482(v=bts.10).aspx
Также, если вы хотите получить отличный обзор того, как это настроить, посетите виртуальную лабораторию Microsoft: http://go.microsoft.com/?linkid=7091154
Боюсь, MSMQ - не лучшее решение, если вам нужна HA. А как насчет других продуктов? Я бы посоветовал проверить RabbitMQ, он поддерживается достаточно хорошо и миграция не очень болезненна.
Если вам нужно время переключения при отказе ниже типичного для MSCS (оно, как правило, довольно медленное), подумайте о настройке NLB с MSMQ через HTTP.
Это позаботится о доступности и может масштабироваться до десятков узлов.