Hanes creu gwasanaeth cwmwl, wedi'i flasu â seiberpunk

Hanes creu gwasanaeth cwmwl, wedi'i flasu â seiberpunk

Wrth i chi weithio ym maes TG, rydych chi'n dechrau sylwi bod gan systemau eu cymeriad eu hunain. Gallant fod yn hyblyg, yn dawel, yn ecsentrig ac yn llym. Gallant ddenu neu wrthyrru. Un ffordd neu'r llall, mae'n rhaid i chi "drafod" gyda nhw, symud rhwng "peryglon" ac adeiladu cadwyni o'u rhyngweithio.

Felly cawsom y fraint o adeiladu platfform cwmwl, ac ar gyfer hyn roedd angen “perswadio” cwpl o is-systemau i weithio gyda ni. Yn ffodus, mae gennym ni “iaith API”, dwylo uniongyrchol a llawer o frwdfrydedd.

Ni fydd yr erthygl hon yn dechnegol galed, ond bydd yn disgrifio'r problemau y daethom ar eu traws wrth adeiladu'r cwmwl. Penderfynais ddisgrifio ein llwybr ar ffurf ffantasi technegol ysgafn am sut yr oeddem yn edrych am iaith gyffredin gyda systemau a beth ddaeth allan ohoni.

Croeso i gath.

Dechrau o daith

Beth amser yn ôl, cafodd ein tîm y dasg o lansio llwyfan cwmwl ar gyfer ein cleientiaid. Cawsom gefnogaeth rheolwyr, adnoddau, pentwr caledwedd a rhyddid wrth ddewis technolegau i weithredu rhan meddalwedd y gwasanaeth.

Roedd hefyd nifer o ofynion:

  • mae angen cyfrif personol cyfleus ar y gwasanaeth;
  • rhaid integreiddio'r platfform i'r system filio bresennol;
  • meddalwedd a chaledwedd: Ffabrig OpenStack + Twngsten (Open Contrail), y mae ein peirianwyr wedi dysgu ei “goginio” yn eithaf da.

Byddwn yn dweud wrthych dro arall sut y cafodd y tîm ei ymgynnull, datblygwyd y rhyngwyneb cyfrif personol a gwnaed penderfyniadau dylunio, os oes gan gymuned Habra ddiddordeb.
Yr offer y gwnaethom benderfynu eu defnyddio:

  • Python + Flask + Swagger + SQLAlchemy - set Python hollol safonol;
  • Vue.js ar gyfer blaen;
  • Fe benderfynon ni wneud y rhyngweithio rhwng cydrannau a gwasanaethau gan ddefnyddio Seleri dros AMQP.

Gan ragweld cwestiynau am ddewis Python, egluraf. Mae'r iaith wedi dod o hyd i'w niche yn ein cwmni ac mae diwylliant bach, ond llonydd, wedi datblygu o'i chwmpas. Felly, penderfynwyd dechrau adeiladu’r gwasanaeth arno. Ar ben hynny, mae cyflymder datblygiad mewn problemau o'r fath yn aml yn bendant.

Felly, gadewch i ni ddechrau ein cydnabod.

Silent Bill - bilio

Rydyn ni wedi adnabod y dyn hwn ers amser maith. Roedd bob amser yn eistedd wrth fy ymyl ac yn cyfrif rhywbeth yn dawel. Weithiau byddai'n anfon ceisiadau defnyddwyr atom, yn cyhoeddi anfonebau cleientiaid, ac yn rheoli gwasanaethau. Boi cyffredin sy'n gweithio'n galed. Gwir, roedd anawsterau. Mae'n dawel, weithiau'n feddylgar ac yn aml ar ei feddwl ei hun.

Hanes creu gwasanaeth cwmwl, wedi'i flasu â seiberpunk

Bilio yw'r system gyntaf i ni geisio gwneud ffrindiau â hi. A'r anhawster cyntaf y daethom ar ei draws oedd wrth brosesu gwasanaethau.

