Врассировка ΠΈ ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³ Π² Istio: микросСрвисы ΠΈ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏ нСопрСдСлСнности

ΠŸΡ€ΠΈΠ½Ρ†ΠΈΠΏ нСопрСдСлСнности Π“Π΅ΠΉΠ·Π΅Π½Π±Π΅Ρ€Π³Π° гласит, Ρ‡Ρ‚ΠΎ нСльзя ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ ΠΈΠ·ΠΌΠ΅Ρ€ΠΈΡ‚ΡŒ ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° ΠΈ Π΅Π³ΠΎ ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ. Если ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ двиТСтся, Ρ‚ΠΎ Ρƒ Π½Π΅Π³ΠΎ Π½Π΅Ρ‚ мСстополоТСния. А Ссли мСстополоТСниС Π΅ΡΡ‚ΡŒ – Π·Π½Π°Ρ‡ΠΈΡ‚ Ρƒ Π½Π΅Π³ΠΎ Π½Π΅Ρ‚ скорости.

Врассировка ΠΈ ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³ Π² Istio: микросСрвисы ΠΈ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏ нСопрСдСлСнности

Π§Ρ‚ΠΎ касаСтся микросСрвисов Π½Π° ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ΅ Red Hat OpenShift (ΠΈ ΠΏΠΎΠ΄ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ΠΌ Kubernetes), Ρ‚ΠΎ благодаря ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π΅ΠΌΡƒ софту с ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΌ ΠΊΠΎΠ΄ΠΎΠΌ ΠΎΠ½ΠΈ ΠΌΠΎΠ³ΡƒΡ‚ ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ Ρ€Π°ΠΏΠΎΡ€Ρ‚ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠ°ΠΊ ΠΎ своСй ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ, Ρ‚Π°ΠΊ ΠΈ ΠΎΠ± исправности. Π‘Ρ‚Π°Ρ€ΠΈΠΊΠ° Π“Π΅ΠΉΠ·Π΅Π½Π±Π΅Ρ€Π³Π° это, ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎ, Π½Π΅ ΠΎΠΏΡ€ΠΎΠ²Π΅Ρ€Π³Π°Π΅Ρ‚, Π½ΠΎ Π·Π°Ρ‚ΠΎ устраняСт Π½Π΅ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΡΡ‚ΡŒ ΠΏΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с ΠΎΠ±Π»Π°Ρ‡Π½Ρ‹ΠΌΠΈ прилоТСниями. Istio позволяСт Π»Π΅Π³ΠΊΠΎ ΠΎΡ€Π³Π°Π½ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ отслСТиваниС (трассировку) ΠΈ ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³ Ρ‚Π°ΠΊΠΈΡ… ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ всС ΠΏΠΎΠ΄ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π΅ΠΌ.

ΠžΠΏΡ€Π΅Π΄Π΅Π»ΡΠ΅ΠΌΡΡ с Ρ‚Π΅Ρ€ΠΌΠΈΠ½ΠΎΠ»ΠΎΠ³ΠΈΠ΅ΠΉ

Под трассировкой (Tracing) ΠΌΡ‹ ΠΏΠΎΠ½ΠΈΠΌΠ°Π΅ΠΌ Π»ΠΎΠ³ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ систСмной активности. Π—Π²ΡƒΡ‡ΠΈΡ‚ довольно ΠΎΠ±Ρ‰ΠΎ, Π½ΠΎ Π½Π° самом Π΄Π΅Π»Π΅ ΠΎΠ΄Π½ΠΎ ΠΈΠ· основных ΠΏΡ€Π°Π²ΠΈΠ» здСсь Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡΠ±Ρ€Π°ΡΡ‹Π²Π°Ρ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅ трассировки Π² ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π΅Π΅ Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅, Π½Π΅ Π·Π°Π±ΠΎΡ‚ΡΡΡŒ ΠΎΠ± ΠΈΡ… Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ. А вся Ρ€Π°Π±ΠΎΡ‚Π° ΠΏΠΎ поиску ΠΈ Π°Π½Π°Π»ΠΈΠ·Ρƒ Π΄Π°Π½Π½Ρ‹Ρ… возлагаСтся Π½Π° ΠΈΡ… потрСбитСля. Π’ Istio ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ систСма трассировки Jaeger, Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΡŽΡ‰Π°Ρ модСль Π΄Π°Π½Π½Ρ‹Ρ… OpenTracing.

Врассами (Traces, ΠΈ слово «трассы» здСсь ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π² Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΈ «слСды», ΠΊΠ°ΠΊ Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π² баллистичСской экспСртизС) ΠΌΡ‹ Π±ΡƒΠ΄Π΅ΠΌ Π½Π°Π·Ρ‹Π²Π°Ρ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ ΠΎΠΏΠΈΡΡ‹Π²Π°ΡŽΡ‚ ΠΏΡ€ΠΎΡ…ΠΎΠΆΠ΄Π΅Π½ΠΈΠ΅ запроса ΠΈΠ»ΠΈ Π΅Π΄ΠΈΠ½ΠΈΡ†Ρƒ Ρ€Π°Π±ΠΎΡ‚Ρ‹, ΠΊΠ°ΠΊ говорится, Β«ΠΎΡ‚ ΠΈ Π΄ΠΎΒ». НапримСр, всё, Ρ‡Ρ‚ΠΎ происходит с ΠΌΠΎΠΌΠ΅Π½Ρ‚Π°, ΠΊΠΎΠ³Π΄Π° ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ ΠΆΠΌΠ΅Ρ‚ ΠΊΠ½ΠΎΠΏΠΊΡƒ Π½Π° Π²Π΅Π±-страницС, ΠΈ Π΄ΠΎ ΠΌΠΎΠΌΠ΅Π½Ρ‚Π° Π²ΠΎΠ·Π²Ρ€Π°Ρ‚Π° Π΄Π°Π½Π½Ρ‹Ρ…, Π²ΠΊΠ»ΡŽΡ‡Π°Ρ всС задСйствованныС ΠΏΡ€ΠΈ этом микросСрвисы. МоТно ΡΠΊΠ°Π·Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΠΎΠ΄Π½Π° трасса ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ описываСт (ΠΈΠ»ΠΈ ΠΌΠΎΠ΄Π΅Π»ΠΈΡ€ΡƒΠ΅Ρ‚) ΠΏΡ€ΠΎΡ…ΠΎΠΆΠ΄Π΅Π½ΠΈΠ΅ запроса Ρ‚ΡƒΠ΄Π° ΠΈ ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎ. Π’ интСрфСйсС Jaeger трассы раскладываСтся Π½Π° ΡΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‰ΠΈΠ΅ ΠΏΠΎ оси Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ, Π²Ρ€ΠΎΠ΄Π΅ Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ Ρ†Π΅ΠΏΡŒ ΠΌΠΎΠΆΠ½ΠΎ Ρ€Π°Π·Π»ΠΎΠΆΠΈΡ‚ΡŒ Π½Π° ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Π΅ звСнья. Волько вмСсто звСньСв трасса состоит ΠΈΠ· Ρ‚Π°ΠΊ Π½Π°Π·Ρ‹Π²Π°Π΅ΠΌΡ‹Ρ… span’ов.

