Я установил NLB с двумя серверами (узлами), на которых запущена одна и та же служба. Фильтрация - это один хост, потому что я не хочу, чтобы они запускались одновременно, потому что в базе данных кеша есть данные, поэтому каждый раз, когда появляются новые данные или аварийное переключение, мне нужно будет перезапустить вторую службу, чтобы обновить ее. .
Как я могу узнать, какой сервер в кластере отвечает? (Меня не волнует, используется ли здесь команда, сценарий, C # или что-то еще. Я еще не решил, что использовать: мне просто нужно самое простое.)
Я использую SQL Server 2008 R2.
Во-вторых (что менее важно): есть ли для этого хороший инструмент мониторинга? Я искал Spiceworks, Zabbix или Nagios.
Не зная, как вы «вызываете кластер», мы не можем на это ответить.
Если вы используете что-то, что может предоставить вам локальную оболочку, вы можете запросить системную переменную COMPUTERNAME. А затем, как бы вы это ни сделали, вы можете настроить решение для мониторинга таким же образом и выдавать тот же запрос.
Есть протоколы, которые возвращают имя (часто настраиваемое, часто имя хоста по умолчанию), когда они подключены, например SMTP. Так что, если это настраиваемое соединение, которое вы установили, возможно, вы сможете добавить диагностику в сам протокол.
Моя точка зрения остается неизменной - если вы используете NLB для кластеризации SQL, вы делаете это неправильно. Если вы использовали настоящие службы кластеров Windows, вы можете гарантировать, что определенные службы всегда работают на активном узле, а не на пассивном, поэтому знание того, какой узел не должно быть вопросом, который ваши клиенты должны задавать.