Er enghraifft, pan gaiff ei chreu neu ei dileu, mae tasg yn mynd i mewn i'r ciw bilio mewnol. Felly, gweithredir system o waith asyncronaidd gyda gwasanaethau. Er mwyn prosesu ein mathau o wasanaethau, roedd angen i ni “roi” ein tasgau yn y ciw hwn. A dyma ni'n rhedeg i mewn i broblem: diffyg dogfennaeth.

Hanes creu gwasanaeth cwmwl, wedi'i flasu â seiberpunk

A barnu yn ôl y disgrifiad o'r API meddalwedd, mae'n dal yn bosibl datrys y broblem hon, ond nid oedd gennym amser i wneud peirianneg wrthdroi, felly fe wnaethom gymryd y rhesymeg y tu allan a threfnu ciw tasg ar ben RabbitMQ. Mae gweithrediad ar wasanaeth yn cael ei gychwyn gan y cleient o'i gyfrif personol, yn troi'n “dasg” Seleri ar y pen ôl ac yn cael ei berfformio ar yr ochr bilio ac OpenStack. Mae seleri yn ei gwneud hi'n eithaf cyfleus rheoli tasgau, trefnu ailadroddiadau a monitro statws. Gallwch ddarllen mwy am “seleri”, er enghraifft, yma.

Hefyd, ni wnaeth bilio atal prosiect a oedd yn rhedeg allan o arian. Wrth gyfathrebu â'r datblygwyr, fe wnaethom ddarganfod, wrth gyfrifo ystadegau (ac mae angen i ni weithredu'n union y math hwn o resymeg), mae cydberthynas gymhleth o reolau atal. Ond nid yw'r modelau hyn yn cyd-fynd yn dda â'n realiti. Fe wnaethom hefyd ei weithredu trwy dasgau ar Seleri, gan fynd â'r rhesymeg rheoli gwasanaeth i'r ochr gefn.

Arweiniodd y ddwy broblem uchod at y cod yn chwyddo ychydig ac yn y dyfodol bydd yn rhaid i ni ailffactorio er mwyn symud y rhesymeg ar gyfer gweithio gyda thasgau i wasanaeth ar wahân. Mae angen i ni hefyd storio rhywfaint o wybodaeth am ddefnyddwyr a'u gwasanaethau yn ein tablau i gefnogi'r rhesymeg hon.

Problem arall yw tawelwch.

Mae Billy yn ateb “Iawn” yn dawel i rai ceisiadau API. Roedd hyn yn wir, er enghraifft, pan wnaethom daliadau o daliadau a addawyd yn ystod y prawf (mwy ar hynny yn ddiweddarach). Gweithredwyd y ceisiadau'n gywir ac ni welsom unrhyw wallau.

Hanes creu gwasanaeth cwmwl, wedi'i flasu â seiberpunk

Roedd yn rhaid i mi astudio'r logiau wrth weithio gyda'r system trwy'r UI. Daeth i'r amlwg bod bilio ei hun yn cyflawni ceisiadau tebyg, gan newid y cwmpas i ddefnyddiwr penodol, er enghraifft, gweinyddwr, gan ei basio yn y paramedr su.

Yn gyffredinol, er gwaethaf y bylchau yn y ddogfennaeth a mân ddiffygion API, aeth popeth yn eithaf da. Gellir darllen logiau hyd yn oed o dan lwyth trwm os ydych chi'n deall sut maen nhw wedi'u strwythuro a beth i chwilio amdano. Mae strwythur y gronfa ddata yn addurnedig, ond yn eithaf rhesymegol ac mewn rhai ffyrdd hyd yn oed yn ddeniadol.