Span – это ΠΈΠ½Ρ‚Π΅Ρ€Π²Π°Π» ΠΎΡ‚ Π½Π°Ρ‡Π°Π»Π° выполнСния Π΅Π΄ΠΈΠ½ΠΈΡ†Ρ‹ Ρ€Π°Π±ΠΎΡ‚Ρ‹ Π΄ΠΎ Π΅Π΅ Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡ. ΠŸΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ°Ρ аналогию, ΠΌΠΎΠΆΠ½ΠΎ ΡΠΊΠ°Π·Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ span прСдставляСт собой ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎΠ΅ Π·Π²Π΅Π½ΠΎ Ρ†Π΅ΠΏΠΈ. Span ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ (ΠΈΠ»ΠΈ Π½Π΅ ΠΈΠΌΠ΅Ρ‚ΡŒ) ΠΎΠ΄ΠΈΠ½ ΠΈΠ»ΠΈ нСсколько Π΄ΠΎΡ‡Π΅Ρ€Π½ΠΈΡ… span’ов. Как слСдствиС, span самого Π²Π΅Ρ€Ρ…Π½Π΅Π³ΠΎ уровня (root span) Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ Ρ‚Ρƒ ΠΆΠ΅ ΠΎΠ±Ρ‰ΡƒΡŽ ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΠΈ трасса, ΠΊ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ ΠΎΠ½ относится.

ΠœΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³ – это, собствСнно, само наблюдСниС Π·Π° вашСй систСмой – Π³Π»Π°Π·Π°ΠΌΠΈ, Ρ‡Π΅Ρ€Π΅Π· UI ΠΈΠ»ΠΈ срСдствами Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·Π°Ρ†ΠΈΠΈ. Π’ основС ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³Π° Π»Π΅ΠΆΠ°Ρ‚ Π΄Π°Π½Π½Ρ‹Π΅ трассировки. Π’ Istio ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ срСдствами Prometheus ΠΈ ΠΈΠΌΠ΅Π΅Ρ‚ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΉ UI. Prometheus ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ автоматичСский ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³ с использованиСм ΠΎΠΏΠΎΠ²Π΅Ρ‰Π΅Π½ΠΈΠΉ Alerts ΠΈ Alert Managers.

ΠžΡΡ‚Π°Π²Π»ΡΠ΅ΠΌ Π·Π°Ρ€ΡƒΠ±ΠΊΠΈ

Π§Ρ‚ΠΎΠ±Ρ‹ трассировка стала Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΠΉ, ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π΄ΠΎΠ»ΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΡŽ span’ов. ΠŸΠΎΡ‚ΠΎΠΌ ΠΈΡ… Π½Π°Π΄ΠΎ ΡΠΊΡΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π² Jaeger, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Ρ‚ΠΎΡ‚ Π² свою ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ создал Π²ΠΈΠ·ΡƒΠ°Π»ΡŒΠ½ΠΎΠ΅ прСдставлСниС трассировки. Π‘Ρ€Π΅Π΄ΠΈ ΠΏΡ€ΠΎΡ‡Π΅Π³ΠΎ эти span’ы ΠΌΠ°Ρ€ΠΊΠΈΡ€ΡƒΡŽΡ‚ имя ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ, Π° Ρ‚Π°ΠΊΠΆΠ΅ Π²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ ΠΌΠ΅Ρ‚ΠΊΠΈ Π΅Π΅ Π½Π°Ρ‡Π°Π»Π° ΠΈ Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡ. ΠŸΠ΅Ρ€Π΅Π΄Π°Ρ‡Π° span’ов выполняСтся ΠΏΡƒΡ‚Π΅ΠΌ пСрСадрСсации ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½Π½Ρ‹Ρ… для Jaeger Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠΎΠ² HTTP-запросов ΠΎΡ‚ входящих запросов ΠΊ исходящим запросам. Π’ зависимости ΠΎΡ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΠΎΠ³ΠΎ языка программирования для этого ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΎΠ²Π°Ρ‚ΡŒΡΡ нСбольшая ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ исходного ΠΊΠΎΠ΄Π° ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ. НиТС приводится ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΊΠΎΠ΄Π° Π½Π° Java (ΠΏΡ€ΠΈ использовании Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΠ° Spring Boot), ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ добавляСт Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠΈ B3 (Zipkin-style) ΠΊ Π²Π°ΡˆΠ΅ΠΌΡƒ запросу Π² ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΌ классС Spring:

Врассировка ΠΈ ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³ Π² Istio: микросСрвисы ΠΈ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏ нСопрСдСлСнности
ΠŸΡ€ΠΈ этом ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ настройки Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠΎΠ²:

Врассировка ΠΈ ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³ Π² Istio: микросСрвисы ΠΈ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏ нСопрСдСлСнности
Если Π²Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅ Java, Ρ‚ΠΎ ΠΊΠΎΠ΄ ΠΌΠΎΠΆΠ½ΠΎ Π½Π΅ Ρ‚Ρ€ΠΎΠ³Π°Ρ‚ΡŒ, Π° просто Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ нСсколько строк Π² POM-Ρ„Π°ΠΉΠ» Maven ΠΈ Π·Π°Π΄Π°Ρ‚ΡŒ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ окруТСния. Π’ΠΎΡ‚ ΠΊΠ°ΠΊΠΈΠ΅ строки Π½Π°Π΄ΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Π² Ρ„Π°ΠΉΠ» POM.XML, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π²Π½Π΅Π΄Ρ€ΠΈΡ‚ΡŒ Jaeger Tracer Resolver:

Врассировка ΠΈ ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³ Π² Istio: микросСрвисы ΠΈ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏ нСопрСдСлСнности
А ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ срСды Π·Π°Π΄Π°ΡŽΡ‚ΡΡ Π² Dockerfile:

Врассировка ΠΈ ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³ Π² Istio: микросСрвисы ΠΈ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏ нСопрСдСлСнности
Всё, Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ всё настроСно, ΠΈ наши микросСрвисы Π½Π°Ρ‡Π½ΡƒΡ‚ Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅ трассировки.

Π‘ΠΌΠΎΡ‚Ρ€ΠΈΠΌ Π² ΠΎΠ±Ρ‰ΠΈΡ… Ρ‡Π΅Ρ€Ρ‚Π°Ρ…

Π’ состав Istio Π²Ρ…ΠΎΠ΄ΠΈΡ‚ ΠΏΡ€ΠΎΡΡ‚Π΅Π½ΡŒΠΊΠ°Ρ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒΠ½Π°Ρ панСль Π½Π° основС Grafana. Когда всС настроСно ΠΈ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Π½Π° ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ΅ Red Hat OpenShift PaaS (Π² нашСм ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ Red Hat OpenShift ΠΈ Kubernetes Ρ€Π°Π·Π²Π΅Ρ€Π½ΡƒΡ‚Ρ‹ Π½Π° minishift), эта панСль запускаСтся ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ:

open "$(minishift openshift service grafana -u)/d/1/istio-dashboard?refresh=5⩝Id=1"

ПанСль Grafana позволяСт быстро ΠΎΡ†Π΅Π½ΠΈΡ‚ΡŒ Ρ€Π°Π±ΠΎΡ‚Ρƒ систСмы. Π€Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚ этой ΠΏΠ°Π½Π΅Π»ΠΈ ΠΏΠΎΠΊΠ°Π·Π°Π½ Π½Π° рисункС Π½ΠΈΠΆΠ΅:

Врассировка ΠΈ ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³ Π² Istio: микросСрвисы ΠΈ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏ нСопрСдСлСнности
Π—Π΄Π΅ΡΡŒ Π²ΠΈΠ΄Π½ΠΎ, Ρ‡Ρ‚ΠΎ микросСрвис customer Π²Ρ‹Π·Ρ‹Π²Π°Π΅Ρ‚ микросСрвис preference v1, Π° Ρ‚ΠΎΡ‚ Π² свою ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ Π²Ρ‹Π·Ρ‹Π²Π°Π΅Ρ‚ микросСрвисы recommendation v1 ΠΈ v2. На ΠΏΠ°Π½Π΅Π»ΠΈ Grafana Π΅ΡΡ‚ΡŒ Π±Π»ΠΎΠΊ Dashboard Row для высокоуровнСвых ΠΌΠ΅Ρ‚Ρ€ΠΈΠΊ, Ρ‚Π°ΠΊΠΈΡ… ΠΊΠ°ΠΊ ΠΎΠ±Ρ‰Π΅Π΅ количСство запросов (Global Request Volume), доля ΡƒΡΠΏΠ΅ΡˆΠ½Ρ‹Ρ… запросов (success rates), ошибки 4xx. ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, Ρ‚Π°ΠΌ Π΅ΡΡ‚ΡŒ прСдставлСниС Server Mesh с Π³Ρ€Π°Ρ„ΠΈΠΊΠ°ΠΌΠΈ для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ сСрвиса ΠΈ Π±Π»ΠΎΠΊ Services Row для просмотра ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½Ρ‹Ρ… свСдСний ΠΏΠΎ ΠΊΠ°ΠΆΠ΄ΠΎΠΌΡƒ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Ρƒ для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ сСрвиса.

Π’Π΅ΠΏΠ΅Ρ€ΡŒ ΠΊΠΎΠΏΠ½Π΅ΠΌ ΠΏΠΎΠ³Π»ΡƒΠ±ΠΆΠ΅

ΠŸΡ€ΠΈ Π³Ρ€Π°ΠΌΠΎΡ‚Π½ΠΎ настроСнной трассировкС Istio, Ρ‡Ρ‚ΠΎ называСтся, прямо ΠΈΠ· ΠΊΠΎΡ€ΠΎΠ±ΠΊΠΈ позволяСт ΡƒΠ³Π»ΡƒΠ±ΠΈΡ‚ΡŒΡΡ Π² Π°Π½Π°Π»ΠΈΠ· ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ систСмы. Π’ Jaeger’овском UI ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΎΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°Ρ‚ΡŒ трассировки ΠΈ Π²ΠΈΠ΄Π΅Ρ‚ΡŒ, ΠΊΠ°ΠΊ Π΄Π°Π»Π΅ΠΊΠΎ ΠΈ Π³Π»ΡƒΠ±ΠΎΠΊΠΎ ΠΎΠ½ΠΈ уходят, Π° Ρ‚Π°ΠΊΠΆΠ΅ Π²ΠΈΠ·ΡƒΠ°Π»ΡŒΠ½ΠΎ Π»ΠΎΠΊΠ°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΡƒΠ·ΠΊΠΈΠ΅ мСста Π² ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ. ΠŸΡ€ΠΈ использовании Red Hat OpenShift Π½Π° ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ΅ minishift запуск Jaeger UI выполняСтС ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ:

minishift openshift service jaeger-query --in-browser

Врассировка ΠΈ ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³ Π² Istio: микросСрвисы ΠΈ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏ нСопрСдСлСнности
Π§Ρ‚ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΡΠΊΠ°Π·Π°Ρ‚ΡŒ ΠΏΡ€ΠΎ трассировку Π½Π° этом скринС:

  • Она разбиваСтся Π½Π° 7 span’ов.
  • ΠžΠ±Ρ‰Π΅Π΅ врСмя выполнСния составляСт 6.99 ms.
  • На микросСрвис recommendation, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ являСтся послСдним Π² Ρ†Π΅ΠΏΠΎΡ‡ΠΊΠ΅, тратится 0.69 ms.

Π”ΠΈΠ°Π³Ρ€Π°ΠΌΠΌΡ‹ Ρ‚Π°ΠΊΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ° ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ быстро Ρ€Π°Π·ΠΎΠ±Ρ€Π°Ρ‚ΡŒΡΡ Π² ситуации, ΠΊΠΎΠ³Π΄Π° ΠΈΠ·-Π·Π° ΠΊΠ°ΠΊΠΎΠ³ΠΎ-Ρ‚ΠΎ ΠΎΠ΄Π½ΠΎΠ³ΠΎ Π½Π΅Π²Π°ΠΆΠ½ΠΎ Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‰Π΅Π³ΠΎ сСрвиса страдаСт ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ всСй систСмы.

А Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ услоТним Π·Π°Π΄Π°Ρ‡Ρƒ ΠΈ запустим Π΄Π²Π° экзСмпляра микросСрвиса recommendation:v2 ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ oc scale —replicas=2 deployment/recommendation-v2. Π’ΠΎΡ‚ ΠΊΠ°ΠΊΠΈΠ΅ Ρƒ нас послС этого Π±ΡƒΠ΄ΡƒΡ‚ pod’ы:

Врассировка ΠΈ ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³ Π² Istio: микросСрвисы ΠΈ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏ нСопрСдСлСнности
Если Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒΡΡ ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎ Π² Jaeger ΠΈ Ρ€Π°Π·Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒ span для сСрвиса recommendation, ΠΌΡ‹ ΡƒΠ²ΠΈΠ΄ΠΈΠΌ, Π½Π° ΠΊΠ°ΠΊΠΎΠΉ pod ΠΌΠ°Ρ€ΡˆΡ€ΡƒΡ‚ΠΈΠ·ΠΈΡ€ΡƒΡŽΡ‚ΡΡ запросы. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, ΠΌΡ‹ ΠΌΠΎΠΆΠ΅Ρ‚ Π»Π΅Π³ΠΊΠΎ Π»ΠΎΠΊΠ°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ‚ΠΎΡ€ΠΌΠΎΠ·Π° Π½Π° ΡƒΡ€ΠΎΠ²Π½Π΅ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠ³ΠΎ podβ€˜Π°. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΏΡ€ΠΈ этом Π½Π°Π΄ΠΎ Π½Π° ΠΏΠΎΠ»Π΅ node_id:

Врассировка ΠΈ ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³ Π² Istio: микросСрвисы ΠΈ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏ нСопрСдСлСнности

ΠšΡƒΠ΄Π° ΠΈ ΠΊΠ°ΠΊ всё Ρ…ΠΎΠ΄ΠΈΡ‚

Π’Π΅ΠΏΠ΅Ρ€ΡŒ ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΈΠΌ Π² интСрфСйс Prometheus ΠΈ Π²ΠΏΠΎΠ»Π½Π΅ ΠΎΠΆΠΈΠ΄Π°Π΅ΠΌΠΎ Π²ΠΈΠ΄ΠΈΠΌ Ρ‚Π°ΠΌ, Ρ‡Ρ‚ΠΎ запросы ΠΌΠ΅ΠΆΠ΄Ρƒ Π²Ρ‚ΠΎΡ€ΠΎΠΉ ΠΈ ΠΏΠ΅Ρ€Π²ΠΎΠΉ вСрсиями сСрвиса recommendation дСлятся Π² ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΠΈ 2:1, строго ΠΏΠΎ количСству Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‰ΠΈΡ… pod’ов. ΠŸΡ€ΠΈΡ‡Π΅ΠΌ этот Π³Ρ€Π°Ρ„ΠΈΠΊ Π±ΡƒΠ΄Π΅Ρ‚ динамичСски ΠΌΠ΅Π½ΡΡ‚ΡŒΡΡ ΠΏΡ€ΠΈ ΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ pod’ов Π²Π²Π΅Ρ€Ρ…-Π²Π½ΠΈΠ·, Ρ‡Ρ‚ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ особСнно ΠΏΠΎΠ»Π΅Π·Π½ΠΎ ΠΏΡ€ΠΈ Canary Deployment (ΠΌΡ‹ ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½Π΅Π΅ рассмотрим эту схСму развСртывания Π² ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ Ρ€Π°Π·).

