Розмикання ланцюга
У цьому завданні показано, як налаштувати розмикання ланцюга (запобіжника) для зʼєднань, запитів і виявлення відхилень.
Розмикання ланцюга є важливим шаблоном для створення відмовостійких мікросервісних застосунків. Розмикання ланцюгів дозволяє створювати застосунки, які обмежують вплив збоїв, стрибків затримок та інших небажаних ефектів, пов’язаних з особливостями мережі.
У цьому завданні ви налаштуєте правила розмикання ланцюга, а потім протестуєте конфігурацію, навмисно «вимкнувши» запобіжник.
Перш ніж почати
- Налаштуйте Istio, дотримуючись інструкцій у керівництві з встановлення5.
Запустіть зразок httpbin6.
Якщо ви увімкнули автоматичну інʼєкцію sidecar, розгорніть сервіс
httpbin
:В іншому випадку вам потрібно вручну додати sidecar перед розгортанням застосунку
httpbin
:
Застосунок httpbin
виконує роль бекенд-сервісу для цього завдання.
Налаштування запобіжника
Створіть правило призначення8, щоб застосувати налаштування розмикання ланцюга при виклику сервісу
httpbin
:Переконайтесь, що правило було створено:
Додавання клієнта
Створіть клієнта для надсилання трафіку до сервісу httpbin
. Клієнт — це простий інструмент для навантажувального тестування з назвою fortio9. Fortio дозволяє вам контролювати кількість зʼєднань, одночасність і затримки для вихідних HTTP запитів. Ви будете використовувати цей клієнт, щоб “вимкнути” політики розриву ланцюга, які ви встановили в DestinationRule
.
Виконайте інʼєкцію клієнта з проксі-сервером Istio, щоб мережеві взаємодії керувалися Istio.
Якщо ви увімкнули автоматичну інʼєкцію sidecar, розгорніть сервіс
fortio
:В іншому випадку вам потрібно вручну виконати інʼєкцію sidecar перед розгортанням застосунку
fortio
:Увійдіть до podʼа клієнта і використовуйте інструмент fortio для виклику
httpbin
. Скористайтесьcurl
, щоб вказати, що ви хочете зробити лише один виклик:
Ви можете бачити, що запит пройшов успішно! Тепер настав час щось зламати.
Використання запобіжника
У налаштуваннях DestinationRule
ви вказали maxConnections: 1
і http1MaxPendingRequests: 1
. Ці правила вказують на те, що якщо у вас більше ніж одне одночасне зʼєднання та запит, ви повинні побачити деякі відмови, коли istio-proxy
відкриє ланцюг для подальших запитів та зʼєднань.
Викличте сервіс з двома одночасними зʼєднаннями (
-c 2
) і надішліть 20 запитів (-n 20
):Цікаво, що майже всі запити були виконані! Проксі-сервер
istio-proxy
дійсно дозволяє деяку свободу дій.Доведіть кількість одночасних зʼєднань до 3:
Тепер ви починаєте бачити очікувану поведінку запобіжника. Лише 36.7% запитів були успішними, а решта була перехоплена запобіжником:
Щоб дізнатися більше, перегляньте статистику
istio-proxy
:Ви можете побачити
21
для значенняupstream_rq_pending_overflow
, що означає, що поки що21
викликів було позначено для обробки запобіжником.
Очищення
Видаліть правило:
Припиніть роботу сервісу httpbin6 та клієнта: