У меня такая ситуация:
Мне нужно развернуть службу Windows, которая прослушивает входящий запрос на порт TCP (в основном служба WCF). У меня есть требование высокой доступности - служба должна быть развернута на двух серверах, и если служба останавливается (только служба, а не весь сервер) на одном сервере, все запросы должны быть перенаправлены на второй. Для меня это похоже на базовый сценарий аварийного переключения.
Как я могу добиться этого в Windows Server 2003? Что мне следует использовать - Microsoft Cluster Service или балансировку сетевой нагрузки? Важной частью является то, что процесс замены серверов не должен касаться клиентов (клиент должен видеть только один адрес / один хост или доменное имя).
Заранее благодарим за помощь.
Используйте MSCS. Вот почему:
Внутренняя кластеризация (MSCS) - единственный способ кластеризовать службу (требование высокой доступности), но как NLB, так и MSCS позволяют кластеризовать IP-адрес (прослушивать TCP-порт).
Эта конфигурация позволит вам выполнить и то, и другое. Мое единственное предостережение заключается в том, что обычно не рекомендуется иметь кластер MSCS во внешнем интерфейсе (т.е. размещать веб-сайты или что-то в этом роде); обычно он используется для кластеризации серверных файловых серверов, кластеризации sql / exchange и т. д.
Используйте балансировку сетевой нагрузки. Желательно аппаратно. Некоторые (или все или большинство) устройств могут контролировать состояние сервера, отправляя HTTP-запросы. Или даже отправьте xml и проверьте правильность ответа.
NLB - балансировщик нагрузки и забирает неработающий сервис из общего адреса. Именно для чего это сделано.