Врассировка ΠΈ ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³ Π² Istio: микросСрвисы ΠΈ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏ нСопрСдСлСнности

Всё Ρ‚ΠΎΠ»ΡŒΠΊΠΎ начинаСтся

На самом Π΄Π΅Π»Π΅ сСгодня ΠΌΡ‹, Ρ‡Ρ‚ΠΎ называСтся, лишь слСгка Π·Π°Ρ‚Ρ€ΠΎΠ½ΡƒΠ»ΠΈ кладСзь ΠΏΠΎΠ»Π΅Π·Π½ΠΎΠΉ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΎ Jaeger, Grafana ΠΈ Prometheus. Π’ ΠΎΠ±Ρ‰Π΅ΠΌ-Ρ‚ΠΎ это ΠΈ Π±Ρ‹Π»Π° наша Ρ†Π΅Π»ΡŒ – Π½Π°ΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ вас Π² Π½ΡƒΠΆΠ½ΠΎΠΌ Π½Π°ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠΈ ΠΈ ΠΏΡ€ΠΈΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒ пСрспСктивы Istio.

И ΠΏΠΎΠΌΠ½ΠΈΡ‚Π΅, всС это ΡƒΠΆΠ΅ встроСно Π² Istio. ΠŸΡ€ΠΈ использовании ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Ρ… языков программирования (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Java) ΠΈ Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΠΎΠ² (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Spring Boot) всё это ΠΌΠΎΠΆΠ½ΠΎ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ, ΡΠΎΠ²Π΅Ρ€ΡˆΠ΅Π½Π½ΠΎ Π½Π΅ трогая сам ΠΊΠΎΠ΄ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ. Π”Π°, ΠΊΠΎΠ΄ придСтся слСгка ΠΌΠΎΠ΄ΠΈΡ„ΠΈΡ†ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ, Ссли Π²Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ языки, Π² ΠΏΠ΅Ρ€Π²ΡƒΡŽ ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ ΠΈΠΌΠ΅ΡŽΡ‚ΡΡ Π² Π²ΠΈΠ΄Ρƒ Nodejs ΠΈΠ»ΠΈ C#. Но ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΎΡ‚ΡΠ»Π΅ΠΆΠΈΠ²Π°Π΅ΠΌΠΎΡΡ‚ΡŒ (Ρ‡ΠΈΡ‚Π°ΠΉ, «трассировка») являСтся ΠΎΠ΄Π½ΠΈΠΌ ΠΈΠ· ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… условий ΠΏΡ€ΠΈ создании Π½Π°Π΄Π΅ΠΆΠ½Ρ‹Ρ… ΠΎΠ±Π»Π°Ρ‡Π½Ρ‹Ρ… систСм, Π²Π°ΠΌ Π² любом случаС придСтся ΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ ΠΊΠΎΠ΄, Π΅ΡΡ‚ΡŒ Ρƒ вас Istio ΠΈΠ»ΠΈ Π½Π΅Ρ‚. Π’Π°ΠΊ ΠΏΠΎΡ‡Π΅ΠΌΡƒ Π±Ρ‹ Π½Π΅ ΠΏΠΎΡ‚Ρ€Π°Ρ‚ΠΈΡ‚ΡŒ усилия с большСй пользой?

Π₯отя Π±Ρ‹ для Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ всСгда ΠΎΡ‚Π²Π΅Ρ‡Π°Ρ‚ΡŒ Π½Π° вопросы Β«Π³Π΄Π΅?Β» ΠΈ Β«ΠΊΠ°ΠΊ быстро?Β» со 100% ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΡΡ‚ΡŒΡŽ.

Π₯аос-ΠΈΠ½ΠΆΠΈΠ½ΠΈΡ€ΠΈΠ½Π³ Π² Istio: Ρ‚Π°ΠΊ ΠΈ Π±Ρ‹Π»ΠΎ Π·Π°Π΄ΡƒΠΌΠ°Π½ΠΎ

Π£ΠΌΠ΅Π½ΠΈΠ΅ Π»ΠΎΠΌΠ°Ρ‚ΡŒ Π²Π΅Ρ‰ΠΈ ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ‚ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Ρ‚Π°ΠΊ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ½ΠΈ Π½Π΅ ломались

ВСстированиС софта – Π²Π΅Ρ‰ΡŒ Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ слоТная, Π½ΠΎ ΠΈ ваТная. Π’ Ρ‚ΠΎ ΠΆΠ΅ врСмя тСстированиС Π½Π° ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎΡΡ‚ΡŒ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Π»ΠΈ функция Π²Π΅Ρ€Π½Ρ‹ΠΉ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚) – это ΠΎΠ΄Π½ΠΎ, Π° тСстированиС Π² условиях Π½Π΅Π½Π°Π΄Π΅ΠΆΠ½ΠΎΠΉ сСти – это совсСм другая Π·Π°Π΄Π°Ρ‡Π° (часто считаСтся, Ρ‡Ρ‚ΠΎ ΡΠ΅Ρ‚ΡŒ всСгда Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Π±Π΅Π· сбоСв, ΠΈ это ΠΏΠ΅Ρ€Π²Π΅ΠΉΡˆΠ΅Π΅ ΠΈΠ· восьми Π·Π°Π±Π»ΡƒΠΆΠ΄Π΅Π½ΠΈΠΉ ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ распрСдСлСнных вычислСний). Одна ΠΈΠ· слоТностСй ΠΏΡ€ΠΈ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠΈ этой Π·Π°Π΄Π°Ρ‡ΠΈ Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² Ρ‚ΠΎΠΌ, ΠΊΠ°ΠΊ ΠΈΠΌΠΈΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ сбои Π² систСмС ΠΈΠ»ΠΈ Π²Π½ΠΎΡΠΈΡ‚ΡŒ ΠΈΡ… Π½Π°ΠΌΠ΅Ρ€Π΅Π½Π½ΠΎ, выполняя Ρ‚Π°ΠΊ Π½Π°Π·Ρ‹Π²Π°Π΅ΠΌΡ‹ΠΉ fault injection. Π­Ρ‚ΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π΄Π΅Π»Π°Ρ‚ΡŒ ΠΏΡƒΡ‚Π΅ΠΌ ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ исходного ΠΊΠΎΠ΄Π° самого прилоТСния. Но Ρ‚ΠΎΠ³Π΄Π° Π²Ρ‹ Π±ΡƒΠ΄Π΅Ρ‚Π΅ Ρ‚Π΅ΡΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΡƒΠΆΠ΅ Π½Π΅ свой ΠΈΠ·Π½Π°Ρ‡Π°Π»ΡŒΠ½Ρ‹ΠΉ ΠΊΠΎΠ΄, Π° Π΅Π³ΠΎ Π²Π΅Ρ€ΡΠΈΡŽ, которая ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎ ΠΈΠΌΠΈΡ‚ΠΈΡ€ΡƒΠ΅Ρ‚ сбои. Π’ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ Π²Ρ‹ рискуСтС ΡƒΠ³ΠΎΠ΄ΠΈΡ‚ΡŒ Π² ΡΠΌΠ΅Ρ€Ρ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ ΠΎΠ±ΡŠΡΡ‚ΠΈΡ fault injection ΠΈ ΡΡ‚ΠΎΠ»ΠΊΠ½ΡƒΡ‚ΡŒ с Π³Π΅ΠΉΠ·Π΅Π½Π±Π°Π³Π°ΠΌΠΈ – сбоями, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈΡΡ‡Π΅Π·Π°ΡŽΡ‚ ΠΏΡ€ΠΈ ΠΏΠΎΠΏΡ‹Ρ‚ΠΊΠ΅ ΠΈΡ… ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠΈΡ‚ΡŒ.

А Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ ΠΌΡ‹ ΠΏΠΎΠΊΠ°ΠΆΠ΅ΠΌ, ΠΊΠ°ΠΊ Istio ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ‚ ΡΠΏΡ€Π°Π²ΠΈΡ‚ΡŒΡΡ с этими слоТностями Π½Π° Ρ€Π°Π·-Π΄Π²Π°.

Как всё выглядит, ΠΊΠΎΠ³Π΄Π° всё ΠΎΡ‚Π»ΠΈΡ‡Π½ΠΎ

Рассмотрим ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ сцСнарий: Ρƒ нас Π΅ΡΡ‚ΡŒ Π΄Π²Π° pod’а для нашСго микросСрвиса recommendation, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΡ‹ взяли ΠΈΠ· ΡƒΡ‡Π΅Π±Π½ΠΈΠΊΠ° ΠΏΠΎ Istio. Один pod ΠΏΠΎΠΌΠ΅Ρ‡Π΅Π½ ΠΊΠ°ΠΊ v1, Π° Π΄Ρ€ΡƒΠ³ΠΎΠΉ – ΠΊΠ°ΠΊ v2. Как Π²ΠΈΠ΄ΠΈΠΌ, ΠΏΠΎΠΊΠ° всё Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ ΠΎΡ‚Π»ΠΈΡ‡Π½ΠΎ:

Врассировка ΠΈ ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³ Π² Istio: микросСрвисы ΠΈ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏ нСопрСдСлСнности
(ΠšΡΡ‚Π°Ρ‚ΠΈ, число справа – это просто счСтчик Π²Ρ‹Π·ΠΎΠ²ΠΎΠ² для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ pod’а)

Но Π½Π°ΠΌ вСдь Π½ΡƒΠΆΠ½ΠΎ ΠΎΡ‚Π½ΡŽΠ΄ΡŒ Π½Π΅ это, Π²Π΅Ρ€Π½ΠΎ? Π§Ρ‚ΠΎ ΠΆ, ΠΏΠΎΠΏΡ€ΠΎΠ±ΡƒΠ΅ΠΌ всё ΡΠ»ΠΎΠΌΠ°Ρ‚ΡŒ, ΡΠΎΠ²Π΅Ρ€ΡˆΠ΅Π½Π½ΠΎ Π½Π΅ трогая исходный ΠΊΠΎΠ΄.

УстраиваСм ΠΏΠ΅Ρ€Π΅Π±ΠΎΠΈ Π² Ρ€Π°Π±ΠΎΡ‚Π΅ микросСрвиса

НиТС ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½ yaml-Ρ„Π°ΠΉΠ» для ΠΏΡ€Π°Π²ΠΈΠ»Π° ΠΌΠ°Ρ€ΡˆΡ€ΡƒΡ‚ΠΈΠ·Π°Ρ†ΠΈΠΈ Istio, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Π² ΠΏΠΎΠ»ΠΎΠ²ΠΈΠ½Π΅ случаСв Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π΄Π°Π²Π°Ρ‚ΡŒ сбой (ΠΎΡˆΠΈΠ±ΠΊΡƒ сСрвСра 503):

Врассировка ΠΈ ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³ Π² Istio: микросСрвисы ΠΈ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏ нСопрСдСлСнности
ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, ΠΌΡ‹ явно прописываСм, Ρ‡Ρ‚ΠΎ Π² ΠΏΠΎΠ»ΠΎΠ²ΠΈΠ½Π΅ случаСв Π΄ΠΎΠ»ΠΆΠ½Π° Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Ρ‚ΡŒΡΡ ошибка 503.

А Π²ΠΎΡ‚ ΠΊΠ°ΠΊ Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π³Π»ΡΠ΄Π΅Ρ‚ΡŒ ΡΠΊΡ€ΠΈΠ½ΡˆΠΎΡ‚ Π·Π°ΠΏΡƒΡ‰Π΅Π½Π½ΠΎΠΉ Π² Ρ†ΠΈΠΊΠ»Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ curl послС Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ ΠΌΡ‹ Π°ΠΊΡ‚ΠΈΠ²ΠΈΡ€ΡƒΠ΅ΠΌ это ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΈΠΌΠΈΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ сбои. Как Π²ΠΈΠ΄ΠΈΠΌ, ΠΏΠΎΠ»ΠΎΠ²ΠΈΠ½Π° запросов Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ ΠΎΡˆΠΈΠ±ΠΊΡƒ 503, ΠΏΡ€ΠΈΡ‡Π΅ΠΌ Π²Π½Π΅ зависимости ΠΎΡ‚ Ρ‚ΠΎΠ³ΠΎ, Π½Π° ΠΊΠ°ΠΊΠΎΠΉ pod – v1 ΠΈΠ»ΠΈ v2 – ΠΎΠ½ΠΈ уходят:

Врассировка ΠΈ ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³ Π² Istio: микросСрвисы ΠΈ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏ нСопрСдСлСнности
Для восстановлСния Π½ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½ΠΎΠΉ Ρ€Π°Π±ΠΎΡ‚Ρ‹ достаточно ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ это ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ, Π² нашСм случаС ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ istioctl delete routerule recommendation-503 -n tutorial. Π—Π΄Π΅ΡΡŒ Tutorial – это имя ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° Red Hat OpenShift, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ наш ΡƒΡ‡Π΅Π±Π½ΠΈΠΊ ΠΏΠΎ Istio.

Вносим искусствСнныС Π·Π°Π΄Π΅Ρ€ΠΆΠΊΠΈ

Π˜ΡΠΊΡƒΡΡΡ‚Π²Π΅Π½Π½Ρ‹Π΅ ошибки 503 ΠΏΠΎΠΌΠΎΠ³Π°ΡŽΡ‚ ΠΏΡ€ΠΎΡ‚Π΅ΡΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ систСму Π½Π° ΡƒΡΡ‚ΠΎΠΉΡ‡ΠΈΠ²ΠΎΡΡ‚ΡŒ ΠΊ сбоям, Π½ΠΎ ΡΠΏΠΎΡΠΎΠ±Π½ΠΎΡΡ‚ΡŒ ΠΏΡ€ΠΎΠ³Π½ΠΎΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΈ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒ Π·Π°Π΄Π΅Ρ€ΠΆΠΊΠΈ Π΄ΠΎΠ»ΠΆΠ½Π° Π²ΠΏΠ΅Ρ‡Π°Ρ‚Π»ΠΈΡ‚ΡŒ вас Π΅Ρ‰Π΅ большС. Π”Π° ΠΈ Π·Π°Π΄Π΅Ρ€ΠΆΠΊΠΈ Π² Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΠΉ ΠΆΠΈΠ·Π½ΠΈ ΡΠ»ΡƒΡ‡Π°ΡŽΡ‚ΡΡ Ρ‡Π°Ρ‰Π΅, Ρ‡Π΅ΠΌ сбои. МСдлСнно Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‰ΠΈΠΉ микросСрвис – это яд, ΠΎΡ‚ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ страдаСт вся систСма. Благодаря Istio ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΎΡ‚Π΅ΡΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠ΄, относящийся ΠΊ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ Π·Π°Π΄Π΅Ρ€ΠΆΠ΅ΠΊ, Π½ΠΈΠΊΠ°ΠΊ Π΅Π³ΠΎ ΠΏΡ€ΠΈ этом Π½Π΅ мСняя. Для Π½Π°Ρ‡Π°Π»Π° ΠΌΡ‹ ΠΏΠΎΠΊΠ°ΠΆΠ΅ΠΌ, ΠΊΠ°ΠΊ это ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Π² случаС искусствСнно Π²Π²Π΅Π΄Π΅Π½Π½Ρ‹Ρ… Π·Π°Π΄Π΅Ρ€ΠΆΠ΅ΠΊ сСти.

ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ послС Ρ‚Π°ΠΊΠΎΠ³ΠΎ тСстирования Π²Π°ΠΌ, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, понадобится (ΠΈΠ»ΠΈ захочСтся) Π΄ΠΎΡ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ свой ΠΊΠΎΠ΄. Π₯ΠΎΡ€ΠΎΡˆΠ°Ρ Π½ΠΎΠ²ΠΎΡΡ‚ΡŒ здСсь Π² Ρ‚ΠΎΠΌ, Π² этом случаС Π²Ρ‹ Π±ΡƒΠ΄Π΅Ρ‚Π΅ Π΄Π΅ΠΉΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ°ΠΊΡ‚ΠΈΠ²Π½ΠΎ, Π° Π½Π΅ Ρ€Π΅Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎ. ИмСнно Ρ‚Π°ΠΊ ΠΈ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒΡΡ Ρ†ΠΈΠΊΠ» Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ: ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅-тСстированиС-обратная связь-ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅-тСстированиС…

Π’ΠΎΡ‚ ΠΊΠ°ΠΊ выглядит ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ, котороС… Π₯отя Π·Π½Π°Π΅Ρ‚Π΅ Ρ‡Ρ‚ΠΎ? Istio Ρ‚Π°ΠΊ прост, Π° этот yaml-Ρ„Π°ΠΉΠ» Ρ‚Π°ΠΊ понятСн, Ρ‡Ρ‚ΠΎ всё Π² этом ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ Π³ΠΎΠ²ΠΎΡ€ΠΈΡ‚ само Π·Π° сСбя, просто взглянитС:

Врассировка ΠΈ ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³ Π² Istio: микросСрвисы ΠΈ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏ нСопрСдСлСнности
Π’ ΠΏΠΎΠ»ΠΎΠ²ΠΈΠ½Π΅ случаСв Ρƒ нас Π±ΡƒΠ΄Π΅Ρ‚ Π²ΠΎΠ·Π½ΠΈΠΊΠ°Ρ‚ΡŒ 7-сСкундная Π·Π°Π΄Π΅Ρ€ΠΆΠΊΠ°. И это вовсС Π½Π΅ Ρ‚ΠΎ ΠΆΠ΅ самоС, ΠΊΠ°ΠΊ Ссли Π±Ρ‹ ΠΌΡ‹ вставили Π² исходный ΠΊΠΎΠ΄ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ sleep, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Istio Ρ€Π΅Π°Π»ΡŒΠ½ΠΎ Π·Π°Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ запрос Π½Π° 7 сСкунд. ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Istio ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ трассировку Jaeger, эта Π·Π°Π΄Π΅Ρ€ΠΆΠΊΠ° ΠΎΡ‚Π»ΠΈΡ‡Π½Π° Π½Π°Π±Π»ΡŽΠ΄Π°Π΅Ρ‚ΡΡ Π² Jaeger’оском UI, ΠΊΠ°ΠΊ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π½Π° скринС Π½ΠΈΠΆΠ΅. ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° Π΄ΠΎΠ»Π³ΠΈΠΉ запрос Π² ΠΏΡ€Π°Π²ΠΎΠΌ Π²Π΅Ρ€Ρ…Π½Π΅ΠΌ ΡƒΠ³Π»Ρƒ Π΄ΠΈΠ°Π³Ρ€Π°ΠΌΠΌΡ‹ – Π΅Π³ΠΎ Π΄Π»ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ составляСт 7.02 сСкунды:

Врассировка ΠΈ ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³ Π² Istio: микросСрвисы ΠΈ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏ нСопрСдСлСнности
Π­Ρ‚ΠΎΡ‚ сцСнарий позволяСт ΠΏΡ€ΠΎΡ‚Π΅ΡΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠ΄ Π² условиях сСтСвых Π·Π°Π΄Π΅Ρ€ΠΆΠ΅ΠΊ. И понятно, Ρ‡Ρ‚ΠΎ, ΡƒΠ±Ρ€Π°Π² это ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ, ΠΌΡ‹ ΡƒΠ±Π΅Ρ€Π΅ΠΌ ΠΈΡΠΊΡƒΡΡΡ‚Π²Π΅Π½Π½ΡƒΡŽ Π·Π°Π΄Π΅Ρ€ΠΆΠΊΡƒ. ΠŸΠΎΠ²Ρ‚ΠΎΡ€ΠΈΠΌΡΡ, Π½ΠΎ ΠΌΡ‹ ΠΎΠΏΡΡ‚ΡŒ сдСлали всё это, Π½ΠΈΠΊΠ°ΠΊ Π½Π΅ трогая исходный ΠΊΠΎΠ΄.

НС ΠΎΡ‚ΡΡ‚ΡƒΠΏΠ°Ρ‚ΡŒ ΠΈ Π½Π΅ ΡΠ΄Π°Π²Π°Ρ‚ΡŒΡΡ

Другая полСзная для хаос-ΠΈΠ½ΠΆΠΈΠ½ΠΈΡ€ΠΈΠ½Π³Π° функция Istio – это ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½Ρ‹Π΅ обращСния ΠΊ сСрвису Π·Π°Π΄Π°Π½Π½ΠΎΠ΅ число Ρ€Π°Π·. Бмысл здСсь Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π½Π΅ ΠΏΡ€Π΅ΠΊΡ€Π°Ρ‰Π°Ρ‚ΡŒ ΠΏΠΎΠΏΡ‹Ρ‚ΠΊΠΈ, ΠΊΠΎΠ³Π΄Π° ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ запрос заканчиваСтся ошибкой 503 – ΠΈ Ρ‚ΠΎΠ³Π΄Π°, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, Π² N-Π½Π°Π΄Ρ†Π°Ρ‚Ρ‹ΠΉ Ρ€Π°Π· Π½Π°ΠΌ ΠΏΠΎΠ²Π΅Π·Π΅Ρ‚. ΠœΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ, сСрвис просто Π½Π΅Π½Π°Π΄ΠΎΠ»Π³ΠΎ ΠΏΡ€ΠΈΠ»Π΅Π³ ΠΏΠΎ Ρ‚ΠΎΠΉ ΠΈΠ»ΠΈ ΠΈΠ½ΠΎΠΉ ΠΏΡ€ΠΈΡ‡ΠΈΠ½Π΅. Π”Π°, эту ΠΏΡ€ΠΈΡ‡ΠΈΠ½Ρƒ Π½Π°Π΄ΠΎ Π±Ρ‹ Ρ€Π°ΡΠΊΠΎΠΏΠ°Ρ‚ΡŒ ΠΈ ΡƒΡΡ‚Ρ€Π°Π½ΠΈΡ‚ΡŒ. Но это ΠΏΠΎΡ‚ΠΎΠΌ, Π° ΠΏΠΎΠΊΠ° Ρ‡Ρ‚ΠΎ ΠΏΠΎΠΏΡ€ΠΎΠ±ΡƒΠ΅ΠΌ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Ρ‚Π°ΠΊ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ систСма ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ°Π»Π° Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ.