Felly, i grynhoi, mae'r prif broblemau y daethom ar eu traws yn ystod y cam rhyngweithio yn ymwneud â nodweddion gweithredu system benodol:

  • “nodweddion” heb eu dogfennu a effeithiodd arnom mewn rhyw ffordd neu’i gilydd;
  • ffynhonnell gaeedig (mae bilio wedi'i ysgrifennu yn C ++), o ganlyniad, mae'n amhosibl datrys problem 1 mewn unrhyw ffordd heblaw "treial a gwall".

Yn ffodus, mae gan y cynnyrch API eithaf helaeth ac rydym wedi integreiddio'r is-systemau canlynol i'n cyfrif personol:

  • modiwl cymorth technegol - caiff ceisiadau o'ch cyfrif personol eu “procsi” i filio'n dryloyw ar gyfer cleientiaid gwasanaeth;
  • modiwl ariannol - yn eich galluogi i roi anfonebau i gleientiaid cyfredol, dileu a chynhyrchu dogfennau talu;
  • modiwl rheoli gwasanaeth - ar gyfer hyn roedd yn rhaid i ni weithredu ein triniwr ein hunain. Daeth ehangu'r system i'n dwylo ni a gwnaethom “ddysgu” math newydd o wasanaeth i Billy.
    Roedd yn dipyn o drafferth, ond un ffordd neu’r llall, rwy’n meddwl y bydd Billy a minnau’n cyd-dynnu.

Cerdded trwy gaeau twngsten - Ffabrig Twngsten

Roedd caeau twngsten yn frith o gannoedd o wifrau, gan basio miloedd o ddarnau o wybodaeth trwyddynt. Cesglir gwybodaeth mewn “pecynnau”, wedi'i dosrannu, gan adeiladu llwybrau cymhleth, fel pe bai trwy hud.

Hanes creu gwasanaeth cwmwl, wedi'i flasu â seiberpunk

Dyma barth yr ail system y bu'n rhaid i ni wneud ffrindiau â hi - Tungsten Fabric (TF), OpenContrail gynt. Ei dasg yw rheoli offer rhwydwaith, gan ddarparu tyniad meddalwedd i ni fel defnyddwyr. TF - SDN, yn crynhoi'r rhesymeg gymhleth o weithio gydag offer rhwydwaith. Mae erthygl dda am y dechnoleg ei hun, er enghraifft, yma.

Mae'r system wedi'i hintegreiddio ag OpenStack (a drafodir isod) trwy'r ategyn Neutron.

Hanes creu gwasanaeth cwmwl, wedi'i flasu â seiberpunk
Rhyngweithio gwasanaethau OpenStack.

Cyflwynodd y dynion o'r adran lawdriniaethau ni i'r system hon. Rydym yn defnyddio API y system i reoli pentwr rhwydwaith ein gwasanaethau. Nid yw wedi achosi unrhyw broblemau neu anghyfleustra difrifol i ni eto (ni allaf siarad ar ran y bechgyn o'r OE), ond bu rhai rhyfeddodau mewn rhyngweithio.

Roedd y cyntaf yn edrych fel hyn: roedd gorchmynion a oedd yn gofyn am allbynnu llawer iawn o ddata i'r consol enghraifft wrth gysylltu trwy SSH yn “hongian” y cysylltiad, tra bod popeth yn gweithio'n gywir trwy VNC.

Hanes creu gwasanaeth cwmwl, wedi'i flasu â seiberpunk

I'r rhai nad ydynt yn gyfarwydd â'r broblem, mae'n edrych yn eithaf doniol: mae ls / root yn gweithio'n gywir, tra, er enghraifft, mae'r brig yn “rhewi” yn llwyr. Yn ffodus, rydym wedi dod ar draws problemau tebyg o'r blaen. Penderfynwyd trwy diwnio'r MTU ar y llwybr o'r nodau cyfrifo i'r llwybryddion. Gyda llaw, nid yw hyn yn broblem TF.

Roedd y broblem nesaf rownd y gornel. Mewn un eiliad “hardd”, diflannodd hud y llwybro, yn union fel hynny. Mae TF wedi rhoi'r gorau i reoli llwybro ar yr offer.

Hanes creu gwasanaeth cwmwl, wedi'i flasu â seiberpunk

Fe wnaethom weithio gydag Openstack o'r lefel weinyddol ac wedi hynny symud i'r lefel defnyddiwr gofynnol. Mae'n ymddangos bod SDN yn “herwgipio” cwmpas y defnyddiwr sy'n cyflawni'r gweithredoedd. Y ffaith yw bod yr un cyfrif gweinyddol yn cael ei ddefnyddio i gysylltu TF ac OpenStack. Ar y cam o newid i'r defnyddiwr, diflannodd yr “hud”. Penderfynwyd creu cyfrif ar wahân i weithio gyda'r system. Roedd hyn yn ein galluogi i weithio heb dorri'r swyddogaeth integreiddio.

Silicon Lifeforms - OpenStack

Mae creadur silicon o siâp rhyfedd yn byw ger caeau twngsten. Yn bennaf oll, mae'n edrych fel plentyn sydd wedi gordyfu a all ein malu ag un siglen, ond nid oes unrhyw ymosodedd amlwg yn dod ohono. Nid yw'n achosi ofn, ond mae ei faint yn ysgogi ofn. Fel y mae cymhlethdod yr hyn sy'n digwydd o gwmpas.

Hanes creu gwasanaeth cwmwl, wedi'i flasu â seiberpunk

OpenStack yw craidd ein platfform.

Mae gan OpenStack sawl is-system, ac ar hyn o bryd rydym yn defnyddio Nova, Glance a Cinder yn fwyaf gweithredol. Mae gan bob un ohonynt ei API ei hun. Mae Nova yn gyfrifol am adnoddau cyfrifo a chreu achosion, mae Cinder yn gyfrifol am reoli cyfeintiau a'u cipluniau, mae Glance yn wasanaeth delwedd sy'n rheoli templedi OS a gwybodaeth fet arnynt.

Mae pob gwasanaeth yn rhedeg mewn cynhwysydd, a'r brocer negeseuon yw'r “cwningen wen” - RabbitMQ.

Rhoddodd y system hon y drafferth mwyaf annisgwyl i ni.

Ac nid oedd y broblem gyntaf yn dod yn hir pan wnaethom geisio cysylltu cyfaint ychwanegol i'r gweinydd. Gwrthododd yr API Cinder gyflawni'r dasg hon yn fflat. Yn fwy manwl gywir, os ydych chi'n credu OpenStack ei hun, mae'r cysylltiad wedi'i sefydlu, ond nid oes dyfais ddisg y tu mewn i'r gweinydd rhithwir.

Hanes creu gwasanaeth cwmwl, wedi'i flasu â seiberpunk

Fe wnaethom benderfynu dargyfeirio a gofyn am yr un camau gan API Nova. Y canlyniad yw bod y ddyfais yn cysylltu'n gywir ac yn hygyrch o fewn y gweinydd. Mae'n ymddangos bod y broblem yn digwydd pan nad yw bloc-storio yn ymateb i Cinder.

Roedd anhawster arall yn ein disgwyl wrth weithio gyda disgiau. Nid oedd modd datgysylltu cyfaint y system o'r gweinydd.

Unwaith eto, mae OpenStack ei hun yn “tyngu” ei fod wedi dinistrio'r cysylltiad a nawr gallwch chi weithio'n gywir gyda'r gyfrol ar wahân. Ond yn bendant nid oedd yr API eisiau perfformio gweithrediadau ar y ddisg.

Hanes creu gwasanaeth cwmwl, wedi'i flasu â seiberpunk

Yma fe benderfynon ni beidio ag ymladd yn arbennig, ond i newid ein barn am resymeg y gwasanaeth. Os oes enghraifft, rhaid cael cyfaint system hefyd. Felly, ni all y defnyddiwr dynnu nac analluogi “disg” y system eto heb ddileu'r “gweinydd”.

Mae OpenStack yn set eithaf cymhleth o systemau gyda'i resymeg rhyngweithio ei hun a'i API addurnol. Cawn ein helpu gan ddogfennaeth weddol fanwl ac, wrth gwrs, treial a chamgymeriad (ble fyddem hebddo).

Rhedeg prawf

Cynhaliom lansiad prawf ym mis Rhagfyr y llynedd. Y brif dasg oedd profi ein prosiect yn y modd ymladd o'r ochr dechnegol ac o'r ochr UX. Gwahoddwyd y gynulleidfa yn ddetholus a therfynwyd y profi. Fodd bynnag, rydym hefyd wedi gadael yr opsiwn i ofyn am fynediad i brofion ar ein gwefan.

Nid oedd y prawf ei hun, wrth gwrs, heb ei eiliadau doniol, oherwydd dyma lle mae ein hanturiaethau newydd ddechrau.

Yn gyntaf, fe wnaethom asesu'r diddordeb yn y prosiect yn anghywir i raddau a bu'n rhaid i ni ychwanegu nodau cyfrifo yn gyflym iawn yn ystod y prawf. Achos cyffredin dros glwstwr, ond roedd rhai arlliwiau yma hefyd. Mae'r ddogfennaeth ar gyfer fersiwn benodol o TF yn nodi'r fersiwn benodol o'r cnewyllyn y profwyd gwaith gyda vRouter arno. Fe benderfynon ni lansio nodau gyda chnewyllyn mwy diweddar. O ganlyniad, ni dderbyniodd TF lwybrau o'r nodau. Roedd yn rhaid i mi rolio'r cnewyllyn yn ôl ar frys.

Hanes creu gwasanaeth cwmwl, wedi'i flasu â seiberpunk

Mae chwilfrydedd arall yn ymwneud ag ymarferoldeb y botwm “newid cyfrinair” yn eich cyfrif personol.

Fe benderfynon ni ddefnyddio JWT i drefnu mynediad i'n cyfrif personol er mwyn peidio â gweithio gyda sesiynau. Gan fod y systemau'n amrywiol ac wedi'u gwasgaru'n eang, rydym yn rheoli ein tocyn ein hunain, lle rydym yn “lapio” sesiynau o filio a thocyn gan OpenStack. Pan fydd y cyfrinair yn cael ei newid, mae'r tocyn, wrth gwrs, "yn mynd yn ddrwg", gan nad yw'r data defnyddiwr bellach yn ddilys a bod angen ei ailgyhoeddi.

Hanes creu gwasanaeth cwmwl, wedi'i flasu â seiberpunk

Collasom olwg ar y pwynt hwn, ac yn syml, nid oedd digon o adnoddau i orffen y darn hwn yn gyflym. Roedd yn rhaid i ni dorri allan y swyddogaeth ychydig cyn lansio'r prawf.
Ar hyn o bryd rydym yn allgofnodi'r defnyddiwr os yw'r cyfrinair wedi'i newid.

Er gwaethaf y naws hyn, aeth y profion yn dda. Mewn ychydig wythnosau, stopiodd tua 300 o bobl erbyn. Roeddem yn gallu edrych ar y cynnyrch trwy lygaid defnyddwyr, ei brofi ar waith a chasglu adborth o ansawdd uchel.

I'w barhau

I lawer ohonom, dyma'r prosiect cyntaf o'r raddfa hon. Dysgon ni nifer o wersi gwerthfawr am sut i weithio fel tîm a gwneud penderfyniadau pensaernïol a dylunio. Sut i integreiddio systemau cymhleth heb lawer o adnoddau a'u cyflwyno i gynhyrchu.

Wrth gwrs, mae rhywbeth i weithio arno o ran cod ac ar ryngwynebau integreiddio systemau. Mae'r prosiect yn eithaf ifanc, ond rydym yn llawn uchelgais i'w dyfu'n wasanaeth dibynadwy a chyfleus.

Rydym eisoes wedi gallu perswadio’r systemau. Mae Bill yn ymdrin â chyfrif, bilio a cheisiadau defnyddwyr yn ei gwpwrdd yn ddyfal. Mae “hud” meysydd twngsten yn rhoi cyfathrebu sefydlog i ni. A dim ond OpenStack sy'n mynd yn fympwyol weithiau, gan weiddi rhywbeth fel “'Nid yw WSREP wedi paratoi nod eto ar gyfer defnydd cymhwysiad.” Ond mae honno'n stori hollol wahanol...

Lansiwyd y gwasanaeth gennym yn ddiweddar.
Gallwch ddarganfod yr holl fanylion ar ein Ar-lein.

Hanes creu gwasanaeth cwmwl, wedi'i flasu â seiberpunk
Tîm Datblygu CLO

Dolenni defnyddiol

OpenStack

Ffabrig Twngsten

Ffynhonnell: hab.com

Ychwanegu sylw