Я користуюся балансуванням навантаження Alibaba Cloud SLB вже понад 5 років і користуюся ним з моменту початкової внутрішньої бета-версії Alibaba Cloud, а після розгортання виникла така помилка:
Помилки виникають періодично, після початкового завантаження помилки шлюзу 502 немає, після хвилини очікування з'являється помилка, контейнер Windows Server IIS ASP.NET вебсайті.
Натисніть IIS із сервера, щоб відкрити браузер, можна нормально переглядати, проблеми з балансуванням навантаження SLB — це вперше я з цим стикаюся.
Рішення:
Проблема здебільшого виникає в налаштуваннях «Health Check Method», стандартні налаштування такі:
Перевірка стану бекенду запрашується в Headway, і якщо відповідний статус дає 2xx або 3xx, бекенд-сервер вважається нормальним.
Ми намагалися зробити запит на заголовок трьома способами: по-перше, я безпосередньо запустив локальний проєкт і протестував його локально.
Тест 1:
Використовуйте тест листоноші, як показано нижче:
Повертаючись до стану 404 Not Found, тут ми знаємо, що це спричинило.
Тест 2:
Використовуйте тестування на згинання, як показано нижче:
C:\Users\itsvse>curl -i -X HEAD http://localhost:60155/
Warning: Setting custom HTTP method to HEAD with -X/--request may not work the
Warning: way you want. Consider using -I/--head instead. HTTP/1.1 404 не знайдено
Cache-Control: private
Content-Length: 4432
Content-Type: text/html; charset=utf-8
Server: Microsoft-IIS/10.0
X-SourceFiles: =?UTF-8?B?QzpccHJvamVjdFxteVxDb2RlU2hhcmluZ1xDb2RlU2hhcmluZy5XZWJVSVxIb21lXEVycm9yNDA0?=
X-Powered-By: ASP.NET
Date: Tue, 13 Aug 2019 03:53:04 GMT
curl: (56) Recv failure: Connection was reset
Також повертається статус коду 404.
Тест 3:
Цього разу ми тестували безпосередньо на офіційному сервері, через тест curl під PowerShell, як показано на рисунку нижче:
Ви можете побачити, що та сама сторінка запитується через заголовок,Іноді повертаються404статусний код, іноді повертається200Статус коду, що підтверджує періодичні помилки 502, з якими ми стикалися на початку.
Що спричиняє періодичне повернення статусних кодів 404 і 200 asp.net періодично?
Оскільки на нашій головній сторінці є кеш, коли користувач використовує метод get для запиту на головну сторінку, сторінка буде успішно кешована, і тоді голова і get завжди повертатимуть кешовану сторінку, а також верне код відповіді 200, якщо після закінчення кешу жоден користувач не зробить запит на метод get, а лише головний метод через команду, виникає помилка 404. Оцінюється, що мало хто зіткнеться з такою проблемою.
Рішення полягає в тому, щоб перевірити всі коди статусу відповіді в режимі перевірки здоров'я, як показано на рисунку нижче:
Як усунути аномалії перевірки здоров'я на рівні 7 (HTTP/HTTPS):Вхід за гіперпосиланням видно.
(Кінець)
|