Π˜Ρ‚Π°ΠΊ, ΠΌΡ‹ Ρ…ΠΎΡ‚ΠΈΠΌ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ сСрвис врСмя ΠΎΡ‚ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ Π²Ρ‹Π΄Π°Π²Π°Π» ΠΎΡˆΠΈΠ±ΠΊΡƒ 503, Π° Istio послС этого повторял ΠΏΠΎΠΏΡ‹Ρ‚ΠΊΠΈ с Π½ΠΈΠΌ ΡΠ²ΡΠ·Π°Ρ‚ΡŒΡΡ. И Ρ‚ΡƒΡ‚ явно Π½ΡƒΠΆΠ΅Π½ способ Π³Π΅Π½Π΅Ρ€ΠΈΡ‚ΡŒ ΠΎΡˆΠΈΠ±ΠΊΡƒ 503, Π½Π΅ трогая сам код…

Π‘Ρ‚ΠΎΠΏ, ΠΏΠΎΠ³ΠΎΠ΄ΠΈΡ‚Π΅! ΠœΡ‹ ΠΆΠ΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‡Ρ‚ΠΎ это Π΄Π΅Π»Π°Π»ΠΈ.

Π’ΠΎΡ‚ этот Ρ„Π°ΠΉΠ» сдСлаСт Ρ‚Π°ΠΊ, Ρ‡Ρ‚ΠΎ сСрвис recommendation-v2 Π±ΡƒΠ΄Π΅Ρ‚ Π² ΠΏΠΎΠ»ΠΎΠ²ΠΈΠ½Π΅ случаСм Π²Ρ‹Π΄Π°Π²Π°Ρ‚ΡŒ ΠΎΡˆΠΈΠ±ΠΊΡƒ 503:

Врассировка ΠΈ ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³ Π² Istio: микросСрвисы ΠΈ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏ нСопрСдСлСнности
ΠžΡ‡Π΅Π²ΠΈΠ΄Π½ΠΎ, Ρ‡Ρ‚ΠΎ Ρ‡Π°ΡΡ‚ΡŒ запросов Π±ΡƒΠ΄Π΅Ρ‚ Π·Π°ΠΊΠ°Π½Ρ‡ΠΈΠ²Π°Ρ‚ΡŒΡΡ Π½Π΅ΡƒΠ΄Π°Ρ‡Π΅ΠΉ:

Врассировка ΠΈ ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³ Π² Istio: микросСрвисы ΠΈ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏ нСопрСдСлСнности
А Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ задСйствуСм Istio-Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ Retry:

Врассировка ΠΈ ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³ Π² Istio: микросСрвисы ΠΈ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏ нСопрСдСлСнности
Π­Ρ‚ΠΎ ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ ΠΌΠ°Ρ€ΡˆΡ€ΡƒΡ‚ΠΈΠ·Π°Ρ†ΠΈΠΈ Π΄Π΅Π»Π°Π΅Ρ‚ Ρ‚Ρ€ΠΈ ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π° с двухсСкундным ΠΈΠ½Ρ‚Π΅Ρ€Π²Π°Π»ΠΎΠΌ ΠΈ Π΄ΠΎΠ»ΠΆΠ½ΠΎ ΡΠΎΠΊΡ€Π°Ρ‚ΠΈΡ‚ΡŒ (Π° Π² ΠΈΠ΄Π΅Π°Π»Π΅ ΠΈ вовсС ΡƒΠ±Ρ€Π°Ρ‚ΡŒ с Ρ€Π°Π΄Π°Ρ€Π°) ошибки 503:

Врассировка ΠΈ ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³ Π² Istio: микросСрвисы ΠΈ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏ нСопрСдСлСнности
Π Π΅Π·ΡŽΠΌΠΈΡ€ΡƒΠ΅ΠΌ: ΠΌΡ‹ сдСлали Ρ‚Π°ΠΊ, Ρ‡Ρ‚ΠΎ Istio, Π²ΠΎ-ΠΏΠ΅Ρ€Π²Ρ‹Ρ…, Π³Π΅Π½Π΅Ρ€ΠΈΡ‚ ΠΎΡˆΠΈΠ±ΠΊΡƒ 503 для ΠΏΠΎΠ»ΠΎΠ²ΠΈΠ½Ρ‹ запросов. А Π²ΠΎ-Π²Ρ‚ΠΎΡ€Ρ‹Ρ…, Ρ‚ΠΎΡ‚ ΠΆΠ΅ Istio выполняСт Ρ‚Ρ€ΠΈ ΠΏΠΎΠΏΡ‹Ρ‚ΠΊΠΈ ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎ ΡΠ²ΡΠ·Π°Ρ‚ΡŒΡΡ с сСрвисом ΠΏΡ€ΠΈ Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΈΠΈ ошибки 503. Π’ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ всС Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ просто ΠΎΡ‚Π»ΠΈΡ‡Π½ΠΎ. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ Retry, ΠΌΡ‹ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΠ»ΠΈ своС ΠΎΠ±Π΅Ρ‰Π°Π½ΠΈΠ΅ Π½Π΅ ΠΎΡ‚ΡΡ‚ΡƒΠΏΠ°Ρ‚ΡŒ ΠΈ Π½Π΅ ΡΠ΄Π°Π²Π°Ρ‚ΡŒΡΡ.

И Π΄Π°, ΠΌΡ‹ ΠΎΠΏΡΡ‚ΡŒ сдСлали это, ΡΠΎΠ²Π΅Ρ€ΡˆΠ΅Π½Π½ΠΎ Π½Π΅ трогая ΠΊΠΎΠ΄. Всё, Ρ‡Ρ‚ΠΎ Π½Π°ΠΌ понадобилось, – это Π΄Π²Π° ΠΏΡ€Π°Π²ΠΈΠ»Π° ΠΌΠ°Ρ€ΡˆΡ€ΡƒΡ‚ΠΈΠ·Π°Ρ†ΠΈΠΈ Istio:

Врассировка ΠΈ ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³ Π² Istio: микросСрвисы ΠΈ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏ нСопрСдСлСнности

Как Π½Π΅ подвСсти ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ ΠΈΠ»ΠΈ сСмСро ΠΎΠ΄Π½ΠΎΠ³ΠΎ Π½Π΅ ΠΆΠ΄ΡƒΡ‚

А Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ Π²Ρ‹Π²Π΅Ρ€Π½Π΅ΠΌ ΡΠΈΡ‚ΡƒΠ°Ρ†ΠΈΡŽ Π½Π°ΠΈΠ·Π½Π°Π½ΠΊΡƒ ΠΈ рассмотрим сцСнарий, ΠΊΠΎΠ³Π΄Π° Π½Π΅ ΠΎΡ‚ΡΡ‚ΡƒΠΏΠ°Ρ‚ΡŒ ΠΈ Π½Π΅ ΡΠ΄Π°Π²Π°Ρ‚ΡŒΡΡ стоит Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΊΠ°ΠΊΠΎΠ΅-Ρ‚ΠΎ фиксированноС врСмя. А Π·Π°Ρ‚Π΅ΠΌ Π½Π°Π΄ΠΎ просто ΠΏΡ€Π΅ΠΊΡ€Π°Ρ‚ΠΈΡ‚ΡŒ ΠΏΠΎΠΏΡ‹Ρ‚ΠΊΠΈ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ запрос, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π½Π΅ Π·Π°ΡΡ‚Π°Π²Π»ΡΡ‚ΡŒ всСх ΠΆΠ΄Π°Ρ‚ΡŒ ΠΊΠ°ΠΊΠΎΠ³ΠΎ-Ρ‚ΠΎ ΠΎΠ΄Π½ΠΎΠ³ΠΎ тормозящСго сСрвиса. Π˜Π½Π°Ρ‡Π΅ говоря, ΠΌΡ‹ Π½Π΅ Π±ΡƒΠ΄Π΅ΠΌ Π·Π°Ρ‰ΠΈΡ‰Π°Ρ‚ΡŒ ΠΏΠΎΡ‚Π΅Ρ€ΡΠ½Π½ΡƒΡŽ ΠΏΠΎΠ·ΠΈΡ†ΠΈΡŽ, Π° ΠΎΡ‚ΠΎΠΉΠ΄Π΅ΠΌ Π½Π° запасной Ρ€ΡƒΠ±Π΅ΠΆ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π½Π΅ ΠΏΠΎΠ΄Π²ΠΎΠ΄ΠΈΡ‚ΡŒ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ сайта ΠΈ Π½Π΅ Π²Ρ‹Π½ΡƒΠΆΠ΄Π°Ρ‚ΡŒ Π΅Π³ΠΎ Ρ‚ΠΎΠΌΠΈΡ‚ΡŒΡΡ Π² Π½Π΅Π²Π΅Π΄Π΅Π½ΠΈΠΈ.

