Sut i gysgu'n dda pan fydd gennych wasanaeth cwmwl: awgrymiadau pensaernïol sylfaenol

Sut i gysgu'n dda pan fydd gennych wasanaeth cwmwl: awgrymiadau pensaernïol sylfaenolAR GOLL gan sophiagworld

Mae'r erthygl hon yn cynnwys rhai patrymau cyffredin i helpu peirianwyr i weithio gyda gwasanaethau ar raddfa fawr y mae miliynau o ddefnyddwyr yn eu defnyddio. 

Ym mhrofiad yr awdur, nid yw hon yn rhestr gyflawn, ond yn wir effeithiol cynghori. Felly, gadewch i ni ddechrau.

Wedi'i gyfieithu gyda chefnogaeth Atebion Cwmwl Mail.ru.

Lefel gyntaf

Mae'r mesurau a restrir isod yn gymharol syml i'w gweithredu ond yn cael effaith fawr. Os nad ydych wedi rhoi cynnig arnynt o'r blaen, byddwch yn synnu at y gwelliannau sylweddol.

Isadeiledd fel cod

Rhan gyntaf y cyngor yw gweithredu seilwaith fel cod. Mae hyn yn golygu bod yn rhaid i chi gael ffordd raglennol i ddefnyddio'r seilwaith cyfan. Mae'n swnio'n gymhleth, ond rydyn ni'n siarad am y cod canlynol mewn gwirionedd:

Defnyddio 100 o beiriannau rhithwir

  • gyda Ubuntu
  • 2 GB RAM yr un
  • bydd ganddynt y cod canlynol
  • gyda'r paramedrau hyn

Gallwch olrhain newidiadau i'ch seilwaith a dychwelyd atynt yn gyflym gan ddefnyddio rheolaeth fersiwn.

Mae'r modernydd ynof yn dweud y gallwch chi ddefnyddio Kubernetes/Docker i wneud yr uchod i gyd, ac mae'n iawn.

Yn ogystal, gallwch ddarparu awtomeiddio gan ddefnyddio Chef, Puppet neu Terraform.

Integreiddio a Chyflawni Parhaus

Er mwyn creu gwasanaeth graddadwy, mae'n bwysig cael piblinell adeiladu a phrofi ar gyfer pob cais tynnu. Hyd yn oed os yw'r prawf yn syml iawn, bydd o leiaf yn sicrhau bod y cod rydych chi'n ei ddefnyddio yn cael ei lunio.

Bob tro ar y cam hwn rydych chi'n ateb y cwestiwn: a fydd fy ngwasanaeth yn llunio ac yn pasio profion, a yw'n ddilys? Gall hyn ymddangos fel bar isel, ond mae'n datrys llawer o broblemau.

Sut i gysgu'n dda pan fydd gennych wasanaeth cwmwl: awgrymiadau pensaernïol sylfaenol
Nid oes dim yn harddach na gweld y trogod hyn

Ar gyfer y dechnoleg hon gallwch werthuso Github, CircleCI neu Jenkins.

Balanswyr Llwyth

Felly, rydym am redeg cydbwysedd llwyth i ailgyfeirio traffig a sicrhau llwyth cyfartal ar bob nod neu mae'r gwasanaeth yn parhau rhag ofn y bydd methiant:

Sut i gysgu'n dda pan fydd gennych wasanaeth cwmwl: awgrymiadau pensaernïol sylfaenol
Mae cydbwysedd llwyth fel arfer yn gwneud gwaith da o ddosbarthu traffig. Yr arfer gorau yw gorbwyso fel nad oes gennych un pwynt o fethiant.

Yn nodweddiadol, mae balanswyr llwyth yn cael eu ffurfweddu yn y cwmwl rydych chi'n ei ddefnyddio.

RayID, ID cydberthynas neu UUID ar gyfer ceisiadau

Ydych chi erioed wedi dod ar draws gwall cais gyda neges fel hyn: "Aeth rhywbeth o'i le. Arbedwch yr id hwn a'i anfon at ein tîm cymorth"?

Sut i gysgu'n dda pan fydd gennych wasanaeth cwmwl: awgrymiadau pensaernïol sylfaenol
Mae dynodwr unigryw, ID cydberthynas, RayID, neu unrhyw un o'r amrywiadau, yn ddynodwr unigryw sy'n eich galluogi i olrhain cais trwy gydol ei gylch bywyd. Mae hyn yn caniatáu ichi olrhain y llwybr cais cyfan yn y logiau.

Sut i gysgu'n dda pan fydd gennych wasanaeth cwmwl: awgrymiadau pensaernïol sylfaenol
Mae'r defnyddiwr yn gwneud cais i system A, yna mae A yn cysylltu â B, sy'n cysylltu â C, yn ei storio yn X, ac yna mae'r cais yn cael ei ddychwelyd i A

