Nota. transl.: In prima parte, Haec series introducendis Istio facultatibus dedicata est et eas in actu demonstrando. Nunc de multiplicioribus aspectibus configurationis et usu reticuli huius officii, ac praesertim de subtiliter in fusione ac network negotiationis administratione jaculabimus.
Etiam nos admonemus te articulum figurationibus uti (manifests pro Kubernetes et Istio) ex promptuario. istio-dominium.
Negotiatio Management
Cum Istio, novae facultates in botro praebere possunt;
Recuperatio post falls: timeouts, retries, circuit breakers;
delicta inserentesomissis precibus, etc.
Procedente articulo, hae facultates illustrabuntur adhibitis delectis adhibitis ut exemplum et novae notiones per viam inducentur. Primus talis conceptus erit DestinationRules(i.e. praecepta de recipiente negotiationis/ petitiones approx. transl.)cuius ope experiamur A/B.
A / B probatio: DestinationRules in usu
A/B probatio adhibetur in casibus ubi duae versiones applicationis (plerumque visibiliter diversae sunt) et non sumus 100% fideles quibus quis experientiam usoris emendabit. Utramque ergo versionem simul currimus, et metricas colligemus.
Ad secundam frontis versionem explicandam, requiritur ad probationem A/B demonstrandam, sequentia currite praeceptum;
$ kubectl apply -f resource-manifests/kube/ab-testing/sa-frontend-green-deployment.yaml
deployment.extensions/sa-frontend-green created
Instruere manifestam versionem viridis duobus locis differt;
Imago fundatur in alia tag - istio-green,
Siliquae habent pittacium version: green.
Cum uterque pittacium deployments habent app: sa-frontend, Petitiones fusa prope servitium sa-external-services ad servitium sa-frontendad omnes ejus instantias redigenda et distribuenda onus circum-Robin algorithmusquai ad hunc locum;
Requisitum files non inveni
Hae tabulae non inventae sunt quia aliter nominantur in applicatione diversis. Fac de hoc:
Et hoc est quod index.htmlrogans unam versionem imaginum staticarum, ab onere librario ad siliquas quae aliam versionem habent, mitti potest, ubi, ob rationes evidentes, huiusmodi fasciculi non sunt. Ergo, ad applicationem ad operandum restrictionem ponere oportet: "eadem versio applicationis quae servivit index.html serviat petitionibus subsequentibus".
Nos youll 'adepto cum consistent Nullam-fundatur libratio onus (Consistent detrahe Loadbalancing). In hoc casu, petitiones ab eodem cliente mittuntur ad eundem instantiam backendad quod proprietas praedefinita adhibetur, verbi gratia, HTTP capitis. DestinationRules per implemented.
DestinationRules
Post VirtualService petitionem misit ad desideratum servitium, DestinationRules programmatis definire possumus, quae ad negotiatio applicanda ad instantias huius servitii destinata erunt:
Negotiationis procuratio cum Istio opibus
illud: Ictum Istio facultates in retiaculis retis praesentatur hic modo ut facile intelligatur. Ut praecise, consilium in quo instantiam mittendi petitio ab Internuntio in Ingress Gateway figurata est in CRD.
Cum Regulis Destination, onere conparare possumus configurare ad hashes consistentes uti et efficere ut eadem instantia muneris eidem usuario respondeat. Sequenti configuratione sino vos hoc consequi (destinationrule-sa-frontend.yaml):
illud: Ad varias valores in capite addere et proventus directe in navigatro probare, uti potes haec extensio ut Chrome (aut cum hoc pro Firefox - approx. transl.).
In genere, DestinationRules plures facultates habet in ambitu oneris librationis - perceptio pro details in officialis documenta.
Umbrae ("protegere") seu Speculum ("Speculum") adhibitis in casibus in quibus mutationem productionis sine fine usorum afficientium probare volumus: hoc facere, duplicare postulationem ("speculi" secundo instantiae ubi desideratae mutationes factae sunt et consequentias intuemur. Plane, hoc est, cum collega tuus quaestionem maxime criticam carpit et trahere postulat in forma tam ingentis stercoris massam ut nemo eam recognoscere possit.
Ut hanc missionem in actione experiatur, alteram instantiam SA-Logicae cum cimicibus faciamus (buggy) Praecepto currendo;
$ kubectl apply -f resource-manifests/kube/shadowing/sa-logic-service-buggy.yaml
deployment.extensions/sa-logic-buggy created
Et nunc percurramus mandatum ut omnia exempla curemus app=sa-logic Habent etiam pittacia cum versionibus correspondentibus:
obsequium sa-logic peltas siliquas cum pittacium app=sa-logicsic omnes petitiones distribuentur inter omnes instantias;
... Sed petitiones v1 instantias mittendas et instantias praevisas v2 volumus.
Hoc consequemur per Virtual Servitium in compositione cum DestinationRule, ubi regulae subset et itinera Virtualis Servitii ad certam partem determinabunt.
Nulla hic explicatio opus est, ut in actione videamus;
$ kubectl apply -f resource-manifests/istio/shadowing/sa-logic-subsets-shadowing-vs.yaml
virtualservice.networking.istio.io/sa-logic created
Addamus onus vocando hoc mandatum:
$ while true; do curl -v http://$EXTERNAL_IP/sentiment
-H "Content-type: application/json"
-d '{"sentence": "I love yogobella"}';
sleep .8; done
Intueamur eventus in Grafana, ubi videre potes versionem cum cimicibus (buggy) proventus in defectu pro ~60% petitionum, sed nullae ex his defectibus finem usorum afficiunt prout per servitium currentem respondentur.
Hic primum vidimus quomodo Virtualis Servitio ad Legatorum nostrorum officia pertineat: quando sa-web-app rogaret sa-logicit per Legatum sidereum, qui - per Servitium Virtual - configuratur iter petitioni ad v1 subset et inspiciat instantiam ad v2 subset. sa-logic.
Scio, fortasse iam putas Services Virtual esse simplex. In sectione sequenti, id pangamus dicendo vere magnum esse.
Canariae rollouts
Instruere est processus evolvendi novam versionem applicationis ad parvum numerum utentium. Solet efficere ut nullae sint difficultates in emissione et tantum postea, iam confidens in qualitate sua, eam aliis usoribus distribue.ΠΎmaior auditorio.
Ad demonstrandum rollouts canariis, opus subset buggy Ρ sa-logic.
Tempus in nugis non teramus et statim XX% usorum mittat versionem cum bugs (hoc repraesentabit rollout canarium nostrum), et reliquae 20% ad servitium normale. Ad hoc utere sequentibus VirtualServicesa-logic-subsets-canary-vs.yaml):
... et statim videbimus aliquas petitiones in defectione ducere;
$ while true; do
curl -i http://$EXTERNAL_IP/sentiment
-H "Content-type: application/json"
-d '{"sentence": "I love yogobella"}'
--silent -w "Time: %{time_total}s t Status: %{http_code}n"
-o /dev/null; sleep .1; done
Time: 0.153075s Status: 200
Time: 0.137581s Status: 200
Time: 0.139345s Status: 200
Time: 30.291806s Status: 500
VirtualServices faciant canarias rollouts: In hoc casu, impulsum potentialem quaestiones ad 20% basi utentis coartavimus. Mirum! Nunc, in omni casu, cum de nostro codice certi non sumus (hoc est - semper...), uti possumus speculando et canariis rollouts.
Timeouts et retries
Sed cimices non semper in codice desinunt. In indice ex "8 De fallaciis de Computing Distributa"Primo loco est falsa opinio "retis certa est." Reapse retis non certa et hac de causa timeouts opus est (timeouts) et retries (Retries).
Pro demonstratione eadem problemata versione uti perget sa-logic (buggy) et retis vanitatem cum incertis defectibus simulabo.
Munus nostrum cum cimicibus habeat 1/3 occasionem capiendi nimis longum respondendi, facultas 1/3 finiendi cum Errore Servo Interno, et 1/3 pagina feliciter reddendi.
Talium problematum labem mitigare et vitam meliorem reddere usoribus, possumus:
addere timeout si officium accipit diutius quam VIII secundis respondere;
Uterque conatus infaustus censetur si responsio tempus excedit 3 secundis.
Optimization haec est quia user plus quam octo secundis expectare non vult et tres novos conatus faciemus responsionem in casu defectis accipere, casu prosperi responsionis augendo.
Applicare updated configurationem cum hoc imperio:
Deprime in Grafana graphs quod numerus responsionum felicium supra auctus est:
Improvements in felix responsio mutant post addendo timeouts et retries
Ante migremus ad proximam sectionem vel potius ad proximam partem articuli, quia in hoc non erunt experimenta magis practica β approx. transl., delere sa-logic-buggy et VirtualService currendo praecipit:
Loquimur de duobus maximis exemplis in architectura microservice quae te ad sui recuperationem consequi permittit (Se sanitatem) officia.
Interruptio potentiae("interruptio potentiae") postulationes terminare solebant ad instantiam servitutis quae sanae existimatur ac restitui dum client petitiones redirectae sunt ad sanas instantias illius servitii (quas recipis prosperis responsionibus auget). (Nota: exemplaris accuratior descriptio inveniri potest, e.g. hic.)
bulkhead("partitio") segregat defectus officii ab universa systemate afficiendo. Exempli gratia, Service B frangitur et aliud servitium (Service B clientis) petitionem servitii B facit, causando ut stagnum filum suum exhauriat et aliis petitionibus inservire non possit (etiamsi servitii B non sint). (Nota: exemplaris accuratior descriptio inveniri potest, e.g. hic.)
Horum exemplarium exsecutionem omittam quia facile sunt invenire officialis documentaet etiam realiter ostendere volo authenticationem et authoritatem, quae in altera parte articuli tractabitur.