Π’ Istio ΠΌΠΎΠΆΠ½ΠΎ Π·Π°Π΄Π°Ρ‚ΡŒ Ρ‚Π°ΠΉΠΌΠ°ΡƒΡ‚ выполнСния запроса. Если сСрвис ΠΏΡ€Π΅Π²Ρ‹ΡˆΠ°Π΅Ρ‚ этот Ρ‚Π°ΠΉΠΌΠ°ΡƒΡ‚, возвращаСтся ошибка 504 (Gateway Timeout) – ΠΎΠΏΡΡ‚ΡŒ ΠΆΠ΅ всС это дСлаСтся Ρ‡Π΅Ρ€Π΅Π· ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΡŽ Istio. Но Π½Π°ΠΌ придСтся Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Π² исходный ΠΊΠΎΠ΄ сСрвиса ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ sleep (Π° Π·Π°Ρ‚Π΅ΠΌ, ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎ, Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ rebuild ΠΈ redeploy), Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΈΠΌΠΈΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠ΅Π΄Π»Π΅Π½Π½ΡƒΡŽ Ρ€Π°Π±ΠΎΡ‚Ρƒ сСрвиса. Π£Π²Ρ‹, ΠΈΠ½Π°Ρ‡Π΅ Π½Π΅ получится.

Π˜Ρ‚Π°ΠΊ, ΠΌΡ‹ вставили трСхсСкундный sleep Π² ΠΊΠΎΠ΄ сСрвиса recommendation v2, пСрСсобрали ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΉ ΠΎΠ±Ρ€Π°Π· ΠΈ сдСлали Ρ€Π΅Π΄Π΅ΠΏΠ»ΠΎΠΉ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π°, Π° Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ Π΄ΠΎΠ±Π°Π²ΠΈΠΌ Ρ‚Π°ΠΉΠΌΠ°ΡƒΡ‚ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π³ΠΎ ΠΏΡ€Π°Π²ΠΈΠ»Π° ΠΌΠ°Ρ€ΡˆΡ€ΡƒΡ‚ΠΈΠ·Π°Ρ†ΠΈΠΈ Istio:

Врассировка ΠΈ ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³ Π² Istio: микросСрвисы ΠΈ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏ нСопрСдСлСнности
На скринС Π²Ρ‹ΡˆΠ΅ Π²ΠΈΠ΄Π½ΠΎ, Ρ‡Ρ‚ΠΎ ΠΌΡ‹ бросаСм ΠΏΠΎΠΏΡ‹Ρ‚ΠΊΠΈ ΡΠ²ΡΠ·Π°Ρ‚ΡŒΡΡ с сСрвисом recommendation, Ссли Π½Π΅ ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅ΠΌ ΠΎΡ‚Π²Π΅Ρ‚Π° Π² Ρ‚Π΅Ρ‡Π΅Π½ΠΈΠ΅ ΠΎΠ΄Π½ΠΎΠΉ сСкунды, Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ Π΅Ρ‰Π΅ Π΄ΠΎ Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ Π²ΠΎΠ·Π½ΠΈΠΊΠ½Π΅Ρ‚ ошибка 504. ПослС примСнСния этого ΠΏΡ€Π°Π²ΠΈΠ»Π° ΠΌΠ°Ρ€ΡˆΡ€ΡƒΡ‚ΠΈΠ·Π°Ρ†ΠΈΠΈ (ΠΈ добавлСния трСхсСкундного sleep’а Π² ΠΊΠΎΠ΄ сСрвиса recommendation:v2), ΠΌΡ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠΌ Π²ΠΎΡ‚ Ρ‡Ρ‚ΠΎ:

Врассировка ΠΈ ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³ Π² Istio: микросСрвисы ΠΈ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏ нСопрСдСлСнности
ΠžΠΏΡΡ‚ΡŒ повторяСмся, Π½ΠΎ Ρ‚Π°ΠΉΠΌΠ°ΡƒΡ‚ ΠΌΠΎΠΆΠ½ΠΎ Π·Π°Π΄Π°Ρ‚ΡŒ, Π½ΠΈΠΊΠ°ΠΊ Π½Π΅ трогая исходный ΠΊΠΎΠ΄. А Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ бонус здСсь Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΌΠΎΠ΄ΠΈΡ„ΠΈΡ†ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ свой ΠΊΠΎΠ΄ Ρ‚Π°ΠΊ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ½ Ρ€Π΅Π°Π³ΠΈΡ€ΠΎΠ²Π°Π» Π½Π° Ρ‚Π°ΠΉΠΌΠ°ΡƒΡ‚, ΠΈ Π»Π΅Π³ΠΊΠΎ ΠΏΡ€ΠΎΡ‚Π΅ΡΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ эти Π΄ΠΎΡ€Π°Π±ΠΎΡ‚ΠΊΠΈ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Istio.

А Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ всё вмСстС

ВнСсти Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ хаоса с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Istio – это ΠΎΡ‚Π»ΠΈΡ‡Π½Ρ‹ΠΉ способ ΠΏΡ€ΠΎΡ‚Π΅ΡΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ваш ΠΊΠΎΠ΄ ΠΈ Π½Π°Π΄Π΅ΠΆΠ½ΠΎΡΡ‚ΡŒ вашСй систСмы Π² Ρ†Π΅Π»ΠΎΠΌ. Π¨Π°Π±Π»ΠΎΠ½Ρ‹ fallback, bulkhead ΠΈ circuit breaker, ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΡ‹ создания искусствСнных сбоСв ΠΈ Π·Π°Π΄Π΅Ρ€ΠΆΠ΅ΠΊ, Π° Ρ‚Π°ΠΊΠΆΠ΅ ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½Ρ‹Π΅ Π²Ρ‹Π·ΠΎΠ²Ρ‹ ΠΈ Ρ‚Π°ΠΉΠΌΠ°ΡƒΡ‚Ρ‹ Π±ΡƒΠ΄ΡƒΡ‚ ΠΎΡ‡Π΅Π½ΡŒ ΠΏΠΎΠ»Π΅Π·Π½Ρ‹ ΠΏΡ€ΠΈ создании отказоустойчивых ΠΎΠ±Π»Π°Ρ‡Π½Ρ‹Ρ… систСм. Π’ сочСтании с Kubernetes ΠΈ Red Hat OpenShift эти инструмСнты ΠΏΠΎΠΌΠΎΠ³ΡƒΡ‚ ΡƒΠ²Π΅Ρ€Π΅Π½Π½ΠΎ Π²ΡΡ‚Ρ€Π΅Ρ‚ΠΈΡ‚ΡŒ Π±ΡƒΠ΄ΡƒΡ‰Π΅Π΅.

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ: habr.com