Хаос-тестування мережі у Windows
Хаос-тестування означає навмисно щось зламати, поки ви спостерігаєте, щоб дізнатися, що ваше програмне забезпечення з цим робить. На рівні мережі саме цим і є цей інструмент: способом внести збій в один застосунок і побачити, чи той вистоїть.
Збої, які можна внести
| Збій | Що він моделює |
|---|---|
| Втрата, пошкодження, дублювання | Погіршений шлях. Пакети зникають, приходять пошкодженими або приходять двічі. |
| Затримка, джитер, стрибки | Повільний чи нестабільний шлях, зокрема багатосекундне зависання, що ламає тайм-аути. |
| Скидання з’єднань | Брандмауер або балансувальник навантаження, що вбиває з’єднання посеред передавання. |
| Обриви каналу | Шлях, що зникає й повертається циклами. |
| Заблокована адреса чи порт | Одна залежність недоступна, а все інше працює. |
| Інтернету немає, LAN живий | Форма captive portal: локальне працює, світ ні. |
Що відрізняє хаос від шуму: повторюваність
Випадковий збій, який не можна відтворити, дає історію, а не звіт про помилку. Кожне випадкове рішення тут походить із seed, тож та сама команда відтворює той самий запуск: ті самі втрачені пакети, той самий джитер, у тому самому порядку:
BeanNetworkTester.exe --loss 15 --rst-prob 5 --seed 42 --target myapp.exe --duration 120
Це різниця між «минулого вівторка воно один раз упало» і тестом, що падає і який може запустити хтось інший.
У pipeline
Командний рядок повідомляє результат кодами завершення, тож збірка може відрізнити «застосунок зазнав збою» від «інструмент не зміг запуститися», а сеанс закінчується сам, тому немає кроку очищення, про який можна забути:
BeanNetworkTester.exe --loss 10 --rst-prob 5 --target myapp.exe --duration 90 --format json > chaos.ndjson
Послідовність збоїв замість одного є файлом сценарію, і такі файли теж повторювані. Дивіться сценарії в часі і тести мережі в CI, щоб дізнатися про коди завершення та потрібний раннер.
Де закінчується радіус дії
Є два обмеження, і обидва навмисні. Погіршення досягає одного процесу, PID, адреси чи порту, коли ви цілитеся, тож комп’ютер, на якому ви працюєте, продовжує працювати. І це одна машина: це внесення збоїв для клієнта та його з’єднання, а не для кластера. Якщо ви шукаєте хаос між службами й вузлами, це інший вид інструмента, а цей є тією ланкою, що ламає мережу під одним застосунком Windows.
Усе оборотне на місці. STOP відновлює мережу, обмеження за часом робить те саме, а watchdog усередині інструмента вимикає перехоплення, якщо сам інструмент помирає: збій, який ви внесли, ніколи не має пережити запуск, що його вніс.