Версія TL; DR: виявляється, це була глибока помилка мереж Broadcom у Windows Server 2008 R2. Заміна апаратним забезпеченням Intel виправила це. Ми більше не використовуємо апаратне забезпечення Broadcom. Колись.
Ми використовували HAProxy разом із серцебиттям від проекту Linux-HA. Ми використовуємо два екземпляри Linux для забезпечення відмови. У кожного сервера є власний загальнодоступний IP та єдиний IP, який розділяється між двома за допомогою віртуального інтерфейсу (eth1: 1) за IP: 69.59.196.211
Віртуальний інтерфейс (eth1: 1) IP 69.59.196.211 налаштований як шлюз для серверів Windows за ними, і ми використовуємо ip_forwarding для маршрутного трафіку.
Ми спостерігаємо випадкові відключення мережі на одному з наших серверів Windows за нашими шлюзами Linux. HAProxy виявить сервер в автономному режимі, що ми можемо перевірити, видаливши на збій сервер і спробувавши пінг-шлюз:
Pinging 69.59.196.211 з 32 байтами даних: Відповідь від 69.59.196.220: Хост призначення недоступний.
Запуск arp -a
цього невдалого сервера показує, що немає адреси для шлюзу (69.59.196.211):
Інтерфейс: 69.59.196.220 --- 0xa Тип фізичної адреси Інтернет-адреси 69.59.196.161 00-26-88-63-c7-80 динамічний 69.59.196.210 00-15-5d-0a-3e-0e динамічний 69.59.196.212 00-21-5e-4d-45-c9 динамічний 69.59.196.213 00-15-5d-00-b2-0d динамічний 69.59.196.215 00-21-5e-4d-61-1a динамічний 69.59.196.217 00-21-5e-4d-2c-e8 динамічний 69.59.196.219 00-21-5e-4d-38-e5 динамічний 69.59.196.221 00-15-5d-00-b2-0d динамічний 69.59.196.222 00-15-5d-0a-3e-09 динамічний 69.59.196.223 ff-ff-ff-ff-ff-ff статичний 224.0.0.22 01-00-5e-00-00-16 статичний 224.0.0.252 01-00-5e-00-00-fc статичний 225.0.0.1 01-00-5e-00-00-01 статичний
На наших екземплярах шлюзу Linux arp -a
відображається:
peak-colo-196-220.peak.org (69.59.196.220) в <incomplete> на eth1 stackoverflow.com (69.59.196.212) о 00: 21: 5e: 4d: 45: c9 [ефір] в еті1 peak-colo-196-215.peak.org (69.59.196.215) о 00: 21: 5e: 4d: 61: 1a [ефір] в еті1 peak-colo-196-219.peak.org (69.59.196.219) о 00: 21: 5e: 4d: 38: e5 [ефір] в еті1 peak-colo-196-222.peak.org (69.59.196.222) о 00: 15: 5d: 0a: 3e: 09 [ефір] на eth1 peak-colo-196-209.peak.org (69.59.196.209) о 00: 26: 88: 63: c7: 80 [ефір] на eth1 peak-colo-196-217.peak.org (69.59.196.217) о 00: 21: 5e: 4d: 2c: e8 [ефір] в еті1
Чому arp час від часу встановлює запис для цього невдалого сервера як <incomplete>? Чи повинні ми статично визначати наші записи arp? Я завжди залишав арпу в спокої, оскільки вона працює 99% часу, але в цьому одному випадку вона здається невдалою. Чи є якісь додаткові кроки щодо усунення несправностей, які ми можемо вжити для вирішення цієї проблеми?
РЕЧІ, ЩО МИ СКЛАДАЛИ
Я додав статичний запис arp для тестування на одному з шлюзів Linux, який все ще не допомагав.
root@haproxy2:~# arp -a
peak-colo-196-215.peak.org (69.59.196.215) at 00:21:5e:4d:61:1a [ether] on eth1
peak-colo-196-221.peak.org (69.59.196.221) at 00:15:5d:00:b2:0d [ether] on eth1
stackoverflow.com (69.59.196.212) at 00:21:5e:4d:45:c9 [ether] on eth1
peak-colo-196-219.peak.org (69.59.196.219) at 00:21:5e:4d:38:e5 [ether] on eth1
peak-colo-196-209.peak.org (69.59.196.209) at 00:26:88:63:c7:80 [ether] on eth1
peak-colo-196-217.peak.org (69.59.196.217) at 00:21:5e:4d:2c:e8 [ether] on eth1
peak-colo-196-220.peak.org (69.59.196.220) at 00:21:5e:4d:30:8d [ether] PERM on eth1
root@haproxy2:~# arp -i eth1 -s 69.59.196.220 00:21:5e:4d:30:8d
root@haproxy2:~# ping 69.59.196.220
PING 69.59.196.220 (69.59.196.220) 56(84) bytes of data.
--- 69.59.196.220 ping statistics ---
7 packets transmitted, 0 received, 100% packet loss, time 6006ms
Перезавантаження веб-сервера Windows вирішує цю проблему тимчасово, без інших змін у мережі, але наш досвід показує, що ця проблема повернеться.
Обмін мережевими картами та комутаторами
Я помітив, що індикатор посилання на порту комутатора для невдалого сервера Windows працює на 100Mb замість 1Gb на невдалому інтерфейсі. Я перемістив кабель до кількох інших відкритих портів, і посилання вказувало 100 Мбіт для кожного порту, який я спробував. Я також міняв кабель тим самим результатом. Я спробував змінити властивості мережевої картки у вікні та сервері заблокувались та вимагав жорсткого скидання після натискання кнопки застосувати. Цей сервер Windows має два фізичні мережеві інтерфейси, тому я поміняв кабелі та мережеві налаштування на двох інтерфейсах, щоб побачити, чи не відповідає проблема за інтерфейсом. Якщо загальнодоступний інтерфейс знову знизиться, ми будемо знати, що це не проблема з мережевою картою.
(Ми також спробували інший перемикач, який ми маємо під рукою, без змін)
Зміна версій мережевих драйверів апаратних засобів
У нас були ті ж проблеми з останнім драйвером Broadcom, а також із вбудованим драйвером, який постачається в Windows Server 2008 R2.
Заміна мережевих кабелів
Як останнє зусилля канави, ми згадали ще одну зміну, яка відбулася - заміна всіх патч-кордів між нашими серверами / комутатором. Ми придбали два набори, один зелений довжиною 1 фут - 3 фути для приватних інтерфейсів та інший набір червоних кабелів для публічних інтерфейсів. Ми обміняли всі патчі загальнодоступного інтерфейсу на іншу марку і без проблем запускали наші сервери протягом цілого тижня ... aaaaaand тоді проблема повторилася.
Вимкніть завантаження контрольної суми, видаліть TProxy
Ми також намагалися відключити завантаження контрольної суми TCP / IP у драйвері, без змін. Зараз ми витягуємо TProxy і переходимо до більш традиційного x-forwarded-for
мережевого розташування без будь-якого фантазійного перезапису IP-адреси. Ми побачимо, чи допоможе це.
Переключити постачальників віртуалізації
З випадкових випадків це було пов’язано з Hyper-V певним чином (ми на ньому розміщуємо VM Linux), ми перейшли на сервер VMWare. Без змін.
Переключити модель хоста
Ми дійшли до кінця мотузки з усунення несправностей і зараз офіційно залучаємо підтримку Microsoft. Вони рекомендували змінити модель хоста:
- http://en.wikipedia.org/wiki/Host_model
- http://technet.microsoft.com/en-us/magazine/2007.09.cableguy.aspx
Ми зробили це, і ми також отримали кілька неопублікованих виправлень ядра, які, ймовірно, були перенесені в R2 SP1 2008 року. Немає виправлень.
Заміна апаратного забезпечення мережевої карти
Зрештою, заміна апаратного забезпечення мережі Broadcom на мережеве апаратне забезпечення Intel вирішила цю проблему для нас. Тому я схильний думати, що драйвери Broadcom Windows Server 2008 R2 винні!