Наличие двух гостевых ОС Windows Server 2016, размещенных на Hyper-V Server 2016. Кластер гостевой ОС очень ненадежен, и один из узлов постоянно помещается в карантин (несколько раз в день).
Еще у меня кластер Windows Server 2012R2. Они размещаются на одних и тех же хостах Hyper-V и не вызывают никаких проблем. Это означает, что у меня будет та же сетевая и Hyper-v инфраструктура между 2012 R2 и 2016.
Дальнейшая конфигурация для хостов 2016:
Я знаю КАКИЕ бывает, но не знаю ЗАЧЕМ. В КАКИЕ:
000026d0.000028b0::2019/06/20-10:58:06.832 ERR [CHANNEL fe80::7902:e234:93bd:db76%6:~3343~]/recv: Failed to retrieve the results of overlapped I/O: 10060
000026d0.000028b0::2019/06/20-10:58:06.909 ERR [NODE] Node 1: Connection to Node 2 is broken. Reason (10060)' because of 'channel to remote endpoint fe80::7902:e234:93bd:db76%6:~3343~ has failed with status 10060'
...
000026d0.000028b0::2019/06/20-10:58:06.909 WARN [NODE] Node 1: Initiating reconnect with n2.
000026d0.000028b0::2019/06/20-10:58:06.909 INFO [MQ-...SQL2] Pausing
000026d0.000028b0::2019/06/20-10:58:06.910 INFO [Reconnector-...SQL2] Reconnector from epoch 1 to epoch 2 waited 00.000 so far.
000026d0.00000900::2019/06/20-10:58:08.910 INFO [Reconnector-...SQL2] Reconnector from epoch 1 to epoch 2 waited 02.000 so far.
000026d0.00002210::2019/06/20-10:58:10.910 INFO [Reconnector-...SQL2] Reconnector from epoch 1 to epoch 2 waited 04.000 so far.
000026d0.00002fc0::2019/06/20-10:58:12.910 INFO [Reconnector-...SQL2] Reconnector from epoch 1 to epoch 2 waited 06.000 so far.
...
000026d0.00001c54::2019/06/20-10:59:06.911 INFO [Reconnector-...SQL2] Reconnector from epoch 1 to epoch 2 waited 1:00.000 so far.
000026d0.00001c54::2019/06/20-10:59:06.911 WARN [Reconnector-...SQL2] Timed out, issuing failure report.
...
000026d0.00001aa4::2019/06/20-10:59:06.939 INFO [RouteDb] Cleaning all routes for route (virtual) local fe80::e087:77ce:57b4:e56c:~0~ to remote fe80::7902:e234:93bd:db76:~0~
000026d0.00001aa4::2019/06/20-10:59:06.939 INFO <realLocal>10.250.2.10:~3343~</realLocal>
000026d0.00001aa4::2019/06/20-10:59:06.939 INFO <realRemote>10.250.2.11:~3343~</realRemote>
000026d0.00001aa4::2019/06/20-10:59:06.939 INFO <virtualLocal>fe80::e087:77ce:57b4:e56c:~0~</virtualLocal>
000026d0.00001aa4::2019/06/20-10:59:06.939 INFO <virtualRemote>fe80::7902:e234:93bd:db76:~0~</virtualRemote>
Теперь ПОЧЕМУ ... Почему это так? Я не знаю. Обратите внимание, что на минуту раньше он жалуется: Failed to retrieve the results of overlapped I/O
. Но я все еще вижу отправленные / полученные UDP-пакеты
пока маршрут не был удален в 10:59:06 и пингует только 1 узел, но нет понгов. Как видно из wirehark, в исходном столбце нет IP 10.0.0.19 и 10.250.2.10.
Маршрут добавляется повторно примерно через ~ 35 секунд, но это не помогает - узел уже помещен в карантин на 3 часа.
Что мне здесь не хватает?
У меня была такая же проблема с отказоустойчивым кластером Windows Server 2019 (для Hyper-V 2019). Я обычно также отключаю IPv6 на своих серверах, и это вызывает проблемы. Кластер выдавал множество критических ошибок и иногда выполнял жесткую отработку отказа, хотя файловый ресурс-свидетель тоже был на месте и работал (?!).
Ошибки и предупреждения, которые я заметил в журнале событий:
Идентификаторы событий FailoverClustering:
Идентификаторы событий Service Control Manager:
FailoverClustering-Client
Благодаря вашему исследованию я получил важную подсказку: скрытый адаптер по-прежнему использует IPv6. Поскольку в статье, на которую вы ссылались, говорилось, что отключать IPv6 на скрытом адаптере не рекомендуется, но отключение его на всех других адаптерах поддерживалось и тестировалось, мне было интересно, что мешало ему работать.
Используя следующую команду, я вытащил журналы кластера (также спасибо за подсказку! Я не знал об этой полезной команде):
# -Destination (Folder) in my case changed to be not on the "C:\" SATADOM (this thing is slow and has few write cycles)
# -TimeSpan (in minutes) limited to one of the Failovers because these logs get HUGE otherwise.
Get-ClusterLog -Destination "E:\" -TimeSpan 5
К сожалению, у меня были те же записи журнала, которые вы уже разместили.
Я повторно включил IPv6 на всех адаптерах и вернул свои адаптеры / конфигурации, связанные с туннелем, с помощью:
Set-Net6to4Configuration -State Default
Set-NetTeredoConfiguration -Type Default
Set-NetIsatapConfiguration -State Default
Это не помогло ... Заглянув дальше, я заметил, что я также всегда отключаю «ненужные» правила брандмауэра, связанные с IPv6 ... И это казалось действительно важным изменением! Эти правила, похоже, влияют и на невидимый адаптер.
Дело в том, что IPv6 не использует ARP для поиска MAC-адресов своих партнеров по связи. Он использует протокол обнаружения соседей. И этот протокол не работает, если вы отключите соответствующие правила межсетевого экрана. Хотя вы можете проверить записи IPv4 ARP с помощью:
arp -a
Это не покажет вам MAC-адреса для адресов IPv6. Для тех, кто может использовать:
netsh interface ipv6 show neighbors level=verbose
При желании можно отфильтровать вывод по адресам адаптера IPv6 следующим образом:
netsh interface ipv6 show neighbors level=verbose | sls ".*fe80::1337:1337:1234:4321.*" -Context 4 |%{$_.Line,$_.Context.PostContext,""}
При этом я обнаружил, что эти записи кажутся очень недолговечными. Состояние записи для локального адреса связи Microsoft «Виртуальный адаптер отказоустойчивого кластера» партнера по кластеру всегда переключалось между «достижимо» и «зондом». Я не понял момента, когда он был «недоступен», но после повторного включения правил IPv6 проблема исчезла:
Get-NetFirewallRule -ID "CoreNet-ICMP6-*" | Enable-NetFirewallRule
Каким-то образом кажется, что этот MAC-адрес обменивается другим способом между партнерами по кластеру (возможно, потому, что это «виртуальный удаленный» адрес, а не реальный?). Таким образом, он продолжает появляться, что приводит к этим диким состояниям аварийного переключения / карантина / изолированного состояния.
Возможно, отключение IPv6 на невидимом адаптере тоже помогло бы, но, поскольку это не рекомендуется, я решил полностью прекратить отключение связанных с IPv6 вещей. В любом случае, это будущее :-)
Надеюсь, это поможет другому блокировщику IPv6!