{"id":55700,"date":"2020-01-26T00:00:00","date_gmt":"2020-01-25T21:00:00","guid":{"rendered":"https:\/\/prohoster.info\/blog\/blog_prohoster\/trassirovka-i-monitoring-v-istio-mikroservisy-i-printsip-neopredelennosti"},"modified":"2020-02-18T14:03:50","modified_gmt":"2020-02-18T11:03:50","slug":"trassirovka-i-monitoring-v-istio-mikroservisy-i-printsip-neopredelennosti","status":"publish","type":"post","link":"https:\/\/prohoster.info\/de\/blog\/administrirovanie\/trassirovka-i-monitoring-v-istio-mikroservisy-i-printsip-neopredelennosti","title":{"rendered":"Tracing und Monitoring in Istio: Microservices und das Prinzip der Unbestimmtheit.","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>Das Heisenbergsche Unsch\u00e4rfeprinzip besagt, dass man die Position eines Objekts und seine Geschwindigkeit nicht gleichzeitig messen kann. Bewegt sich das Objekt, hat es keinen festen Standort. Ist ein Standort vorhanden, bedeutet das, dass es keine Geschwindigkeit hat.<\/p>\n<p><img decoding=\"async\" alt=\"Tracing und Monitoring in Istio: Microservices und das Prinzip der Unbestimmtheit.\" src=\"\/wp-content\/uploads\/2020\/01\/617ace5f892b62652b404b24585537b0.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nIn Bezug auf Microservices auf der Red Hat OpenShift-Plattform (und verwaltet von Kubernetes) k\u00f6nnen sie dank entsprechender Open-Source-Software gleichzeitig ihre Leistung und Funktionsf\u00e4higkeit melden. Das widerlegt zwar nicht Heisenberg, beseitigt jedoch die Unsicherheit im Umgang mit Cloud-Anwendungen. Istio erm\u00f6glicht eine einfache Organisation von Trace- und Monitoring-Funktionen f\u00fcr solche Anwendungen, um alles im Blick zu behalten.<br \/>\n<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<h3>Lass uns \u00fcber Terminologie entscheiden<\/h3>\n<p>\nUnter <b>Tracing<\/b> (Tracing) Wir verstehen die Protokollierung systemischer Aktivit\u00e4ten. Das klingt zwar recht allgemein, aber die wichtigste Regel hier ist, dass die Trace-Daten in das entsprechende Speicherformat zur\u00fcckgegeben werden, ohne sich um deren Formatierung zu k\u00fcmmern. Die gesamte Arbeit der Datensuche und -analyse obliegt ihren Nutzern. In Istio wird das Tracing-System Jaeger verwendet, das das OpenTracing-Datenmodell implementiert.<\/p>\n<p><b>Traces<\/b> (Traces, und das Wort \u201eTraces\u201c wird hier im Sinne von \u201eSpuren\u201c verwendet, \u00e4hnlich wie in der ballistischen Analyse) nennen wir die Daten, die den Verlauf einer Anfrage oder einer Arbeitseinheit vollst\u00e4ndig beschreiben, wie man so sch\u00f6n sagt, \u201evon Anfang bis Ende\u201c. Zum Beispiel alles, was passiert, ab dem Moment, in dem ein Benutzer auf eine Schaltfl\u00e4che auf der Webseite klickt, bis zur R\u00fcckgabe der Daten, einschlie\u00dflich aller beteiligten Mikrodienste. Man kann sagen, dass ein Trace den gesamten Verlauf einer Anfrage hin und zur\u00fcck vollst\u00e4ndig beschreibt (oder modelliert). Im Jaeger-Interface werden die Traces zeitlich aufgeschl\u00fcsselt, \u00e4hnlich wie man eine Kette in ihre einzelnen Glieder zerlegen kann. Nur dass anstelle der Glieder ein Trace aus sogenannten Spans besteht.<\/p>\n<p><b>Span<\/b> \u2013 ist der Zeitraum vom Beginn der Ausf\u00fchrung einer Arbeitseinheit bis zu ihrem Abschluss. In dieser Analogie kann man sagen, dass jeder Span ein einzelnes Glied in der Kette darstellt. Ein Span kann (oder kann nicht) einen oder mehrere untergeordnete Spans haben. Folglich wird der oberste Span (Root Span) die gleiche Gesamtdauer haben wie der Trace, auf den er sich bezieht.<\/p>\n<p><b>\u00dcberwachung<\/b> \u2013 ist eigentlich die \u00dcberwachung Ihres Systems \u2013 mit eigenen Augen, \u00fcber die UI oder durch Automatisierungstools. Dem Monitoring liegen Trace-Daten zugrunde. In Istio wird das Monitoring durch Prometheus realisiert und hat eine entsprechende UI. Prometheus unterst\u00fctzt die automatische \u00dcberwachung mithilfe von Alerts und Alert Managern.<\/p>\n<h3>Wir machen Striche<\/h3>\n<p>\nUm die Tracing-Funktionalit\u00e4t zu erm\u00f6glichen, muss die Anwendung eine Sammlung von Spans erstellen. Diese m\u00fcssen dann an Jaeger exportiert werden, damit ein visuelles Tracing-Diagramm erstellt werden kann. Unter anderem kennzeichnen diese Spans den Namen der Operation sowie die Zeitstempel f\u00fcr ihren Beginn und Abschluss. Der Transfer der Spans erfolgt durch die Umleitung der f\u00fcr Jaeger bestimmten HTTP-Header von eingehenden Anfragen zu ausgehenden Anfragen. Je nach verwendeter Programmiersprache kann dies geringf\u00fcgige Anpassungen des Quellcodes der Anwendungen erfordern. Im Folgenden ist ein Beispielcode in Java (unter Verwendung des Spring Boot-Frameworks) angegeben, der B3-Header (Zipkin-Stil) zu Ihrer Anfrage im Konfigurationsklasse von Spring hinzuf\u00fcgt:<\/p>\n<p><img decoding=\"async\" alt=\"Tracing und Monitoring in Istio: Microservices und das Prinzip der Unbestimmtheit.\" src=\"\/wp-content\/uploads\/2020\/01\/2314e2d156dc9b9fdb299af2dac01f66.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\nDabei werden die folgenden Header-Einstellungen verwendet:<\/p>\n<p><img decoding=\"async\" alt=\"Tracing und Monitoring in Istio: Microservices und das Prinzip der Unbestimmtheit.\" src=\"\/wp-content\/uploads\/2020\/01\/18f0a13af27665ec2d154ff4cff48157.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\nWenn Sie Java verwenden, m\u00fcssen Sie den Code nicht \u00e4ndern, sondern lediglich einige Zeilen zur POM-Datei von Maven hinzuf\u00fcgen und Umgebungsvariablen festlegen. Hier sind die Zeilen, die in die POM.XML-Datei eingef\u00fcgt werden m\u00fcssen, um den Jaeger Tracer Resolver zu integrieren:<\/p>\n<p><img decoding=\"async\" alt=\"Tracing und Monitoring in Istio: Microservices und das Prinzip der Unbestimmtheit.\" src=\"\/wp-content\/uploads\/2020\/01\/a63a634c2c22fc09a237cafc4873855d.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\nDie entsprechenden Umgebungsvariablen werden im Dockerfile festgelegt:<\/p>\n<p><img decoding=\"async\" alt=\"Tracing und Monitoring in Istio: Microservices und das Prinzip der Unbestimmtheit.\" src=\"\/wp-content\/uploads\/2020\/01\/7fe9046242d7e628342a6266e4a2f743.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\nAlles klar, jetzt ist alles eingerichtet und unsere Mikrodienste beginnen, Tracedaten zu generieren.<\/p>\n<h3>Wir schauen uns das im Gro\u00dfen und Ganzen an<\/h3>\n<p>\nIstio beinhaltet ein einfaches Dashboard auf Basis von Grafana. Wenn alles konfiguriert ist und auf der Red Hat OpenShift PaaS-Plattform l\u00e4uft (in unserem Beispiel sind Red Hat OpenShift und Kubernetes auf Minishift bereitgestellt), wird dieses Dashboard mit folgendem Befehl gestartet:<\/p>\n<pre><code class=\"plaintext\">open &quot;$(minishift openshift service grafana -u)\/d\/1\/istio-dashboard?refresh=5&ord;Id=1&quot;\n<\/code><\/pre>\n<p>\nDas Grafana-Dashboard erm\u00f6glicht eine schnelle Bewertung der Systemleistung. Ein Ausschnitt dieses Dashboards ist in der Abbildung unten dargestellt:<\/p>\n<p><img decoding=\"async\" alt=\"Tracing und Monitoring in Istio: Microservices und das Prinzip der Unbestimmtheit.\" src=\"\/wp-content\/uploads\/2020\/01\/2c10cd23fd5166f437c2b3c1d50c6a18.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\nHier sieht man, dass der Mikrodienst customer den Mikrodienst preference v1 aufruft, und dieser wiederum ruft die Mikrodienste recommendation v1 und v2 auf. Im Grafana-Dashboard gibt es einen Bereich Dashboard Row f\u00fcr hochrangige Metriken wie das Gesamtanfragevolumen (Global Request Volume), die Erfolgsquote (success rates) und 4xx-Fehler. Dar\u00fcber hinaus gibt es eine Ansicht Server Mesh mit Grafiken f\u00fcr jeden Dienst und einen Bereich Services Row zur Anzeige detaillierter Informationen zu jedem Container f\u00fcr jeden Dienst.<\/p>\n<h3>Jetzt tauchen wir tiefer ein<\/h3>\n<p>\nMit einer korrekt konfigurierten Istio-Tracierung kann man direkt out of the box tiefgehende Leistungsanalysen des Systems durchf\u00fchren. Im Jaeger-UI k\u00f6nnen Tracierungen betrachtet werden, um zu sehen, wie weit und tief sie reichen, sowie um Engp\u00e4sse in der Leistung visuell zu identifizieren. Bei der Verwendung von Red Hat OpenShift auf der Plattform minishift starten Sie die Jaeger-UI mit folgendem Befehl:<\/p>\n<pre><code class=\"plaintext\">minishift openshift service jaeger-query --in-browser\n<\/code><\/pre>\n<p>\n<img decoding=\"async\" alt=\"Tracing und Monitoring in Istio: Microservices und das Prinzip der Unbestimmtheit.\" src=\"\/wp-content\/uploads\/2020\/01\/074fea646ad191f819a9a67a3f311c8f.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\nWas kann man \u00fcber die Tracierung auf diesem Screenshot sagen:<\/p>\n<ul>\n<li>Sie besteht aus 7 Spans.<\/li>\n<li>Die Gesamtzeit betr\u00e4gt 6,99 ms.<\/li>\n<li>Der Microservice recommendation, der der letzte in der Kette ist, ben\u00f6tigt 0,69 ms.<\/li>\n<\/ul>\n<p>\nDiagramme dieser Art erm\u00f6glichen es, schnell zu erkennen, wenn die Leistung des gesamten Systems aufgrund eines nicht einwandfrei funktionierenden Dienstes leidet.<\/p>\n<p>\u0410 \u0442\u0435\u043f\u0435\u0440\u044c \u0443\u0441\u043b\u043e\u0436\u043d\u0438\u043c \u0437\u0430\u0434\u0430\u0447\u0443 \u0438 \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u043c \u0434\u0432\u0430 \u044d\u043a\u0437\u0435\u043c\u043f\u043b\u044f\u0440\u0430 \u043c\u0438\u043a\u0440\u043e\u0441\u0435\u0440\u0432\u0438\u0441\u0430 recommendation:v2 \u043a\u043e\u043c\u0430\u043d\u0434\u043e\u0439 oc scale &#8212;replicas=2 deployment\/recommendation-v2. \u0412\u043e\u0442 \u043a\u0430\u043a\u0438\u0435 \u0443 \u043d\u0430\u0441 \u043f\u043e\u0441\u043b\u0435 \u044d\u0442\u043e\u0433\u043e \u0431\u0443\u0434\u0443\u0442 pod\u2019\u044b:<\/p>\n<p><img decoding=\"async\" alt=\"Tracing und Monitoring in Istio: Microservices und das Prinzip der Unbestimmtheit.\" src=\"\/wp-content\/uploads\/2020\/01\/0ecb8d78d6967d0392de67be6553b870.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\nWenn wir jetzt zu Jaeger zur\u00fcckwechseln und den Span f\u00fcr den Service recommendation aufklappen, sehen wir, welcher Pod die Anfragen verarbeitet. So k\u00f6nnen wir problemlos die Verz\u00f6gerungen auf der Ebene eines bestimmten Pods lokalisieren. Dabei sollten wir auf das Feld node_id achten:<\/p>\n<p><img decoding=\"async\" alt=\"Tracing und Monitoring in Istio: Microservices und das Prinzip der Unbestimmtheit.\" src=\"\/wp-content\/uploads\/2020\/01\/474da66c581692cd11070a1732ac5458.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<h3>Wohin und wie alles l\u00e4uft<\/h3>\n<p>\nJetzt gehen wir in die Benutzeroberfl\u00e4che von Prometheus und sehen erwartungsgem\u00e4\u00df, dass die Anfragen zwischen der zweiten und der ersten Version des Services recommendation im Verh\u00e4ltnis 2:1 aufgeteilt sind, genau nach der Anzahl der aktiven Pods. Dieser Graph wird sich dynamisch \u00e4ndern, wenn die Pods nach oben oder unten skaliert werden, was besonders n\u00fctzlich beim Canary Deployment sein wird (wir werden dieses Bereitstellungsschema beim n\u00e4chsten Mal ausf\u00fchrlicher betrachten).<\/p>\n<p><img decoding=\"async\" alt=\"Tracing und Monitoring in Istio: Microservices und das Prinzip der Unbestimmtheit.\" src=\"\/wp-content\/uploads\/2020\/01\/c080fffd2398b0a2eac3e63665bdb0a7.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<h3>Alles f\u00e4ngt gerade erst an<\/h3>\n<p>\nTats\u00e4chlich haben wir heute, sozusagen, nur einen kleinen Einblick in den reichen Fundus an Informationen zu Jaeger, Grafana und Prometheus gegeben. Das war im Grunde auch unser Ziel \u2013 Sie in die richtige Richtung zu leiten und die Perspektiven von Istio zu er\u00f6ffnen.<\/p>\n<p>Und denken Sie daran, dass all dies bereits in Istio integriert ist. Bei der Verwendung bestimmter Programmiersprachen (wie Java) und Frameworks (wie Spring Boot) kann all dies umgesetzt werden, ohne den Anwendungscode ber\u00fchren zu m\u00fcssen. Ja, der Code muss leicht modifiziert werden, wenn Sie andere Sprachen verwenden, insbesondere Node.js oder C#. Aber da Nachverfolgbarkeit (lesen Sie \"Tracing\") eine der Voraussetzungen f\u00fcr den Aufbau zuverl\u00e4ssiger Cloud-Systeme ist, m\u00fcssen Sie den Code in jedem Fall anpassen, ob Sie Istio nutzen oder nicht. Warum also nicht die Anstrengungen sinnvoller nutzen?<\/p>\n<p>Mindestens um immer die Fragen \u201ewo?\u201c und \u201ewie schnell?\u201c mit 100%iger Sicherheit zu beantworten.<\/p>\n<h3>Chaos-Engineering in Istio: So war es gedacht<\/h3>\n<p><\/p>\n<h3>Die F\u00e4higkeit, Dinge kaputt zu machen, hilft dabei, sicherzustellen, dass sie nicht kaputtgehen.<\/h3>\n<p>\nDie Software-Testung ist nicht nur eine komplizierte, sondern auch eine wichtige Aufgabe. Gleichzeitig ist die \u00dcberpr\u00fcfung auf Korrektheit (zum Beispiel ob eine Funktion das richtige Ergebnis zur\u00fcckgibt) das eine, w\u00e4hrend das Testen unter Bedingungen eines unzuverl\u00e4ssigen Netzwerks eine ganz andere Herausforderung darstellt (oft wird angenommen, dass das Netzwerk immer ohne St\u00f6rungen funktioniert, und das ist die h\u00e4ufigste von acht Fehleinsch\u00e4tzungen im Bereich der verteilten Berechnungen). Eine der Schwierigkeiten bei der L\u00f6sung dieser Problematik liegt darin, wie man Systemausf\u00e4lle simuliert oder absichtlich einf\u00fchrt, was als Fault Injection bezeichnet wird. Dies kann durch die Modifikation des Quellcodes der Anwendung erfolgen. Doch dann testen Sie nicht Ihren urspr\u00fcnglichen Code, sondern eine Version, die speziell Ausf\u00e4lle simuliert. Infolgedessen riskieren Sie, in die t\u00f6dlichen Umarmungen der Fault Injection zu geraten und auf Geisterfehler zu sto\u00dfen \u2013 Fehler, die beim Versuch, sie zu erkennen, verschwinden.<\/p>\n<p>Nun werden wir zeigen, wie Istio hilft, diese Herausforderungen schnell zu bew\u00e4ltigen.<\/p>\n<h3>So sieht alles aus, wenn alles perfekt l\u00e4uft.<\/h3>\n<p>\nBetrachten wir folgendes Szenario: Wir haben zwei Pods f\u00fcr unseren Microservice Recommendation, den wir aus einem Istio-Lehrbuch entnommen haben. Ein Pod ist als v1 gekennzeichnet, der andere als v2. Wie zu sehen ist, funktioniert alles hervorragend.<\/p>\n<p><img decoding=\"async\" alt=\"Tracing und Monitoring in Istio: Microservices und das Prinzip der Unbestimmtheit.\" src=\"\/wp-content\/uploads\/2020\/01\/c50387b7cfd12298cfab8123f13b2ca4.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n(\u00dcbrigens: Die Zahl rechts ist einfach ein Z\u00e4hler f\u00fcr jeden Pod.)<\/p>\n<p>Aber das ist nicht das, was wir wollen, oder? Lassen Sie uns versuchen, alles kaputt zu machen, ohne den Quellcode zu ber\u00fchren.<\/p>\n<h3>Wir erzeugen Ausf\u00e4lle im Microservice<\/h3>\n<p>\nNachfolgend finden Sie die YAML-Datei f\u00fcr die Istio-Routingregel, die in der H\u00e4lfte der F\u00e4lle einen Fehler erzeugt. <a class=\"wpil_keyword_link\" href=\"https:\/\/prohoster.info\/de\/server\/dts-los-angeles\/\"   title=\"Server\" data-wpil-keyword-link=\"linked\"  data-wpil-monitor-id=\"3597\">Server<\/a> 503):<\/p>\n<p><img decoding=\"async\" alt=\"Tracing und Monitoring in Istio: Microservices und das Prinzip der Unbestimmtheit.\" src=\"\/wp-content\/uploads\/2020\/01\/8fb3ed7f16ed7fd1a57b27dfc3bfd2da.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\nBitte beachten Sie, dass wir explizit festlegen, dass in der H\u00e4lfte der F\u00e4lle ein Fehler 503 zur\u00fcckgegeben werden soll.<\/p>\n<p>So w\u00fcrde ein Screenshot des wiederholt ausgef\u00fchrten curl-Befehls aussehen, nachdem wir diese Regel aktiviert haben, um Fehler zu simulieren. Wie zu sehen ist, gibt die H\u00e4lfte der Anfragen den Fehler 503 zur\u00fcck, unabh\u00e4ngig davon, an welchen Pod \u2013 v1 oder v2 \u2013 sie gesendet werden:<\/p>\n<p><img decoding=\"async\" alt=\"Tracing und Monitoring in Istio: Microservices und das Prinzip der Unbestimmtheit.\" src=\"\/wp-content\/uploads\/2020\/01\/3d9760cf5abc7480ad3aab826c274766.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\nUm den normalen Betrieb wiederherzustellen, reicht es aus, diese Regel zu l\u00f6schen, in unserem Fall mit dem Kommando istioctl delete routerule recommendation-503 -n tutorial. Hierbei ist Tutorial der Name des Red Hat OpenShift-Projekts, in dem unser Istio-Lehrbuch l\u00e4uft.<\/p>\n<h3>Wir f\u00fcgen k\u00fcnstliche Verz\u00f6gerungen hinzu.<\/h3>\n<p>\nK\u00fcnstliche Fehler 503 helfen dabei, das System auf Ausfallsicherheit zu testen, aber die F\u00e4higkeit, Verz\u00f6gerungen vorherzusagen und zu bew\u00e4ltigen, sollte Sie noch mehr beeindrucken. Tats\u00e4chlich treten Verz\u00f6gerungen im echten Leben h\u00e4ufiger auf als Ausf\u00e4lle. Ein langsam arbeitender Mikroservice ist ein Gift, unter dem das gesamte System leidet. Dank Istio k\u00f6nnen Sie den Code zur Verarbeitung von Verz\u00f6gerungen testen, ohne ihn dabei zu \u00e4ndern. Zun\u00e4chst zeigen wir Ihnen, wie Sie dies im Fall k\u00fcnstlich erzeugter Netzwerkverz\u00f6gerungen tun k\u00f6nnen.<\/p>\n<p>Bitte beachten Sie, dass Sie nach solch einem Test eventuell (oder m\u00f6glicherweise) Ihren Code \u00fcberarbeiten m\u00fcssen (oder m\u00f6chten). Die gute Nachricht ist, dass Sie in diesem Fall proaktiv und nicht reaktiv handeln werden. So sollte der Entwicklungszyklus aufgebaut werden: Programmieren-Testen-Feedback-Programmierenn-Testen\u2026<\/p>\n<p>So sieht die Regel aus, die\u2026 Obwohl wissen Sie was? Istio ist so einfach und diese yaml-Datei ist so verst\u00e4ndlich, dass alles in diesem Beispiel f\u00fcr sich selbst spricht, schauen Sie einfach einmal hin:<\/p>\n<p><img decoding=\"async\" alt=\"Tracing und Monitoring in Istio: Microservices und das Prinzip der Unbestimmtheit.\" src=\"\/wp-content\/uploads\/2020\/01\/e077e891cbccc66ebc4d4c7b67a0f1ec.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\nIn der H\u00e4lfte der F\u00e4lle wird es zu einer 7-sek\u00fcndigen Verz\u00f6gerung kommen. Das ist keineswegs das gleiche, als w\u00fcrden wir im Quellcode einen sleep-Befehl einf\u00fcgen, denn Istio verz\u00f6gert die Anfrage tats\u00e4chlich um 7 Sekunden. Da Istio Jaeger-Tracing unterst\u00fctzt, ist diese Verz\u00f6gerung im Jaeger-UI gut erkennbar, wie im Screenshot unten gezeigt. Beachten Sie die lange Anfrage in der oberen rechten Ecke des Diagramms \u2013 ihre Dauer betr\u00e4gt 7,02 Sekunden:<\/p>\n<p><img decoding=\"async\" alt=\"Tracing und Monitoring in Istio: Microservices und das Prinzip der Unbestimmtheit.\" src=\"\/wp-content\/uploads\/2020\/01\/97a7b33fb7e0455973c7fd1b2aefadf3.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\nDieses Szenario erm\u00f6glicht es, den Code unter Bedingungen mit Netzwerkverz\u00f6gerungen zu testen. Und es ist klar, dass wir durch das Entfernen dieser Regel die k\u00fcnstliche Verz\u00f6gerung beseitigen werden. Um es zu wiederholen, wir haben all dies erneut getan, ohne den Quellcode zu ver\u00e4ndern.<\/p>\n<h3>Nicht zur\u00fcckweichen und nicht aufgeben<\/h3>\n<p>\nEine weitere n\u00fctzliche Funktion von Istio f\u00fcr Chaos Engineering ist die Wiederholung von Anfragen an einen Dienst eine bestimmte Anzahl von Malen. Der Sinn dahinter ist, die Versuche nicht abzubrechen, wenn die erste Anfrage mit einem Fehler 503 endet \u2013 und vielleicht haben wir beim N-ten Mal Gl\u00fcck. Vielleicht hat der Dienst aus irgendeinem Grund nur kurz pausiert. Ja, diesen Grund sollten wir ergr\u00fcnden und beheben. Aber das k\u00f6nnen wir sp\u00e4ter kl\u00e4ren; vorerst versuchen wir, das System am Laufen zu halten.<\/p>\n<p>Also, wir wollen, dass der Dienst von Zeit zu Zeit einen Fehler 503 gibt, und Istio sollte danach versuchen, ihn erneut zu kontaktieren. Hier ben\u00f6tigen wir eindeutig eine M\u00f6glichkeit, einen Fehler 503 zu erzeugen, ohne den Code selbst zu ber\u00fchren...<\/p>\n<p>Halt, wartet! Das haben wir gerade gemacht.<\/p>\n<p>Diese Datei sorgt daf\u00fcr, dass der Dienst recommendation-v2 in 50 % der F\u00e4lle einen Fehler 503 zur\u00fcckgibt:<\/p>\n<p><img decoding=\"async\" alt=\"Tracing und Monitoring in Istio: Microservices und das Prinzip der Unbestimmtheit.\" src=\"\/wp-content\/uploads\/2020\/01\/f446528f9c968e40cc2cf318cf0acde9.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\nOffensichtlich werden einige Anfragen fehlschlagen:<\/p>\n<p><img decoding=\"async\" alt=\"Tracing und Monitoring in Istio: Microservices und das Prinzip der Unbestimmtheit.\" src=\"\/wp-content\/uploads\/2020\/01\/f998513746604beda241b8d6de2ed727.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\nJetzt aktivieren wir die Istio-Funktion Retry:<\/p>\n<p><img decoding=\"async\" alt=\"Tracing und Monitoring in Istio: Microservices und das Prinzip der Unbestimmtheit.\" src=\"\/wp-content\/uploads\/2020\/01\/32e210b6ecbf4c1ecf121ee73e64ba35.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\nDiese Routing-Regel f\u00fchrt drei Wiederholungen mit einem Intervall von zwei Sekunden durch und sollte die Fehler 503 reduzieren (ideal w\u00e4re es, sie ganz zu entfernen):<\/p>\n<p><img decoding=\"async\" alt=\"Tracing und Monitoring in Istio: Microservices und das Prinzip der Unbestimmtheit.\" src=\"\/wp-content\/uploads\/2020\/01\/7f9711c52949072b823399e59141cb64.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\nZusammenfassend haben wir es so eingerichtet, dass Istio erstens f\u00fcr die H\u00e4lfte der Anfragen einen 503-Fehler generiert. Und zweitens f\u00fchrt dasselbe Istio bei einem auftreten Fehler 503 drei Versuche durch, um die Verbindung zum Dienst wiederherzustellen. Das Ergebnis ist einfach ausgezeichnet. Durch die Nutzung der Retry-Funktion haben wir unser Versprechen eingehalten, nicht aufzugeben und durchzuhalten.<\/p>\n<p>Ja, und wir haben es wieder getan, ohne den Code \u00fcberhaupt zu ber\u00fchren. Alles, was wir ben\u00f6tigten, waren zwei Istio-Routing-Regeln:<\/p>\n<p><img decoding=\"async\" alt=\"Tracing und Monitoring in Istio: Microservices und das Prinzip der Unbestimmtheit.\" src=\"\/wp-content\/uploads\/2020\/01\/c21a1cfd2d78ae4145a57d1cefcc6c59.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<h3>Wie man den Benutzer nicht entt\u00e4uscht oder sieben auf einen wartet<\/h3>\n<p>\nJetzt kehren wir die Situation um und betrachten ein Szenario, in dem es nur f\u00fcr eine gewisse Zeit sinnvoll ist, nicht aufzugeben und durchzuhalten. Danach sollten wir einfach die Versuche, die Anfrage zu verarbeiten, einstellen, um nicht alle dazu zu bringen, auf einen einzigen blockierenden Dienst zu warten. Anders ausgedr\u00fcckt, wir werden die verlorene Position nicht verteidigen, sondern uns auf eine Backup-Position zur\u00fcckziehen, um die Benutzer der Website nicht zu entt\u00e4uschen und sie nicht in Ungewissheit zu halten.<\/p>\n<p>In Istio kann ein Timeout f\u00fcr die Anfragebearbeitung festgelegt werden. Wenn der Dienst dieses Timeout \u00fcberschreitet, wird der Fehler 504 (Gateway Timeout) zur\u00fcckgegeben \u2013 das alles geschieht \u00fcber die Istio-Konfiguration. Allerdings m\u00fcssen wir in den Quellcode des Dienstes einen sleep-Befehl einf\u00fcgen (und dann nat\u00fcrlich ein Rebuild und Redeploy durchf\u00fchren), um die langsame Ausf\u00fchrung des Dienstes zu simulieren. Leider geht es nicht anders.<\/p>\n<p>Also haben wir einen dreisek\u00fcndigen sleep in den Code des Dienstes recommendation v2 eingef\u00fcgt, das entsprechende Image neu gebaut und den Container redeployt. Jetzt f\u00fcgen wir mit der folgenden Istio-Routingregel das Timeout hinzu:<\/p>\n<p><img decoding=\"async\" alt=\"Tracing und Monitoring in Istio: Microservices und das Prinzip der Unbestimmtheit.\" src=\"\/wp-content\/uploads\/2020\/01\/c03fc452b98dd875a8a7d3ac561893ca.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\nIm obigen Screenshot ist zu sehen, dass wir die Verbindung zum Dienst recommendation abbrechen, wenn wir innerhalb von einer Sekunde keine Antwort erhalten, also noch bevor der Fehler 504 auftritt. Nach Anwendung dieser Routingregel (und dem Hinzuf\u00fcgen des dreisek\u00fcndigen sleep im Code des Dienstes recommendation:v2) erhalten wir Folgendes:<\/p>\n<p><img decoding=\"async\" alt=\"Tracing und Monitoring in Istio: Microservices und das Prinzip der Unbestimmtheit.\" src=\"\/wp-content\/uploads\/2020\/01\/ed6e80052c67254718b1fde2bd873e71.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\nWir wiederholen uns, aber das Timeout kann festgelegt werden, ohne den Quellcode zu \u00e4ndern. Ein zus\u00e4tzlicher Vorteil ist, dass Sie Ihren Code jetzt so anpassen k\u00f6nnen, dass er auf das Timeout reagiert, und diese Anpassungen mit Istio problemlos testen k\u00f6nnen.<\/p>\n<h3>Und jetzt alles zusammen<\/h3>\n<p>\nEin wenig Chaos mit Istio zu erzeugen, ist eine hervorragende Methode, um Ihren Code und die Zuverl\u00e4ssigkeit Ihres Systems insgesamt zu testen. Fallback-Vorlagen, Bulkheads und Circuit Breaker, Mechanismen zur Erzeugung von k\u00fcnstlichen Ausf\u00e4llen und Verz\u00f6gerungen sowie erneute Aufrufe und Timeouts sind \u00e4u\u00dferst n\u00fctzlich beim Aufbau von ausfallsicheren Cloud-Systemen. In Kombination mit Kubernetes und Red Hat OpenShift werden diese Werkzeuge Ihnen helfen, selbstbewusst in die Zukunft zu gehen.<br \/>\n<br \/>Quelle: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/redhatrussia\/blog\/485136\/\">habr.com<\/a><\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u041f\u0440\u0438\u043d\u0446\u0438\u043f \u043d\u0435\u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u043e\u0441\u0442\u0438 \u0413\u0435\u0439\u0437\u0435\u043d\u0431\u0435\u0440\u0433\u0430 \u0433\u043b\u0430\u0441\u0438\u0442, \u0447\u0442\u043e \u043d\u0435\u043b\u044c\u0437\u044f \u043e\u0434\u043d\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e \u0438\u0437\u043c\u0435\u0440\u0438\u0442\u044c \u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u043e\u0431\u044a\u0435\u043a\u0442\u0430 \u0438 \u0435\u0433\u043e \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u044c. \u0415\u0441\u043b\u0438 \u043e\u0431\u044a\u0435\u043a\u0442 \u0434\u0432\u0438\u0436\u0435\u0442\u0441\u044f, \u0442\u043e \u0443 \u043d\u0435\u0433\u043e \u043d\u0435\u0442 \u043c\u0435\u0441\u0442\u043e\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u044f. \u0410 \u0435\u0441\u043b\u0438 \u043c\u0435\u0441\u0442\u043e\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0435\u0441\u0442\u044c \u2013 \u0437\u043d\u0430\u0447\u0438\u0442 \u0443 \u043d\u0435\u0433\u043e \u043d\u0435\u0442 \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u0438. \u0427\u0442\u043e \u043a\u0430\u0441\u0430\u0435\u0442\u0441\u044f \u043c\u0438\u043a\u0440\u043e\u0441\u0435\u0440\u0432\u0438\u0441\u043e\u0432 \u043d\u0430 \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u0435 Red Hat OpenShift (\u0438 \u043f\u043e\u0434 \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435\u043c Kubernetes), \u0442\u043e \u0431\u043b\u0430\u0433\u043e\u0434\u0430\u0440\u044f \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0435\u043c\u0443 \u0441\u043e\u0444\u0442\u0443 \u0441 \u043e\u0442\u043a\u0440\u044b\u0442\u044b\u043c \u043a\u043e\u0434\u043e\u043c \u043e\u043d\u0438 \u043c\u043e\u0433\u0443\u0442 \u043e\u0434\u043d\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e \u0440\u0430\u043f\u043e\u0440\u0442\u043e\u0432\u0430\u0442\u044c \u043a\u0430\u043a [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-55700","post","type-post","status-publish","format-standard","hentry","category-administrirovanie"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 4.9.10 - aioseo.com -->\n\t<meta name=\"description\" content=\"\u041f\u0440\u0438\u043d\u0446\u0438\u043f \u043d\u0435\u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u043e\u0441\u0442\u0438 \u0413\u0435\u0439\u0437\u0435\u043d\u0431\u0435\u0440\u0433\u0430 \u0433\u043b\u0430\u0441\u0438\u0442, \u0447\u0442\u043e \u043d\u0435\u043b\u044c\u0437\u044f \u043e\u0434\u043d\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e \u0438\u0437\u043c\u0435\u0440\u0438\u0442\u044c \u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u043e\u0431\u044a\u0435\u043a\u0442\u0430 \u0438 \u0435\u0433\u043e \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u044c. \u0415\u0441\u043b\u0438 \u043e\u0431\u044a\u0435\u043a\u0442 \u0434\u0432\u0438\u0436\u0435\u0442\u0441\u044f, \u0442\u043e \u0443 \u043d\u0435\u0433\u043e \u043d\u0435\u0442 \u043c\u0435\u0441\u0442\u043e\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u044f. \u0410 \u0435\u0441\u043b\u0438 \u043c\u0435\u0441\u0442\u043e\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0435\u0441\u0442\u044c \u2013 \u0437\u043d\u0430\u0447\u0438\u0442 \u0443 \u043d\u0435\u0433\u043e \u043d\u0435\u0442 \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u0438. \u0427\u0442\u043e \u043a\u0430\u0441\u0430\u0435\u0442\u0441\u044f \u043c\u0438\u043a\u0440\u043e\u0441\u0435\u0440\u0432\u0438\u0441\u043e\u0432 \u043d\u0430 \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u0435 Red Hat OpenShift (\u0438 \u043f\u043e\u0434 \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435\u043c Kubernetes), \u0442\u043e \u0431\u043b\u0430\u0433\u043e\u0434\u0430\u0440\u044f \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0435\u043c\u0443 \u0441\u043e\u0444\u0442\u0443 \u0441 \u043e\u0442\u043a\u0440\u044b\u0442\u044b\u043c \u043a\u043e\u0434\u043e\u043c \u043e\u043d\u0438 \u043c\u043e\u0433\u0443\u0442 \u043e\u0434\u043d\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e \u0440\u0430\u043f\u043e\u0440\u0442\u043e\u0432\u0430\u0442\u044c \u043a\u0430\u043a\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Yuri Gagarin\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/prohoster.info\/de\/blog\/administrirovanie\/trassirovka-i-monitoring-v-istio-mikroservisy-i-printsip-neopredelennosti\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 4.9.10\" \/>\n\t\t<meta property=\"og:locale\" content=\"de_DE\" \/>\n\t\t<meta property=\"og:site_name\" content=\"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"\ud83e\udd47\u0422\u0440\u0430\u0441\u0441\u0438\u0440\u043e\u0432\u043a\u0430 \u0438 \u043c\u043e\u043d\u0438\u0442\u043e\u0440\u0438\u043d\u0433 \u0432 Istio: \u043c\u0438\u043a\u0440\u043e\u0441\u0435\u0440\u0432\u0438\u0441\u044b \u0438 \u043f\u0440\u0438\u043d\u0446\u0438\u043f \u043d\u0435\u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u043e\u0441\u0442\u0438 | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u041f\u0440\u0438\u043d\u0446\u0438\u043f \u043d\u0435\u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u043e\u0441\u0442\u0438 \u0413\u0435\u0439\u0437\u0435\u043d\u0431\u0435\u0440\u0433\u0430 \u0433\u043b\u0430\u0441\u0438\u0442, \u0447\u0442\u043e \u043d\u0435\u043b\u044c\u0437\u044f \u043e\u0434\u043d\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e \u0438\u0437\u043c\u0435\u0440\u0438\u0442\u044c \u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u043e\u0431\u044a\u0435\u043a\u0442\u0430 \u0438 \u0435\u0433\u043e \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u044c. \u0415\u0441\u043b\u0438 \u043e\u0431\u044a\u0435\u043a\u0442 \u0434\u0432\u0438\u0436\u0435\u0442\u0441\u044f, \u0442\u043e \u0443 \u043d\u0435\u0433\u043e \u043d\u0435\u0442 \u043c\u0435\u0441\u0442\u043e\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u044f. \u0410 \u0435\u0441\u043b\u0438 \u043c\u0435\u0441\u0442\u043e\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0435\u0441\u0442\u044c \u2013 \u0437\u043d\u0430\u0447\u0438\u0442 \u0443 \u043d\u0435\u0433\u043e \u043d\u0435\u0442 \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u0438. \u0427\u0442\u043e \u043a\u0430\u0441\u0430\u0435\u0442\u0441\u044f \u043c\u0438\u043a\u0440\u043e\u0441\u0435\u0440\u0432\u0438\u0441\u043e\u0432 \u043d\u0430 \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u0435 Red Hat OpenShift (\u0438 \u043f\u043e\u0434 \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435\u043c Kubernetes), \u0442\u043e \u0431\u043b\u0430\u0433\u043e\u0434\u0430\u0440\u044f \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0435\u043c\u0443 \u0441\u043e\u0444\u0442\u0443 \u0441 \u043e\u0442\u043a\u0440\u044b\u0442\u044b\u043c \u043a\u043e\u0434\u043e\u043c \u043e\u043d\u0438 \u043c\u043e\u0433\u0443\u0442 \u043e\u0434\u043d\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e \u0440\u0430\u043f\u043e\u0440\u0442\u043e\u0432\u0430\u0442\u044c \u043a\u0430\u043a\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/de\/blog\/administrirovanie\/trassirovka-i-monitoring-v-istio-mikroservisy-i-printsip-neopredelennosti\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:width\" content=\"350\" \/>\n\t\t<meta property=\"og:image:height\" content=\"350\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2020-01-25T21:00:00+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2020-02-18T11:03:50+00:00\" \/>\n\t\t<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"\ud83e\udd47Tracing und Monitoring in Istio: Mikrodienste und das Unsch\u00e4rfeprinzip | ProHoster","description":"Das Heisenbergsche Unsch\u00e4rfeprinzip besagt, dass man die Position eines Objekts und dessen Geschwindigkeit nicht gleichzeitig messen kann. Wenn sich das Objekt bewegt, hat es keinen Ort. Und wenn es einen Ort hat, dann hat es keine Geschwindigkeit. Bei Mikrodiensten auf der Red Hat OpenShift-Plattform (und betrieben durch Kubernetes) k\u00f6nnen sie dank der entsprechenden Open-Source-Software gleichzeitig berichten, dass","canonical_url":"https:\/\/prohoster.info\/de\/blog\/administrirovanie\/trassirovka-i-monitoring-v-istio-mikroservisy-i-printsip-neopredelennosti","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"de_DE","og:site_name":"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b","og:type":"article","og:title":"\ud83e\udd47\u0422\u0440\u0430\u0441\u0441\u0438\u0440\u043e\u0432\u043a\u0430 \u0438 \u043c\u043e\u043d\u0438\u0442\u043e\u0440\u0438\u043d\u0433 \u0432 Istio: \u043c\u0438\u043a\u0440\u043e\u0441\u0435\u0440\u0432\u0438\u0441\u044b \u0438 \u043f\u0440\u0438\u043d\u0446\u0438\u043f \u043d\u0435\u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u043e\u0441\u0442\u0438 | ProHoster","og:description":"\u041f\u0440\u0438\u043d\u0446\u0438\u043f \u043d\u0435\u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u043e\u0441\u0442\u0438 \u0413\u0435\u0439\u0437\u0435\u043d\u0431\u0435\u0440\u0433\u0430 \u0433\u043b\u0430\u0441\u0438\u0442, \u0447\u0442\u043e \u043d\u0435\u043b\u044c\u0437\u044f \u043e\u0434\u043d\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e \u0438\u0437\u043c\u0435\u0440\u0438\u0442\u044c \u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u043e\u0431\u044a\u0435\u043a\u0442\u0430 \u0438 \u0435\u0433\u043e \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u044c. \u0415\u0441\u043b\u0438 \u043e\u0431\u044a\u0435\u043a\u0442 \u0434\u0432\u0438\u0436\u0435\u0442\u0441\u044f, \u0442\u043e \u0443 \u043d\u0435\u0433\u043e \u043d\u0435\u0442 \u043c\u0435\u0441\u0442\u043e\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u044f. \u0410 \u0435\u0441\u043b\u0438 \u043c\u0435\u0441\u0442\u043e\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0435\u0441\u0442\u044c \u2013 \u0437\u043d\u0430\u0447\u0438\u0442 \u0443 \u043d\u0435\u0433\u043e \u043d\u0435\u0442 \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u0438. \u0427\u0442\u043e \u043a\u0430\u0441\u0430\u0435\u0442\u0441\u044f \u043c\u0438\u043a\u0440\u043e\u0441\u0435\u0440\u0432\u0438\u0441\u043e\u0432 \u043d\u0430 \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u0435 Red Hat OpenShift (\u0438 \u043f\u043e\u0434 \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435\u043c Kubernetes), \u0442\u043e \u0431\u043b\u0430\u0433\u043e\u0434\u0430\u0440\u044f \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0435\u043c\u0443 \u0441\u043e\u0444\u0442\u0443 \u0441 \u043e\u0442\u043a\u0440\u044b\u0442\u044b\u043c \u043a\u043e\u0434\u043e\u043c \u043e\u043d\u0438 \u043c\u043e\u0433\u0443\u0442 \u043e\u0434\u043d\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e \u0440\u0430\u043f\u043e\u0440\u0442\u043e\u0432\u0430\u0442\u044c \u043a\u0430\u043a","og:url":"https:\/\/prohoster.info\/de\/blog\/administrirovanie\/trassirovka-i-monitoring-v-istio-mikroservisy-i-printsip-neopredelennosti","og:image":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:secure_url":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:width":350,"og:image:height":350,"article:published_time":"2020-01-25T21:00:00+00:00","article:modified_time":"2020-02-18T11:03:50+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"55700","title":null,"description":null,"keywords":null,"keyphrases":null,"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"","isEnabled":true},"graphs":[]},"schema_type":null,"schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"local_seo":null,"seo_analyzer_scan_date":null,"breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-02-28 19:38:32","updated":"2026-02-22 15:29:16"},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/posts\/55700","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/comments?post=55700"}],"version-history":[{"count":1,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/posts\/55700\/revisions"}],"predecessor-version":[{"id":162124,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/posts\/55700\/revisions\/162124"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/media?parent=55700"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/categories?post=55700"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/tags?post=55700"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}