Pe baech chi'n cysylltu o bell â pheiriannau rhithwir a cheisio olrhain y llwybr cais (a chydberthyn â llaw pa alwadau sy'n cael eu gwneud), byddech chi'n mynd yn wallgof. Mae cael dynodwr unigryw yn gwneud bywyd yn llawer haws. Dyma un o'r pethau symlaf y gallwch chi ei wneud i arbed amser wrth i'ch gwasanaeth dyfu.

Lefel gyfartalog

Mae'r cyngor yma yn fwy cymhleth na'r rhai blaenorol, ond mae'r offer cywir yn gwneud y dasg yn haws, gan ddarparu enillion ar fuddsoddiad hyd yn oed i gwmnïau bach a chanolig eu maint.

Logio canolog

Llongyfarchiadau! Rydych chi wedi defnyddio 100 o beiriannau rhithwir. Y diwrnod wedyn, daw'r Prif Swyddog Gweithredol i gwyno am gamgymeriad a gafodd wrth brofi'r gwasanaeth. Mae'n adrodd yr ID cyfatebol y buom yn siarad amdano uchod, ond bydd yn rhaid i chi edrych trwy logiau 100 o beiriannau i ddod o hyd i'r un a achosodd y ddamwain. Ac mae angen ei ddarganfod cyn cyflwyniad yfory.

Er bod hyn yn swnio fel antur hwyliog, mae'n well gwneud yn siŵr bod gennych chi'r gallu i chwilio'r holl gylchgronau mewn un lle. Datrysais y broblem o ganoli logiau gan ddefnyddio ymarferoldeb adeiledig y pentwr ELK: mae'n cefnogi casglu logiau chwiliadwy. Bydd hyn wir yn helpu i ddatrys y broblem o ddod o hyd i gyfnodolyn penodol. Fel bonws, gallwch chi greu siartiau a phethau hwyliog eraill fel hynny.

Sut i gysgu'n dda pan fydd gennych wasanaeth cwmwl: awgrymiadau pensaernïol sylfaenol
Ymarferoldeb pentwr ELK

Asiantau monitro

Nawr bod eich gwasanaeth yn weithredol, mae angen i chi sicrhau ei fod yn rhedeg yn esmwyth. Y ffordd orau o wneud hyn yw rhedeg sawl un asiantau, sy'n gweithio ochr yn ochr ac yn gwirio ei fod yn gweithio a bod gweithrediadau sylfaenol yn cael eu perfformio.

Ar y pwynt hwn rydych chi'n gwirio hynny mae'r strwythur rhedeg yn teimlo'n dda ac yn gweithio'n iawn.

Ar gyfer prosiectau bach a chanolig, rwy'n argymell Postman ar gyfer monitro a dogfennu APIs. Ond yn gyffredinol, rydych chi eisiau gwneud yn siŵr bod gennych chi ffordd i wybod pan fydd toriad wedi digwydd a chael eich hysbysu mewn modd amserol.

Graddio'n awtomatig yn dibynnu ar lwyth

Mae'n syml iawn. Os oes gennych chi geisiadau gwasanaethu VM a'i fod yn agosáu at 80% o ddefnydd cof, gallwch naill ai gynyddu ei adnoddau neu ychwanegu mwy o VMs i'r clwstwr. Mae gweithredu'r gweithrediadau hyn yn awtomatig yn wych ar gyfer newidiadau pŵer elastig o dan lwyth. Ond dylech bob amser fod yn ofalus faint o arian rydych chi'n ei wario a gosod terfynau rhesymol.

Sut i gysgu'n dda pan fydd gennych wasanaeth cwmwl: awgrymiadau pensaernïol sylfaenol
Gyda'r rhan fwyaf o wasanaethau cwmwl, gallwch ei ffurfweddu i raddfa awtomatig gan ddefnyddio mwy o weinyddion neu weinyddion mwy pwerus.

System arbrofi

Ffordd dda o gyflwyno diweddariadau yn ddiogel yw gallu profi rhywbeth ar gyfer 1% o ddefnyddwyr am awr. Rydych chi, wrth gwrs, wedi gweld mecanweithiau o'r fath ar waith. Er enghraifft, mae Facebook yn dangos lliw gwahanol i rannau o'r gynulleidfa neu'n newid maint y ffont i weld sut mae defnyddwyr yn gweld y newidiadau. Gelwir hyn yn brawf A/B.

Gellir dechrau hyd yn oed rhyddhau nodwedd newydd fel arbrawf ac yna penderfynu sut i'w rhyddhau. Byddwch hefyd yn cael y gallu i “gofio” neu newid y ffurfweddiad ar y hedfan yn seiliedig ar y swyddogaeth sy'n achosi diraddio yn eich gwasanaeth.

Lefel uwch

Dyma awgrymiadau sy'n eithaf anodd eu gweithredu. Mae'n debyg y bydd angen ychydig mwy o adnoddau arnoch, felly bydd cwmni bach neu ganolig yn cael amser caled yn rheoli hyn.

Gosodiadau glaswyrdd

