Я системный администратор в библиотеке в Голландии. Наш персонал использует тонких клиентов, которые проводят сеанс удаленного рабочего стола на наших серверах сеансов. У нас есть два сервера сеансов (Windows 2008 R2), настроенные в кластере NLB. Оба сервера виртуализированы. Один в Hyper-V (RDS01), другой в VMWare ESX (RDS03).
Кластер NLB настроен для работы в одноадресном режиме. Оба сервера в кластере NLB имеют два сетевых адаптера. Один для кластера NLB, а другой - для одноранговой связи.
Проблема, с которой мы сталкиваемся, заключается в том, что сеанс удаленного рабочего стола с нашим кластером NLB часто дает сбой (та же ошибка, что и при попытке подключиться к несуществующему IP-адресу или имени хоста). После некоторых копаний я обнаружил, что когда я пытаюсь просмотреть кластер в диспетчере NLB на RDS03, он часто не может "обнаружить" RDS01. И наоборот, работает отлично (от RDS01 до RDS03).
На рисунке 1 ниже показан менеджер NLB на RDS01 (УСПЕХ).
На рисунке 2 ниже показан диспетчер NLB на RDS03 (FAIL).
Как вы можете видеть на первом рисунке, я отключил RDS03 в кластере NLB. Только RDS01 является активным сервером в кластере NLB. Это решает проблему подключения к кластеру NLB (поэтому я предполагаю, что проблема заключается в RDS03).
Я узнал, что NLB Manager использует ICMP для "обнаружения" других хостов в кластере. Поэтому я решил использовать анализатор пакетов (Microsoft Network Monitoring) для проверки пакетов, отправляемых диспетчером NLB. И я заметил в пакете, отправляемом RDS01, что он использует IP-адрес однорангового адаптера на RDS03. В дополнение к этому RDS03 иногда использует IP-адрес кластера NLB RDS01.
Ниже детали пакета, записанные на RDS01.
Frame: Number = 2812, Captured Frame Length = 74, MediaType = ETHERNET
+ Ethernet: Etype = Internet IP (IPv4),DestinationAddress:[00-15-5D-63-97-23],SourceAddress:[00-15-5D-63-96-2B]
+ Ipv4: Src = 10.81.129.159, Dest = 10.81.129.161, Next Protocol = ICMP, Packet ID = 8406, Total IP Length = 60
+ Icmp: Echo Request Message, From 10.81.129.159 To 10.81.129.161
Далее детали пакета записываются на RDS03. Когда Менеджеры NLB отсылают этот пакет, обнаружение терпит неудачу.
Frame: Number = 211, Captured Frame Length = 74, MediaType = ETHERNET
+ Ethernet: Etype = Internet IP (IPv4),DestinationAddress:[02-BF-0A-51-81-A5],SourceAddress:[00-15-5D-63-97-23]
+ Ipv4: Src = 10.81.129.161, Dest = 10.81.129.167, Next Protocol = ICMP, Packet ID = 11326, Total IP Length = 60
+ Icmp: Echo Request Message, From 10.81.129.161 To 10.81.129.167
Как и в прошлом, детали пакета записаны на RDS03. Когда диспетчер NLB отправляет этот пакет, обнаружение успешно.
Frame: Number = 2095, Captured Frame Length = 74, MediaType = ETHERNET
+ Ethernet: Etype = Internet IP (IPv4),DestinationAddress:[00-15-5D-63-96-2B],SourceAddress:[00-15-5D-63-97-23]
+ Ipv4: Src = 10.81.129.161, Dest = 10.81.129.159, Next Protocol = ICMP, Packet ID = 21180, Total IP Length = 60
+ Icmp: Echo Request Message, From 10.81.129.161 To 10.81.129.159
Ниже приведена конфигурация IP для кластера NLB и его серверов.
10.81.129.165 ... IP кластера NLB
10.81.129.167 ... NLB IP для RDS01
10.81.129.169 ... NLB IP для RDS03
10.81.129.159 ... IP RDS01 (второй сетевой адаптер для одноранговой сети)
10.81.129.161 ... IP RDS03 (второй сетевой адаптер для одноранговой сети)
Почему RDS03 использует IP-адрес кластера NLB RDS01? И почему он также использует одноранговый IP-адрес RDS01? Что вызывает это противоречивое поведение?