Nóta. aistrigh.: An chéad chuid Bhí an tsraith seo tiomanta do chumais Istio a thabhairt isteach agus iad a thaispeáint i ngníomh. Anois labhróimid faoi ghnéithe níos casta de chumraíocht agus de úsáid an mhogalra seirbhíse seo, agus go háirithe, faoi ródú mionchoigeartaithe agus faoi bhainistiú tráchta líonra.
Cuirimid i gcuimhne duit freisin go n-úsáideann an t-alt cumraíochtaí (léirithe do Kubernetes agus Istio) ón stór istio-máistreacht.
bainistíocht tráchta
Le Istio, tá cumais nua le feiceáil sa bhraisle chun:
Ródú iarratais dinimiciúil: rolladh amach canáraí, tástáil A/B;
Cothromú luchtaithe: simplí agus comhsheasmhach, bunaithe ar hashes;
Aisghabháil tar éis titim: teorainn ama, atriail, scoradáin chiorcaid;
lochtanna a chur isteach: moilleanna, iarratais thit, etc.
De réir mar a leanann an t-alt ar aghaidh, léireofar na cumais seo ag baint úsáide as an bhfeidhmchlár roghnaithe mar shampla agus tabharfar isteach coincheapa nua ar an mbealach. Beidh an chéad choincheap den sórt sin DestinationRules(i.e. rialacha maidir le faighteoir tráchta/iarratais - thart ar. transl.), le cabhair a ndéanaimid tástáil A/B a ghníomhachtú.
Tástáil A/B: Rialacha Ceann Scríbe i gcleachtas
Baintear úsáid as tástáil A/B i gcásanna ina mbíonn dhá leagan d’fheidhmchlár (go hiondúil bíonn siad difriúil ó thaobh amhairc) agus nílimid 100% cinnte cé acu ceann a chuirfidh feabhas ar eispéireas an úsáideora. Dá bhrí sin, reáchtáilimid an dá leagan ag an am céanna agus bailímid méadracht.
Chun an dara leagan den aghaidh a imscaradh, atá riachtanach chun tástáil A/B a léiriú, rith an t-ordú seo a leanas:
$ kubectl apply -f resource-manifests/kube/ab-testing/sa-frontend-green-deployment.yaml
deployment.extensions/sa-frontend-green created
Tá difríocht idir an léiriú imscartha don leagan glas in dhá áit:
Tá an íomhá bunaithe ar chlib eile - istio-green,
Tá lipéad ag pods version: green.
Ós rud é go bhfuil lipéad ag an dá imscaradh app: sa-frontend, iarratais arna stiúradh ag seirbhís fhíorúil sa-external-services le haghaidh seirbhíse sa-frontend, a atreorú chuig a cásanna go léir agus déanfar an t-ualach a dháileadh tríd algartam bhabhta-robín, as a dtiocfaidh an staid seo a leanas:
Níor aimsíodh na comhaid iarrtha
Níor aimsíodh na comhaid seo toisc go bhfuil siad ainmnithe go difriúil i leaganacha éagsúla den fheidhmchlár. Déanaimis cinnte de seo:
Ciallaíonn sé seo go index.html, ag iarraidh leagan amháin de chomhaid statacha, is féidir leis an gcothromóir ualach a sheoladh chuig pods a bhfuil leagan difriúil acu, i gcás, ar chúiseanna soiléire, nach bhfuil comhaid den sórt sin ann. Mar sin, le go n-oibreoidh an t-iarratas, ní mór dúinn srian a leagan síos: “ba cheart go bhfreastalódh an leagan céanna den fheidhmchlár a sheirbheáil index.html ar iarratais ina dhiaidh sin'.
Bainfimid ann le cothromú ualach comhsheasmhach hash-bhunaithe (Cothromú Luchtaithe Hash comhsheasmhach)... Sa chás seo seoltar iarratais ón gcliant céanna chuig an ásc céanna, as a n-úsáidtear maoin réamhshainithe - mar shampla, ceanntásc HTTP. Curtha i bhfeidhm ag baint úsáide as Rialacha Ceann Scríbe.
Rialacha Ceann Scríbe
Tar éis Seirbhís Fhíorúil chuireamar iarratas chuig an tseirbhís atá ag teastáil, agus úsáid á baint as DestinationRules is féidir linn polasaithe a shainiú a chuirfear i bhfeidhm ar thrácht atá i ndán do chásanna na seirbhíse seo:
Bainistíocht tráchta le hacmhainní Istio
Tabhair faoi deara: Cuirtear an tionchar atá ag acmhainní Istio ar thrácht líonra i láthair anseo ar bhealach atá éasca le tuiscint. Le bheith beacht, is é an Toscaire sa Tairseach Ingress atá cumraithe sa CRD a dhéanfaidh an cinneadh maidir leis an gcás chun an t-iarratas a sheoladh chuige.
Le Rialacha Ceann Scríbe, is féidir linn cothromú ualaigh a chumrú chun hashes comhsheasmhacha a úsáid agus a chinntiú go bhfreagraíonn an tseirbhís chéanna don úsáideoir céanna. Ligeann an chumraíocht seo a leanas duit é seo a bhaint amach (ceann scríbe-sa-frontend.yaml):
Tabhair faoi deara: Chun luachanna éagsúla a chur sa cheanntásc agus na torthaí a thástáil go díreach sa bhrabhsálaí, is féidir leat é a úsáid an síneadh seo go Chrome (Nó leis seo le haghaidh Firefox - thart. aistrigh.).
Go ginearálta, tá níos mó cumais ag DestinationRules i réimse an chothromaithe ualaigh - seiceáil le haghaidh sonraí i doiciméadú oifigiúil.
Sula ndéanfaidh tú tuilleadh staidéir ar VirtualService, bainimis an “leagan glas” den fheidhmchlár agus an riail treo tráchta comhfhreagrach trí na horduithe seo a leanas a rith:
Scáthú (“sciath”) nó Scáthánú (“scáthán”) a úsáidtear i gcásanna inar mian linn athrú ar tháirgeadh a thástáil gan cur isteach ar úsáideoirí deiridh: chun é seo a dhéanamh, déanaimid iarratais (“scáthán”) a dhúbláil chuig an dara huair ina bhfuil na hathruithe inmhianaithe déanta, agus féachaimid ar na hiarmhairtí. Go simplí, is é seo an uair a roghnaíonn do chomhghleacaí an cheist is tábhachtaí agus go ndéanann sé iarratas tarraingte i bhfoirm cnapáin chomh mór sin de shalachar nach féidir le haon duine athbhreithniú a dhéanamh air.
Chun an cás seo a thástáil i ngníomh, cruthaimis an dara huair de SA-Logic le fabhtanna (buggy) tríd an ordú seo a leanas a rith:
$ kubectl apply -f resource-manifests/kube/shadowing/sa-logic-service-buggy.yaml
deployment.extensions/sa-logic-buggy created
Agus anois a ligean ar siúl ar an ordú chun a chinntiú go bhfuil gach cás le app=sa-logic Tá lipéid acu freisin a bhfuil na leaganacha comhfhreagracha orthu:
TSeirbhís sa-logic pods sprioc le lipéad app=sa-logic, mar sin déanfar gach iarratas a dháileadh ar gach cás:
... ach ba mhaith linn iarratais a sheoladh chuig cásanna v1 agus iad a mhacasamhlú chuig cásanna v2:
Bainfimid é seo amach trí Sheirbhís Fhíorúil i gcomhar le Ceann Scríbe, áit a gcinnfidh na rialacha fo-thacair agus bealaí na Seirbhíse Fíorúla chuig fo-thacar ar leith.
óstach (host) a shainíonn nach bhfuil feidhm ag an riail seo ach amháin maidir le cásanna ina dtéann an bealach i dtreo na seirbhíse sa-logic;
Teidil (name(e) go n-úsáidtear fo-thacair agus iad á ródú chuig cásanna fo-thacair;
Lipéad (label) sainmhíníonn sé na péirí eochairluacha a chaithfidh cásanna a mheaitseáil le bheith mar chuid den fho-thacar.
Cuir an chumraíocht i bhfeidhm leis an ordú seo a leanas:
$ kubectl apply -f resource-manifests/istio/shadowing/sa-logic-subsets-destinationrule.yaml
destinationrule.networking.istio.io/sa-logic created
Anois go bhfuil na fo-thacair sainithe, is féidir linn bogadh ar aghaidh agus an tSeirbhís Fhíorúil a chumrú chun rialacha a chur i bhfeidhm ar iarratais ar sa-loighic ionas go mbeidh siad:
Níl gá le míniú anseo, mar sin déanaimis é a fheiceáil i ngníomh:
$ kubectl apply -f resource-manifests/istio/shadowing/sa-logic-subsets-shadowing-vs.yaml
virtualservice.networking.istio.io/sa-logic created
Cuirfimid an t-ualach tríd an ordú seo a leanas a ghlaoch:
$ while true; do curl -v http://$EXTERNAL_IP/sentiment
-H "Content-type: application/json"
-d '{"sentence": "I love yogobella"}';
sleep .8; done
Breathnaímid ar na torthaí i Grafana, áit ar féidir leat a fheiceáil go bhfuil an leagan le bugs (buggy) teip ar ~60% de na hiarratais, ach ní chuireann aon cheann de na teipeanna seo isteach ar úsáideoirí deiridh mar a bhfreagraíonn seirbhís reatha dóibh.
Freagraí rathúla ar leaganacha éagsúla den tseirbhís sa-loighic
Anseo chonaiceamar ar dtús conas a chuirtear Seirbhís Fhíorúil i bhfeidhm ar Thoscairí ár seirbhísí: cathain sa-web-app dhéanann iarratas ar sa-logic, téann sé tríd an Toscaire taobhcharr, atá - trí VirtualService - cumraithe chun an t-iarratas a threorú chuig an bhfothacar v1 agus an t-iarratas a scáthánú chuig fothacar v2 na seirbhíse sa-logic.
Tá a fhios agam, b'fhéidir go gceapfá cheana féin go bhfuil Seirbhísí Fíorúla simplí. Sa chéad chuid eile, leathnóimid air sin trína rá go bhfuil siad ar fheabhas freisin.
Rolláin Chanáracha
Is éard atá i gceist le hImscaradh Canárach ná an próiseas chun leagan nua d’fheidhmchlár a rolladh amach do líon beag úsáideoirí. Úsáidtear é chun a chinntiú nach bhfuil aon fhadhbanna sa scaoileadh agus go dtí sin, a bheith muiníneach cheana féin as a cháilíocht (scaoileadh) cheana féin, é a dháileadh ar úsáideoirí eile.оlucht féachana níos mó.
Chun rolladh amach canáraí a léiriú, leanfaimid ag obair le fo-thacar buggy у sa-logic.
Ná cuirimis am amú ar trifles agus cuirimis 20% d’úsáideoirí chuig an leagan láithreach le fabhtanna (bíonn sé seo in ionannas lenár rolladh amach canáraí), agus an 80% eile chuig an ngnáthsheirbhís. Chun é seo a dhéanamh, úsáid an tSeirbhís Fhíorúil seo a leanas (sa-loighic-fo-thacair-chanáracha-vs.yaml):
... agus feicfidh muid láithreach go bhfuil teipeanna mar thoradh ar roinnt iarrataí:
$ 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
Cumasaíonn VirtualServices rolladh amach canáraí: Sa chás seo, tá tionchar féideartha na saincheisteanna cúngaithe againn go 20% den bhonn úsáideora. Iontach! Anois, i ngach cás nuair nach bhfuilimid cinnte faoinár gcód (i bhfocail eile - i gcónaí...), is féidir linn úsáid a bhaint as rolladh amach scáthánaithe agus canáraí.
Teorainneacha ama agus trialacha eile
Ach ní i gcónaí a chríochnaíonn bugs suas sa chód. Sa liosta ó "8 Míthuiscintí faoin Ríomhaireacht Dáilte“Ar an gcéad dul síos is ea an tuairim earráideach go bhfuil “an líonra iontaofa.” I ndáiríre an líonra aon iontaofa, agus ar an gcúis sin teastaíonn teorainneacha ama uainn (Am istigh) agus atriallaíonn (atriail).
Chun léiriú a dhéanamh leanfaimid orainn ag úsáid an leagan faidhbe céanna sa-logic (buggy), agus déanfaimid insamhladh ar neamhiontaofacht an líonra le teipeanna randamach.
Bíodh seans 1/3 ag ár seirbhís le fabhtanna go dtógfaidh sé ró-fhada chun freagra a thabhairt, seans 1/3 go gcríochnóidh Earráid Freastalaí Inmheánach, agus seans 1/3 ar an leathanach a thabhairt ar ais go rathúil.
Chun tionchar fadhbanna den sórt sin a mhaolú agus an saol a fheabhsú d’úsáideoirí, is féidir linn:
cuir teorainn ama leis má thógann an tseirbhís níos mó ná 8 soicind le freagairt,
Tá an teorainn ama don iarratas socraithe go dtí 8 soicind;
Déantar iarratais a aisghabháil 3 huaire;
Agus meastar nár éirigh le gach iarracht má théann an t-am freagartha thar 3 soicind.
Is leas iomlán a bhaint é seo toisc nach mbeidh ar an úsáideoir fanacht níos mó ná 8 soicind agus déanfaimid trí iarrachtaí nua chun freagra a fháil i gcás teipeanna, rud a mhéadaíonn an seans go bhfaighfear freagra rathúil.
Cuir an chumraíocht nuashonraithe i bhfeidhm leis an ordú seo a leanas:
Agus seiceáil i ngraif Grafana go bhfuil méadú tagtha thuas ar líon na bhfreagraí rathúla:
Feabhsuithe ar staitisticí freagartha rathúla tar éis teorainneacha ama a chur leis agus trialacha eile
Sula bogadh ar aghaidh go dtí an chéad chuid eile (nó in áit, go dtí an chéad chuid eile den alt, mar gheall ar seo ní bheidh aon turgnaimh níos praiticiúla - thart. transl.), scrios sa-logic-buggy agus VirtualService trí na horduithe seo a leanas a rith:
Táimid ag caint faoi dhá phatrún tábhachtach san ailtireacht microservice a ligeann duit féin-aisghabháil a bhaint amach (féinleighis) seirbhísí.
Chuarda Breaker("circuit breaker") a úsáidtear chun deireadh a chur le hiarratais a thagann ar shampla de sheirbhís a mheastar a bheith míshláintiúil agus í a chur ar ais fad is a atreoraítear iarratais cliant chuig cásanna sláintiúla den tseirbhís sin (a ardaíonn céatadán na bhfreagraí rathúla). (Nóta: Is féidir cur síos níos mionsonraithe ar an bpatrún a fháil, mar shampla, anseo.)
Bulccheann("deighilt") leithlisítear teipeanna seirbhíse ó chur isteach ar an gcóras iomlán. Mar shampla, tá Seirbhís B briste agus déanann seirbhís eile (cliant Sheirbhís B) iarratas chuig Seirbhís B, rud a fhágann go n-ídíonn sí a linn snáithe agus nach mbeidh sé in ann iarratais eile a sheirbhísiú (fiú mura bhfuil siad ó Sheirbhís B). (Nóta: Is féidir cur síos níos mionsonraithe ar an bpatrún a fháil, mar shampla, anseo.)
Fágfaidh mé ar lár sonraí cur chun feidhme na bpatrún seo toisc go bhfuil siad éasca a fháil isteach doiciméadú oifigiúil, agus ba mhaith liom freisin fíordheimhniú agus údarú a thaispeáint, a phléifear sa chéad chuid eile den alt.