Dyma beth rydw i'n ei alw'n ffordd "Erlang" o ddatblygu. Daeth Erlang yn cael ei ddefnyddio'n helaeth pan ymddangosodd cwmnïau ffôn. Dechreuwyd defnyddio Softswitches i gyfeirio galwadau ffôn. Prif bwrpas y meddalwedd ar y switshis hyn oedd peidio â gollwng galwadau yn ystod uwchraddio systemau. Mae gan Erlang ffordd braf o lwytho modiwl newydd heb chwalu'r un blaenorol.

Mae'r cam hwn yn dibynnu ar bresenoldeb cydbwysedd llwyth. Gadewch i ni ddychmygu bod gennych fersiwn N o'ch meddalwedd, ac yna rydych am ddefnyddio fersiwn N+1. 

Byddwch yn gallwn ni stopiwch y gwasanaeth a chyflwyno'r fersiwn nesaf ar amser sy'n gweithio i'ch defnyddwyr a chael rhywfaint o amser segur. Ond mae'n debyg bod gennych chi a dweud y gwir amodau CLG llym. Felly, mae CLG 99,99% yn golygu y gallwch chi fynd all-lein yn unig 52 munud y flwyddyn.

Os ydych chi wir eisiau cyflawni dangosyddion o'r fath, mae angen dau ddefnydd arnoch ar yr un pryd: 

  • yr un sydd ar hyn o bryd (N);
  • fersiwn nesaf (N+1). 

Rydych chi'n dweud wrth y balans llwyth i ailgyfeirio canran o draffig i'r fersiwn newydd (N+1) tra byddwch chi'n monitro'n weithredol am atchweliadau.

Sut i gysgu'n dda pan fydd gennych wasanaeth cwmwl: awgrymiadau pensaernïol sylfaenol
Yma mae gennym leoliad N gwyrdd sy'n gweithio'n iawn. Rydym yn ceisio symud i fersiwn nesaf y defnydd hwn

Yn gyntaf rydym yn anfon prawf bach iawn i weld a yw ein defnydd N+1 yn gweithio gydag ychydig bach o draffig:

Sut i gysgu'n dda pan fydd gennych wasanaeth cwmwl: awgrymiadau pensaernïol sylfaenol
Yn olaf, mae gennym set o wiriadau awtomataidd y byddwn yn eu cynnal yn y pen draw nes bod ein gweithrediad wedi'i gwblhau. Os ydych iawn iawn yn ofalus, gallwch hefyd arbed eich defnydd N am byth ar gyfer dychwelyd yn gyflym rhag ofn atchweliad gwael:

Sut i gysgu'n dda pan fydd gennych wasanaeth cwmwl: awgrymiadau pensaernïol sylfaenol
Os ydych chi am fynd i lefel hyd yn oed yn fwy datblygedig, gadewch i bopeth yn y lleoliad gwyrddlas redeg yn awtomatig.

Canfod anghysondebau a lliniaru awtomatig

O ystyried bod gennych logio canolog a chasglu logiau da, gallwch chi eisoes osod nodau uwch. Er enghraifft, rhagfynegi methiannau yn rhagweithiol. Mae swyddogaethau'n cael eu holrhain ar fonitorau ac mewn logiau ac mae diagramau amrywiol yn cael eu hadeiladu - a gallwch chi ragweld ymlaen llaw beth fydd yn mynd o'i le:

Sut i gysgu'n dda pan fydd gennych wasanaeth cwmwl: awgrymiadau pensaernïol sylfaenol
Unwaith y bydd anghysondebau wedi'u canfod, byddwch yn dechrau archwilio rhai o'r cliwiau y mae'r gwasanaeth yn eu darparu. Er enghraifft, gall cynnydd yn y llwyth CPU ddangos bod gyriant caled yn methu, tra gallai cynnydd sydyn mewn ceisiadau ddangos bod angen i chi gynyddu. Mae'r math hwn o ddata ystadegol yn eich galluogi i wneud y gwasanaeth yn rhagweithiol.

Gyda'r mewnwelediadau hyn, gallwch raddio mewn unrhyw ddimensiwn a newid nodweddion peiriannau, cronfeydd data, cysylltiadau ac adnoddau eraill yn rhagweithiol ac yn adweithiol.

Dyna i gyd!

Bydd y rhestr hon o flaenoriaethau yn arbed llawer o broblemau i chi os ydych chi'n codi gwasanaeth cwmwl.

Mae awdur yr erthygl wreiddiol yn gwahodd darllenwyr i adael eu sylwadau a gwneud newidiadau. Dosberthir yr erthygl fel ceisiadau ffynhonnell agored, tynnu gan yr awdur yn derbyn ar Github.

Beth arall i'w ddarllen ar y pwnc:

  1. Ewch a caches CPU
  2. Kubernetes yn ysbryd môr-ladrad gyda thempled ar gyfer gweithredu
  3. Ein sianel O Amgylch Kubernetes yn Telegram

Ffynhonnell: hab.com

Ychwanegu sylw