{"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\/it\/blog\/administrirovanie\/trassirovka-i-monitoring-v-istio-mikroservisy-i-printsip-neopredelennosti","title":{"rendered":"Tracciamento e monitoraggio in Istio: microservizi e principio di incertezza","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>Il principio di indeterminazione di Heisenberg afferma che non \u00e8 possibile misurare contemporaneamente la posizione di un oggetto e la sua velocit\u00e0. Se l'oggetto \u00e8 in movimento, non ha una posizione definita. Se invece ha una posizione, allora non ha velocit\u00e0.<\/p>\n<p><img decoding=\"async\" alt=\"Tracciamento e monitoraggio in Istio: microservizi e principio di incertezza\" src=\"\/wp-content\/uploads\/2020\/01\/617ace5f892b62652b404b24585537b0.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nPer quanto riguarda i microservizi sulla piattaforma Red Hat OpenShift (gestiti da Kubernetes), grazie al software open source, possono riportare contemporaneamente sia le loro prestazioni che la loro integrit\u00e0. Questo, ovviamente, non contraddice il vecchio Heisenberg, ma elimina l'indeterminatezza nel lavoro con le applicazioni cloud. Istio consente di organizzare facilmente il tracciamento e il monitoraggio di tali applicazioni per mantenere tutto sotto controllo.<br \/>\n<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<h3>Definiamo la terminologia<\/h3>\n<p>\nSotto <b>tracciamento<\/b> (Tracing) \u043c\u044b \u043f\u043e\u043d\u0438\u043c\u0430\u0435\u043c \u043b\u043e\u0433\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0441\u0438\u0441\u0442\u0435\u043c\u043d\u043e\u0439 \u0430\u043a\u0442\u0438\u0432\u043d\u043e\u0441\u0442\u0438. \u0417\u0432\u0443\u0447\u0438\u0442 \u0434\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u043e\u0431\u0449\u043e, \u043d\u043e \u043d\u0430 \u0441\u0430\u043c\u043e\u043c \u0434\u0435\u043b\u0435 \u043e\u0434\u043d\u043e \u0438\u0437 \u043e\u0441\u043d\u043e\u0432\u043d\u044b\u0445 \u043f\u0440\u0430\u0432\u0438\u043b \u0437\u0434\u0435\u0441\u044c \u0432 \u0442\u043e\u043c, \u0447\u0442\u043e\u0431\u044b \u0441\u0431\u0440\u0430\u0441\u044b\u0432\u0430\u0442\u044c \u0434\u0430\u043d\u043d\u044b\u0435 \u0442\u0440\u0430\u0441\u0441\u0438\u0440\u043e\u0432\u043a\u0438 \u0432 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0435\u0435 \u0445\u0440\u0430\u043d\u0438\u043b\u0438\u0449\u0435, \u043d\u0435 \u0437\u0430\u0431\u043e\u0442\u044f\u0441\u044c \u043e\u0431 \u0438\u0445 \u0444\u043e\u0440\u043c\u0430\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0438. \u0410 \u0432\u0441\u044f \u0440\u0430\u0431\u043e\u0442\u0430 \u043f\u043e \u043f\u043e\u0438\u0441\u043a\u0443 \u0438 \u0430\u043d\u0430\u043b\u0438\u0437\u0443 \u0434\u0430\u043d\u043d\u044b\u0445 \u0432\u043e\u0437\u043b\u0430\u0433\u0430\u0435\u0442\u0441\u044f \u043d\u0430 \u0438\u0445 \u043f\u043e\u0442\u0440\u0435\u0431\u0438\u0442\u0435\u043b\u044f. \u0412 Istio \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0441\u0438\u0441\u0442\u0435\u043c\u0430 \u0442\u0440\u0430\u0441\u0441\u0438\u0440\u043e\u0432\u043a\u0438 Jaeger, \u0440\u0435\u0430\u043b\u0438\u0437\u0443\u044e\u0449\u0430\u044f \u043c\u043e\u0434\u0435\u043b\u044c \u0434\u0430\u043d\u043d\u044b\u0445 OpenTracing.<\/p>\n<p><b>\u0422\u0440\u0430\u0441\u0441\u0430\u043c\u0438<\/b> (Traces, \u0438 \u0441\u043b\u043e\u0432\u043e \u00ab\u0442\u0440\u0430\u0441\u0441\u044b\u00bb \u0437\u0434\u0435\u0441\u044c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0432 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0438 \u00ab\u0441\u043b\u0435\u0434\u044b\u00bb, \u043a\u0430\u043a \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0432 \u0431\u0430\u043b\u043b\u0438\u0441\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0439 \u044d\u043a\u0441\u043f\u0435\u0440\u0442\u0438\u0437\u0435) \u043c\u044b \u0431\u0443\u0434\u0435\u043c \u043d\u0430\u0437\u044b\u0432\u0430\u0442\u044c \u0434\u0430\u043d\u043d\u044b\u0435, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e \u043e\u043f\u0438\u0441\u044b\u0432\u0430\u044e\u0442 \u043f\u0440\u043e\u0445\u043e\u0436\u0434\u0435\u043d\u0438\u0435 \u0437\u0430\u043f\u0440\u043e\u0441\u0430 \u0438\u043b\u0438 \u0435\u0434\u0438\u043d\u0438\u0446\u0443 \u0440\u0430\u0431\u043e\u0442\u044b, \u043a\u0430\u043a \u0433\u043e\u0432\u043e\u0440\u0438\u0442\u0441\u044f, \u00ab\u043e\u0442 \u0438 \u0434\u043e\u00bb. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0432\u0441\u0451, \u0447\u0442\u043e \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u0441 \u043c\u043e\u043c\u0435\u043d\u0442\u0430, \u043a\u043e\u0433\u0434\u0430 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c \u0436\u043c\u0435\u0442 \u043a\u043d\u043e\u043f\u043a\u0443 \u043d\u0430 \u0432\u0435\u0431-\u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0435, \u0438 \u0434\u043e \u043c\u043e\u043c\u0435\u043d\u0442\u0430 \u0432\u043e\u0437\u0432\u0440\u0430\u0442\u0430 \u0434\u0430\u043d\u043d\u044b\u0445, \u0432\u043a\u043b\u044e\u0447\u0430\u044f \u0432\u0441\u0435 \u0437\u0430\u0434\u0435\u0439\u0441\u0442\u0432\u043e\u0432\u0430\u043d\u043d\u044b\u0435 \u043f\u0440\u0438 \u044d\u0442\u043e\u043c \u043c\u0438\u043a\u0440\u043e\u0441\u0435\u0440\u0432\u0438\u0441\u044b. \u041c\u043e\u0436\u043d\u043e \u0441\u043a\u0430\u0437\u0430\u0442\u044c, \u0447\u0442\u043e \u043e\u0434\u043d\u0430 \u0442\u0440\u0430\u0441\u0441\u0430 \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e \u043e\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u0442 (\u0438\u043b\u0438 \u043c\u043e\u0434\u0435\u043b\u0438\u0440\u0443\u0435\u0442) \u043f\u0440\u043e\u0445\u043e\u0436\u0434\u0435\u043d\u0438\u0435 \u0437\u0430\u043f\u0440\u043e\u0441\u0430 \u0442\u0443\u0434\u0430 \u0438 \u043e\u0431\u0440\u0430\u0442\u043d\u043e. \u0412 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0435 Jaeger \u0442\u0440\u0430\u0441\u0441\u044b \u0440\u0430\u0441\u043a\u043b\u0430\u0434\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u043d\u0430 \u0441\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u044e\u0449\u0438\u0435 \u043f\u043e \u043e\u0441\u0438 \u0432\u0440\u0435\u043c\u0435\u043d\u0438, \u0432\u0440\u043e\u0434\u0435 \u0442\u043e\u0433\u043e, \u043a\u0430\u043a \u0446\u0435\u043f\u044c \u043c\u043e\u0436\u043d\u043e \u0440\u0430\u0437\u043b\u043e\u0436\u0438\u0442\u044c \u043d\u0430 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0435 \u0437\u0432\u0435\u043d\u044c\u044f. \u0422\u043e\u043b\u044c\u043a\u043e \u0432\u043c\u0435\u0441\u0442\u043e \u0437\u0432\u0435\u043d\u044c\u0435\u0432 \u0442\u0440\u0430\u0441\u0441\u0430 \u0441\u043e\u0441\u0442\u043e\u0438\u0442 \u0438\u0437 \u0442\u0430\u043a \u043d\u0430\u0437\u044b\u0432\u0430\u0435\u043c\u044b\u0445 span\u2019\u043e\u0432.<\/p>\n<p><b>Span<\/b> \u2013 \u00e8 l'intervallo dal momento in cui inizia l'esecuzione di un'unit\u00e0 di lavoro fino al suo completamento. Continuando l'analogia, si pu\u00f2 dire che ogni span rappresenti un anello separato della catena. Uno span pu\u00f2 avere (o non avere) uno o pi\u00f9 span figli. Di conseguenza, lo span di livello superiore (root span) avr\u00e0 la stessa durata complessiva della traccia a cui si riferisce.<\/p>\n<p><b>Monitoraggio<\/b> \u2013 \u00e8, in effetti, l'osservazione stessa del tuo sistema \u2013 a occhi, attraverso l'interfaccia utente o tramite strumenti di automazione. Alla base del monitoraggio ci sono i dati di tracciamento. In Istio, il monitoraggio \u00e8 realizzato tramite Prometheus e ha una UI corrispondente. Prometheus supporta il monitoraggio automatico con avvisi (Alerts) e gestori di avvisi (Alert Managers).<\/p>\n<h3>Facciamo delle tacche<\/h3>\n<p>\nPer abilitare la tracciatura, l'applicazione deve creare una collezione di span. Questi devono essere esportati in Jaeger, che a sua volta genera una rappresentazione visiva della tracciatura. Tra le altre cose, questi span contrassegnano il nome dell'operazione e le relative marcature temporali di inizio e fine. La trasmissione degli span avviene tramite il reindirizzamento degli header HTTP destinati a Jaeger dalle richieste in entrata a quelle in uscita. A seconda del linguaggio di programmazione utilizzato, pu\u00f2 essere necessaria una piccola modifica del codice sorgente delle applicazioni. Di seguito \u00e8 riportato un esempio di codice Java (utilizzando il framework Spring Boot) che aggiunge gli header B3 (in stile Zipkin) alla tua richiesta nella classe di configurazione di Spring:<\/p>\n<p><img decoding=\"async\" alt=\"Tracciamento e monitoraggio in Istio: microservizi e principio di incertezza\" src=\"\/wp-content\/uploads\/2020\/01\/2314e2d156dc9b9fdb299af2dac01f66.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\nVengono utilizzate le seguenti impostazioni degli header:<\/p>\n<p><img decoding=\"async\" alt=\"Tracciamento e monitoraggio in Istio: microservizi e principio di incertezza\" src=\"\/wp-content\/uploads\/2020\/01\/18f0a13af27665ec2d154ff4cff48157.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\nSe usi Java, puoi lasciare il codice invariato, ma devi semplicemente aggiungere alcune righe nel file POM di Maven e impostare le variabili d'ambiente. Ecco quali righe devono essere aggiunte al file POM.XML per integrare il Jaeger Tracer Resolver:<\/p>\n<p><img decoding=\"async\" alt=\"Tracciamento e monitoraggio in Istio: microservizi e principio di incertezza\" src=\"\/wp-content\/uploads\/2020\/01\/a63a634c2c22fc09a237cafc4873855d.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\nE le corrispondenti variabili d'ambiente vengono impostate nel Dockerfile:<\/p>\n<p><img decoding=\"async\" alt=\"Tracciamento e monitoraggio in Istio: microservizi e principio di incertezza\" src=\"\/wp-content\/uploads\/2020\/01\/7fe9046242d7e628342a6266e4a2f743.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\nTutto \u00e8 pronto, ora tutto \u00e8 configurato e i nostri microservizi inizieranno a generare dati di tracciamento.<\/p>\n<h3>Diamo un'occhiata generale.<\/h3>\n<p>\nIstio include un semplice pannello di controllo basato su Grafana. Una volta che tutto \u00e8 configurato e funzionante sulla piattaforma Red Hat OpenShift PaaS (nel nostro esempio, Red Hat OpenShift e Kubernetes sono implementati su minishift), questo pannello pu\u00f2 essere avviato con il seguente comando:<\/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>\nIl pannello Grafana consente di valutare rapidamente le prestazioni del sistema. Un frammento di questo pannello \u00e8 mostrato nell'immagine qui sotto:<\/p>\n<p><img decoding=\"async\" alt=\"Tracciamento e monitoraggio in Istio: microservizi e principio di incertezza\" src=\"\/wp-content\/uploads\/2020\/01\/2c10cd23fd5166f437c2b3c1d50c6a18.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\nQui possiamo vedere che il microservizio customer chiama il microservizio preference v1, che a sua volta chiama i microservizi recommendation v1 e v2. Nel pannello Grafana ci sono sezioni Dashboard Row per metriche di alto livello, come il volume totale delle richieste (Global Request Volume), le percentuali di richieste riuscite (success rates) e gli errori 4xx. Inoltre, c'\u00e8 una visualizzazione Server Mesh con grafici per ciascun servizio e una sezione Services Row per visualizzare dettagli specifici su ciascun contenitore per ogni servizio.<\/p>\n<h3>Ora andiamo pi\u00f9 a fondo.<\/h3>\n<p>\nUna tracciatura di Istio ben configurata consente di analizzare rapidamente le prestazioni del sistema, letteralmente \"pronta all'uso\". Nell'interfaccia utente di Jaeger, \u00e8 possibile visualizzare le tracciature e vedere quanto in profondit\u00e0 si estendono, oltre a individuare visivamente i colli di bottiglia delle prestazioni. Se si utilizza Red Hat OpenShift sulla piattaforma minishift, si avvia l'interfaccia utente di Jaeger con il seguente comando:<\/p>\n<pre><code class=\"plaintext\">minishift openshift service jaeger-query --in-browser\n<\/code><\/pre>\n<p>\n<img decoding=\"async\" alt=\"Tracciamento e monitoraggio in Istio: microservizi e principio di incertezza\" src=\"\/wp-content\/uploads\/2020\/01\/074fea646ad191f819a9a67a3f311c8f.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\nCosa si pu\u00f2 dire sulla tracciatura in questo screenshot:<\/p>\n<ul>\n<li>\u00c8 suddivisa in 7 span.<\/li>\n<li>Il tempo totale di esecuzione \u00e8 di 6,99 ms.<\/li>\n<li>Il microservizio recommendation, che \u00e8 l'ultimo nella catena, impiega 0,69 ms.<\/li>\n<\/ul>\n<p>\nDiagrammi di questo tipo consentono di comprendere rapidamente la situazione quando le prestazioni dell'intero sistema sono compromesse a causa di un servizio che non funziona bene.<\/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=\"Tracciamento e monitoraggio in Istio: microservizi e principio di incertezza\" src=\"\/wp-content\/uploads\/2020\/01\/0ecb8d78d6967d0392de67be6553b870.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\nSe ora torniamo su Jaeger ed espandiamo lo span per il servizio recommendation, vedremo a quale pod vengono instradate le richieste. In questo modo, possiamo facilmente localizzare i rallentamenti a livello di un pod specifico. In tal caso, dobbiamo prestare attenzione al campo node_id:<\/p>\n<p><img decoding=\"async\" alt=\"Tracciamento e monitoraggio in Istio: microservizi e principio di incertezza\" src=\"\/wp-content\/uploads\/2020\/01\/474da66c581692cd11070a1732ac5458.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<h3>Dove e come si muove tutto<\/h3>\n<p>\nOra ci spostiamo nell'interfaccia di Prometheus e, come prevedibile, vediamo che le richieste tra la seconda e la prima versione del servizio recommendation si dividono nel rapporto 2:1, precisamente in base al numero di pod attivi. Inoltre, questo grafico cambier\u00e0 dinamicamente durante il ridimensionamento dei pod verso l'alto e verso il basso, il che sar\u00e0 particolarmente utile durante il Canary Deployment (tratteremo questa strategia di distribuzione pi\u00f9 dettagliatamente la prossima volta).<\/p>\n<p><img decoding=\"async\" alt=\"Tracciamento e monitoraggio in Istio: microservizi e principio di incertezza\" src=\"\/wp-content\/uploads\/2020\/01\/c080fffd2398b0a2eac3e63665bdb0a7.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<h3>Tutto \u00e8 solo all'inizio<\/h3>\n<p>\nIn effetti, oggi abbiamo toccato solo leggermente la vasta sorgente di informazioni utili su Jaeger, Grafana e Prometheus. In realt\u00e0, questo era il nostro obiettivo: indirizzarvi nella direzione giusta e aprire le prospettive di Istio.<\/p>\n<p>E ricorda, tutto questo \u00e8 gi\u00e0 integrato in Istio. Utilizzando determinati linguaggi di programmazione (come Java) e framework (come Spring Boot), \u00e8 possibile implementare tutto questo senza alterare il codice delle applicazioni. Certo, il codice dovr\u00e0 essere leggermente modificato se utilizzi altri linguaggi, in particolare Node.js o C#. Tuttavia, poich\u00e9 il tracciamento (leggi, \"tracciamento\") \u00e8 una condizione imprescindibile per la creazione di sistemi cloud robusti, dovrai comunque modificare il codice, che tu abbia Istio o meno. Quindi, perch\u00e9 non sfruttare i tuoi sforzi in modo pi\u00f9 utile?<\/p>\n<p>Almeno per poter rispondere sempre alle domande \"dove?\" e \"quanto velocemente?\" con certezza al 100%.<\/p>\n<h3>Chaos engineering in Istio: cos\u00ec era previsto<\/h3>\n<p><\/p>\n<h3>Sapere come rompere le cose aiuta a fare in modo che non si rompano<\/h3>\n<p>\nIl testing del software \u00e8 una questione non solo complessa, ma anche fondamentale. D'altra parte, testare la correttezza (ad esempio, verificare se una funzione restituisce il risultato corretto) \u00e8 una cosa, mentre testare in condizioni di rete inaffidabile \u00e8 un compito completamente diverso (si ritiene spesso che la rete funzioni sempre senza interruzioni, e questo \u00e8 uno dei principali miti sulle computazioni distribuite). Una delle difficolt\u00e0 nel risolvere questo problema \u00e8 come simulare malfunzionamenti nel sistema o introdurli intenzionalmente, eseguendo quella che viene chiamata fault injection. Questo pu\u00f2 essere fatto modificando il codice sorgente dell'applicazione stessa. Ma in tal caso, non stai testando il tuo codice originale, ma una sua versione che imita appositamente i malfunzionamenti. Di conseguenza, rischi di finire nelle spire mortali della fault injection e di incappare in geyser bugs \u2013 malfunzionamenti che scompaiono quando si cerca di individuarli.<\/p>\n<p>Ora mostreremo come Istio aiuta a gestire queste complessit\u00e0 in un batter d'occhio.<\/p>\n<h3>Com'\u00e8 tutto quando va a meraviglia<\/h3>\n<p>\nConsideriamo il seguente scenario: abbiamo due pod per il nostro microservizio di raccomandazione, preso da un tutorial su Istio. Un pod \u00e8 contrassegnato come v1, mentre l'altro come v2. Come possiamo vedere, tutto funziona perfettamente fino ad ora:<\/p>\n<p><img decoding=\"async\" alt=\"Tracciamento e monitoraggio in Istio: microservizi e principio di incertezza\" src=\"\/wp-content\/uploads\/2020\/01\/c50387b7cfd12298cfab8123f13b2ca4.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n(A proposito, il numero a destra \u00e8 semplicemente un contatore delle chiamate per ciascun pod.)<\/p>\n<p>Ma ci\u00f2 di cui abbiamo bisogno non \u00e8 affatto questo, giusto? Bene, proviamo a rompere tutto senza toccare il codice sorgente.<\/p>\n<h3>Creiamo interruzioni nel funzionamento del microservizio.<\/h3>\n<p>\nDi seguito \u00e8 riportato il file yaml per la regola di instradamento di Istio, che in met\u00e0 dei casi restituir\u00e0 un errore (503). <a class=\"wpil_keyword_link\" href=\"https:\/\/prohoster.info\/it\/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=\"Tracciamento e monitoraggio in Istio: microservizi e principio di incertezza\" src=\"\/wp-content\/uploads\/2020\/01\/8fb3ed7f16ed7fd1a57b27dfc3bfd2da.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\nSi noti che specifichiamo esplicitamente che in met\u00e0 dei casi deve restituire un errore 503.<\/p>\n<p>Ecco come apparir\u00e0 uno screenshot del comando curl eseguito in un ciclo dopo che attiviamo questa regola per simulare i guasti. Come possiamo vedere, met\u00e0 delle richieste restituisce un errore 503, indipendentemente da quale pod \u2013 v1 o v2 \u2013 siano indirizzate:<\/p>\n<p><img decoding=\"async\" alt=\"Tracciamento e monitoraggio in Istio: microservizi e principio di incertezza\" src=\"\/wp-content\/uploads\/2020\/01\/3d9760cf5abc7480ad3aab826c274766.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\nPer ripristinare il normale funzionamento, basta rimuovere questa regola, nel nostro caso con il comando istioctl delete routerule recommendation-503 -n tutorial. Qui Tutorial \u00e8 il nome del progetto Red Hat OpenShift in cui si trova il nostro tutorial su Istio.<\/p>\n<h3>Introduciamo ritardi artificiali.<\/h3>\n<p>\nGli errori 503 artificiali aiutano a testare il sistema per verificarne la resilienza, ma la capacit\u00e0 di prevedere e gestire i ritardi dovrebbe impressionarvi ancora di pi\u00f9. Inoltre, i ritardi nella vita reale si verificano pi\u00f9 frequentemente dei guasti. Un microservizio lento \u00e8 un veleno che danneggia l'intero sistema. Grazie a Istio, \u00e8 possibile testare il codice relativo alla gestione dei ritardi senza modificarlo. Per iniziare, mostreremo come farlo nel caso di ritardi di rete imputati artificialmente.<\/p>\n<p>Tenete presente che dopo questo tipo di test, potrebbe essere necessario (o desiderabile) rielaborare il vostro codice. La buona notizia \u00e8 che in questo caso agirete in modo proattivo e non reattivo. \u00c8 proprio cos\u00ec che deve essere costruito il ciclo di sviluppo: codifica-test, feedback-codifica-test...<\/p>\n<p>Ecco come appare la regola che... Anche se sapete cosa? Istio \u00e8 cos\u00ec semplice e questo file yaml \u00e8 cos\u00ec chiaro che tutto in questo esempio parla da s\u00e9, basta dare un'occhiata:<\/p>\n<p><img decoding=\"async\" alt=\"Tracciamento e monitoraggio in Istio: microservizi e principio di incertezza\" src=\"\/wp-content\/uploads\/2020\/01\/e077e891cbccc66ebc4d4c7b67a0f1ec.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\nIn met\u00e0 dei casi ci sar\u00e0 un ritardo di 7 secondi. E questo non \u00e8 affatto come se avessimo inserito nel codice sorgente un comando sleep, poich\u00e9 Istio ritarda effettivamente la richiesta di 7 secondi. Poich\u00e9 Istio supporta il tracciamento di Jaeger, questo ritardo \u00e8 facilmente osservabile nell'interfaccia di Jaeger, come mostrato nello screenshot qui sotto. Nota la lunga richiesta nell'angolo in alto a destra del grafico \u2013 la sua durata \u00e8 di 7.02 secondi:<\/p>\n<p><img decoding=\"async\" alt=\"Tracciamento e monitoraggio in Istio: microservizi e principio di incertezza\" src=\"\/wp-content\/uploads\/2020\/01\/97a7b33fb7e0455973c7fd1b2aefadf3.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\nQuesto scenario consente di testare il codice in condizioni di ritardi di rete. E chiaramente, rimuovendo questa regola, elimineremo il ritardo artificiale. Ripetiamolo, ma abbiamo fatto tutto questo senza toccare il codice sorgente.<\/p>\n<h3>Non ritirarsi e non arrendersi<\/h3>\n<p>\nUn'altra funzione utile per il chaos engineering in Istio \u00e8 il ripetuto tentativo di contattare un servizio un numero prestabilito di volte. L'idea \u00e8 di non smettere di provare quando la prima richiesta termina con un errore 503 - e magari, al N-esimo tentativo, avremo fortuna. Potrebbe essere che il servizio si sia semplicemente preso una pausa momentanea per qualche motivo. S\u00ec, \u00e8 necessario indagare e risolvere questo problema. Ma per ora, proviamo a mantenere il sistema in funzione.<\/p>\n<p>Quindi, vogliamo che il servizio restituisca occasionalmente un errore 503, e Istio dopo tenter\u00e0 nuovamente di collegarsi ad esso. Ed \u00e8 chiaro che ci serve un modo per generare l'errore 503, senza modificare il codice stesso...<\/p>\n<p>Aspetta, fermi! Abbiamo gi\u00e0 fatto questo.<\/p>\n<p>Questo file far\u00e0 in modo che il servizio recommendation-v2 restituisca un errore 503 nella met\u00e0 dei casi:<\/p>\n<p><img decoding=\"async\" alt=\"Tracciamento e monitoraggio in Istio: microservizi e principio di incertezza\" src=\"\/wp-content\/uploads\/2020\/01\/f446528f9c968e40cc2cf318cf0acde9.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n\u00c8 ovvio che parte delle richieste terminer\u00e0 con un fallimento:<\/p>\n<p><img decoding=\"async\" alt=\"Tracciamento e monitoraggio in Istio: microservizi e principio di incertezza\" src=\"\/wp-content\/uploads\/2020\/01\/f998513746604beda241b8d6de2ed727.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\nOra attiviamo la funzione Retry di Istio:<\/p>\n<p><img decoding=\"async\" alt=\"Tracciamento e monitoraggio in Istio: microservizi e principio di incertezza\" src=\"\/wp-content\/uploads\/2020\/01\/32e210b6ecbf4c1ecf121ee73e64ba35.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\nQuesta regola di routing effettuer\u00e0 tre tentativi con un intervallo di due secondi e dovrebbe ridurre (e idealmente eliminare completamente) gli errori 503:<\/p>\n<p><img decoding=\"async\" alt=\"Tracciamento e monitoraggio in Istio: microservizi e principio di incertezza\" src=\"\/wp-content\/uploads\/2020\/01\/7f9711c52949072b823399e59141cb64.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\nRiepiloghiamo: abbiamo configurato Istio in modo che, da un lato, generi un errore 503 per met\u00e0 delle richieste. Dall'altro lato, lo stesso Istio effettua tre tentativi di riconnettersi al servizio in caso di errore 503. Il risultato? Tutto funziona meravigliosamente. Cos\u00ec, utilizzando la funzione Retry, abbiamo mantenuto la nostra promessa di non arrenderci e di non deflettere.<\/p>\n<p>E s\u00ec, l'abbiamo fatto di nuovo, senza toccare il codice. Tutto ci\u00f2 di cui avevamo bisogno erano due regole di instradamento di Istio:<\/p>\n<p><img decoding=\"async\" alt=\"Tracciamento e monitoraggio in Istio: microservizi e principio di incertezza\" src=\"\/wp-content\/uploads\/2020\/01\/c21a1cfd2d78ae4145a57d1cefcc6c59.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<h3>Come non deludere l'utente o sette non aspettano<\/h3>\n<p>\nE ora, capovolgiamo la situazione e consideriamo uno scenario in cui non arrendersi e non deflettere sia valido solo per un certo periodo di tempo fisso. Dopodich\u00e9, dobbiamo semplicemente interrompere i tentativi di elaborare la richiesta, per non costringere tutti ad aspettare un servizio che rallenta. In altre parole, non proteggiamo una posizione persa, ma ci ritiriamo su una linea di riserva per non deludere l'utente del sito e non costringerlo a trovarsi nell'incertezza.<\/p>\n<p>In Istio, \u00e8 possibile impostare un timeout per l'esecuzione delle richieste. Se il servizio supera questo timeout, verr\u00e0 restituito un errore 504 (Gateway Timeout) \u2013 anche questo \u00e8 gestito tramite la configurazione di Istio. Tuttavia, dovremo aggiungere nel codice sorgente del servizio un comando sleep (e poi naturalmente eseguire il rebuild e il redeploy) per simulare un funzionamento lento del servizio. Purtroppo, altrimenti non \u00e8 possibile.<\/p>\n<p>Quindi, abbiamo inserito un sleep di tre secondi nel codice del servizio recommendation v2, ricompilato l'immagine corrispondente e fatto il redeploy del container, ora aggiungiamo un timeout utilizzando la seguente regola di routing di Istio:<\/p>\n<p><img decoding=\"async\" alt=\"Tracciamento e monitoraggio in Istio: microservizi e principio di incertezza\" src=\"\/wp-content\/uploads\/2020\/01\/c03fc452b98dd875a8a7d3ac561893ca.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\nNello screenshot sopra, si pu\u00f2 vedere che interrompiamo il tentativo di contattare il servizio recommendation se non riceviamo risposta entro un secondo, cio\u00e8 ancora prima che si verifichi l'errore 504. Dopo aver applicato questa regola di routing (e aggiunto un sleep di tre secondi nel codice del servizio recommendation:v2), otterremo questo:<\/p>\n<p><img decoding=\"async\" alt=\"Tracciamento e monitoraggio in Istio: microservizi e principio di incertezza\" src=\"\/wp-content\/uploads\/2020\/01\/ed6e80052c67254718b1fde2bd873e71.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\nRibadiamo, ma il timeout pu\u00f2 essere impostato senza toccare il codice sorgente. Un ulteriore vantaggio qui \u00e8 che ora puoi modificare il tuo codice in modo da reagire al timeout e testare facilmente queste modifiche con Istio.<\/p>\n<h3>E ora tutto insieme<\/h3>\n<p>\nIntrodurre un po' di caos con Istio \u00e8 un ottimo modo per testare il tuo codice e la resilienza del tuo sistema nel suo complesso. I modelli di fallback, bulkhead e circuit breaker, i meccanismi per generare malfunzionamenti e ritardi artificiali, nonch\u00e9 i tentativi di ripetizione e i timeout, saranno molto utili per costruire sistemi cloud resilienti. In combinazione con Kubernetes e Red Hat OpenShift, questi strumenti aiuteranno ad affrontare il futuro con sicurezza.<br \/>\n<br \/>Fonte: <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\/it\/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=\"it_IT\" \/>\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\/it\/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\udd47Tracciamento e monitoraggio in Istio: microservizi e principio di indeterminazione | ProHoster","description":"Il principio di indeterminazione di Heisenberg afferma che non \u00e8 possibile misurare contemporaneamente la posizione di un oggetto e la sua velocit\u00e0. Se un oggetto \u00e8 in movimento, non ha una posizione. E se ha una posizione, significa che non ha velocit\u00e0. Per quanto riguarda i microservizi sulla piattaforma Red Hat OpenShift (e gestiti da Kubernetes), grazie al software open source adatto, possono reportare simultaneamente come","canonical_url":"https:\/\/prohoster.info\/it\/blog\/administrirovanie\/trassirovka-i-monitoring-v-istio-mikroservisy-i-printsip-neopredelennosti","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"it_IT","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\/it\/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\/it\/wp-json\/wp\/v2\/posts\/55700","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/comments?post=55700"}],"version-history":[{"count":1,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/posts\/55700\/revisions"}],"predecessor-version":[{"id":162124,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/posts\/55700\/revisions\/162124"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/media?parent=55700"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/categories?post=55700"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/tags?post=55700"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}