Aistriú tinder go Kubernetes

Nóta. aistrigh.: Roinn fostaithe de chuid na seirbhíse Tinder clú domhanda le déanaí roinnt sonraí teicniúla maidir lena mbonneagar a aistriú go Kubernetes. Thóg an próiseas beagnach dhá bhliain agus mar thoradh air seoladh ardán an-mhór ar K8anna, comhdhéanta de 200 seirbhís arna óstáil ar 48 míle coimeádán. Cad iad na deacrachtaí suimiúla a bhí ag innealtóirí Tinder agus cad iad na torthaí a tháinig orthu?

Aistriú tinder go Kubernetes

Cén fáth?

Beagnach dhá bhliain ó shin, chinn Tinder a ardán a aistriú go Kubernetes. Thabharfadh Kubernetes deis d’fhoireann Tinder coimeád agus bogadh chuig táirgeadh gan mórán iarrachta trí imscaradh doshannta (imscaradh domhalartaithe). Sa chás seo, bheadh ​​cóimeáil na n-iarratas, a n-imscaradh, agus an bonneagar féin sainithe le cód.

Bhíomar ag lorg réiteach ar fhadhb na hinscálaitheachta agus na cobhsaíochta freisin. Nuair a bhí scálú ríthábhachtach, ba mhinic a bhí orainn fanacht cúpla nóiméad le go dtiocfadh cásanna EC2 nua chun cinn. Bhí an smaoineamh coimeádáin a sheoladh agus tosú ag freastal ar thrácht i soicindí in ionad nóiméad an-tarraingteach dúinn.

Iompaigh an próiseas amach a bheith deacair. Le linn ár n-imirce go luath in 2019, shroich braisle Kubernetes mais chriticiúil agus thosaigh muid ag teacht ar fhadhbanna éagsúla mar gheall ar mhéid tráchta, méid braisle agus DNS. Ar an mbealach seo, réitigh muid go leor fadhbanna suimiúla a bhaineann le 200 seirbhís a aistriú agus braisle Kubernetes a chothabháil ina raibh 1000 nóid, 15000 pods agus 48000 coimeádán reatha.

Conas?

Ó Eanáir 2018, tá céimeanna éagsúla imirce imithe uainn. Thosaigh muid ag coimeád ár gcuid seirbhísí go léir agus iad a imscaradh chuig timpeallachtaí tástála Kubernetes scamall. Ag tosú i mí Dheireadh Fómhair, chuireamar tús le haistriú modheolaíoch na seirbhísí go léir atá ann cheana féin go Kubernetes. Faoi Mhárta na bliana dár gcionn, chuireamar an t-aistriú i gcrích agus anois ritheann ardán Tinder go heisiach ar Kubernetes.

Tógáil íomhánna do Kubernetes

Tá os cionn 30 stór cód foinse againn le haghaidh micreasheirbhísí a ritheann ar bhraisle Kubernetes. Tá an cód sna stórtha seo scríofa i dteangacha éagsúla (mar shampla, Node.js, Java, Scala, Go) le timpeallachtaí am rite iolracha don teanga chéanna.

Tá an córas tógála deartha chun “comhthéacs tógála” iomlán inoiriúnaithe a sholáthar do gach micriseirbhís. De ghnáth bíonn sé comhdhéanta de Dockerfile agus liosta orduithe sliogán. Is féidir a n-ábhar a shaincheapadh go hiomlán, agus ag an am céanna, scríobhtar na comhthéacsanna tógála seo go léir de réir formáid chaighdeánaithe. Trí chomhthéacsanna tógála a chaighdeánú is féidir córas tógála amháin a láimhseáil chun na micriseirbhísí go léir a láimhseáil.

Aistriú tinder go Kubernetes
Fíor 1-1. Próiseas tógála caighdeánaithe trí choimeádán Tógálaí

Chun comhsheasmhacht uasta a bhaint amach idir amanna rite (timpeallacht ama rite) úsáidtear an próiseas tógála céanna le linn forbartha agus tástála. Bhí dúshlán an-suimiúil le sárú againn: bhí orainn bealach a fhorbairt chun comhsheasmhacht na timpeallachta tógála a chinntiú ar fud an ardáin ar fad. Chun seo a bhaint amach, déantar gach próiseas tionóil taobh istigh de choimeádán speisialta. Tógálaí.

Bhí ard-theicnící Docker ag teastáil dá chur i bhfeidhm coimeádán. Faigheann Tógálaí an t-aitheantas úsáideora áitiúil agus na rúin (amhail eochair SSH, dintiúir AWS, etc.) le hoidhreacht chun rochtain a fháil ar stórtha príobháideacha Tinder. Suiteálann sé eolairí áitiúla ina bhfuil foinsí chun déantáin tógála a stóráil go nádúrtha. Feabhsaíonn an cur chuige seo feidhmíocht toisc go gcuireann sé deireadh leis an ngá atá le déantáin tógála a chóipeáil idir an coimeádán Tógálaí agus an t-óstach. Is féidir déantáin tógála stóráilte a athúsáid gan cumraíocht bhreise.

I gcás roinnt seirbhísí, bhí orainn coimeádán eile a chruthú chun an timpeallacht tiomsaithe a mhapáil go dtí an timpeallacht ama rite (mar shampla, gineann leabharlann bcrypt Node.js déantáin dhénártha a bhaineann go sonrach le hardáin le linn na suiteála). Le linn an phróisis tiomsaithe, féadfaidh na ceanglais a bheith éagsúil idir seirbhísí, agus cuirtear an Dockerfile deiridh le chéile ar an eitilt.

ailtireacht braisle Kubernetes agus imirce

Bainistíocht méid braisle

Shocraigh muid úsáid a bhaint as cube-aws le haghaidh imscaradh braisle uathoibrithe ar chásanna Amazon EC2. Ag an tús, d'oibrigh gach rud i linn coiteann amháin de nóid. Thuigeamar go tapa go raibh gá le hualaí oibre a dheighilt de réir méid agus cineál samplaí chun úsáid níos éifeachtaí a bhaint as acmhainní. Ba é an loighic a bhí ann ná go raibh sé níos intuartha i dtéarmaí feidhmíochta a bheith ag rith roinnt pods il-snáithithe luchtaithe ná a gcómhaireachtáil le líon mór pods aon-snáithithe.

Sa deireadh shocraíomar ar:

  • m5.4xlarge — chun faireachán a dhéanamh (Prometheus);
  • c5.4x mór - le haghaidh ualach oibre Node.js (ualach oibre aon-snáithe);
  • c5.2x mór - le haghaidh Java agus Go (ualach oibre illéithe);
  • c5.4x mór — don phainéal rialaithe (3 nód).

Imirce

Ar cheann de na céimeanna ullmhúcháin chun aistriú ón sean-bhonneagar go Kubernetes bhí an chumarsáid dhíreach atá ann cheana féin idir seirbhísí a atreorú chuig na comhardaitheoirí ualaigh nua (Cothromaitheoirí Ualaigh Leaisteacha (ELB). Cruthaíodh iad ar subnet ar leith de scamall príobháideach fíorúil (VPC). Bhí an folíon seo ceangailte le Kubernetes VPC. Thug sé seo deis dúinn modúil a aistriú de réir a chéile, gan aird a thabhairt ar ord sonrach na spleáchais seirbhíse.

Cruthaíodh na críochphointí seo trí úsáid a bhaint as tacair ualaithe de thaifid DNS a raibh CNAMEanna ag tagairt do gach BOL nua. Chun aistriú anonn, chuireamar iontráil nua leis ag cur in iúl don ELB nua de sheirbhís Kubernetes le meáchan 0. Ansin shocraigh muid Time To Live (TTL) den iontráil a leagtar go 0. Ina dhiaidh seo, bhí na meáchain sean agus nua choigeartaithe go mall, agus sa deireadh cuireadh 100% den ualach chuig freastalaí nua. Tar éis an t-athrú a chur i gcrích, tháinig an luach TTL ar ais go leibhéal níos imleor.

D'fhéadfadh na modúil Java a bhí againn dul i ngleic le TTL DNS íseal, ach níorbh fhéidir leis na hiarratais Nód. D'athscríobh duine de na hinnealtóirí cuid den chód comhthiomsaithe naisc agus fillte sé i mbainisteoir a thug na linnte cothrom le dáta gach 60 soicind. D’oibrigh an cur chuige roghnaithe go han-mhaith agus gan aon díghrádú suntasach ar fheidhmíocht.

Ceachtanna

Teorainneacha na Fabraic Líonra

Go luath ar maidin an 8 Eanáir, 2019, bhuail ardán Tinder gan choinne. Mar fhreagra ar mhéadú neamhghaolmhar i latency ardán níos luaithe an mhaidin sin, tháinig méadú ar líon na pods agus nóid sa bhraisle. Mar thoradh air seo bhí an taisce ARP ídithe ar ár nóid go léir.

Tá trí rogha Linux ann a bhaineann leis an taisce ARP:

Aistriú tinder go Kubernetes
(fhoinse)

gc_tresh3 - is teorainn chrua é seo. Mar gheall ar chuma na n-iontrálacha “overflow tábla comharsan” sa loga, fiú tar éis bailiú truflais sioncronach (GC), ní raibh go leor spáis sa taisce ARP chun an iontráil chomharsanacht a stóráil. Sa chás seo, chaith an eithne an paicéad go hiomlán.

Úsáidimid Flannel mar fabraic líonra i Kubernetes. Tarchuirtear paicéid thar VXLAN. Is tollán L2 é VXLAN a ardaíodh ar bharr líonra L3. Úsáideann an teicneolaíocht imchochlú MAC-in-UDP (MAC Address-in-User Datagram Protocol) agus ceadaíonn sé deighleoga líonra Sraith 2 a leathnú. Is é IP móide UDP an prótacal iompair ar líonra na n-ionad sonraí fisiceacha.

Aistriú tinder go Kubernetes
Fíor 2–1. Léaráid flannel (fhoinse)

Aistriú tinder go Kubernetes
Fíor 2-2. pacáiste VXLAN (fhoinse)

Leithdháileann gach nód oibrí Kubernetes spás seoladh fíorúil le masc /24 ó bhloc /9 níos mó. I gcás gach nód tá sé seo ciallaíonn iontráil amháin sa tábla ródaithe, iontráil amháin sa tábla ARP (ar an gcomhéadan flannel.1), agus iontráil amháin sa tábla lasctha (FDB). Cuirtear leo an chéad uair a thosaítear nód oibrithe nó gach uair a aimsítear nód nua.

Ina theannta sin, téann cumarsáid nód-pod (nó pod-pod) tríd an gcomhéadan ar deireadh thiar eth0 (mar a thaispeántar sa léaráid Flannel thuas). Is é an toradh a bhíonn air seo ná iontráil bhreise sa tábla ARP do gach foinse chomhfhreagrach agus óstach ceann scríbe.

Inár dtimpeallacht, tá an cineál cumarsáide seo an-choitianta. Maidir le réada seirbhíse i Kubernetes, cruthaítear ELB agus cláraíonn Kubernetes gach nód leis an BOL. Níl aon rud ar eolas ag an BOL faoi phodóga agus seans nach é an nód roghnaithe ceann scríbe deiridh an phaicéid. Is é an pointe atá ann, nuair a fhaigheann nód paicéad ón BOL, go measann sé go ndéanann sé na rialacha a chur san áireamh iptables le haghaidh seirbhíse ar leith agus roghnaíonn sé go randamach pod ar nód eile.

Ag am na teipe, bhí 605 nóid sa bhraisle. Ar na cúiseanna atá luaite thuas, ba leor é seo chun an tábhacht a shárú gc_tresh3, a bhfuil an réamhshocraithe. Nuair a tharlaíonn sé seo, ní hamháin go dtosaíonn paicéid á scaoileadh, ach imíonn an spás seoladh fíorúil Flannel iomlán le masc /24 ón tábla ARP. Cuirtear isteach ar chumarsáid nód-pod agus ar cheisteanna DNS (tá DNS á óstáil i mbraisle; léigh níos déanaí san alt seo le haghaidh sonraí).

Chun an fhadhb seo a réiteach, ní mór duit na luachanna a mhéadú gc_tresh1, gc_tresh2 и gc_tresh3 agus Flannel a atosú chun na líonraí atá in easnamh a athchlárú.

scálú DNS gan choinne

Le linn an phróisis imirce, bhaineamar úsáid ghníomhach as DNS chun trácht a bhainistiú agus seirbhísí a aistriú de réir a chéile ón sean-bhonneagar go Kubernetes. Shocraigh muid luachanna TTL réasúnta íseal le haghaidh RecordSets gaolmhara i Route53. Nuair a bhí an sean-bhonneagar ag rith ar chásanna EC2, dhírigh ár gcumraíocht réitigh ar Amazon DNS. Ghlacamar leis seo agus níor tugadh mórán suntais don tionchar a bhí ag an TTL íseal ar ár seirbhísí agus ar sheirbhísí Amazon (cosúil le DynamoDB).

Agus muid ag aistriú seirbhísí go Kubernetes, fuaireamar amach go raibh DNS ag próiseáil 250 míle iarratas in aghaidh an tsoicind. Mar thoradh air sin, thosaigh feidhmchláir ag dul i dtaithí ar amanna seasta agus dáiríre le haghaidh fiosrúcháin DNS. Tharla sé seo in ainneoin iarrachtaí dochreidte an soláthraí DNS a bharrfheabhsú agus a aistriú go CoreDNS (a shroich ag buaicualach 1000 pod ag rith ar 120 croí).

Agus taighde á dhéanamh againn ar chúiseanna agus ar réitigh fhéideartha eile, fuaireamar amach Airteagal, ag cur síos ar choinníollacha cine a dhéanann difear don chreat scagtha paicéad glanscagaire i Linux. Na tréimhsí ama a breathnaíodh againn, mar aon le cuntar méadaitheach cuir isteach_theip sa chomhéadan Flannel ag teacht le torthaí an ailt.

Tarlaíonn an fhadhb ag céim an Aistriúcháin Seoladh Líonra Foinse agus Ceann Scríbe (SNAT agus DNAT) agus iontráil ina dhiaidh sin sa tábla contrack. Ceann de na réitigh oibre a pléadh go hinmheánach agus a mhol an pobal ná an DNS a aistriú go dtí an nód oibrithe féin. Sa chás seo:

  • Níl gá le SNAT mar go bhfanann an trácht laistigh den nód. Ní gá é a stiúradh tríd an gcomhéadan eth0.
  • Níl DNAT ag teastáil toisc go bhfuil an IP ceann scríbe áitiúil don nód, agus ní pod roghnaithe go randamach de réir na rialacha iptables.

Shocraigh muid cloí leis an gcur chuige seo. Imscaradh CoreDNS mar DaemonSet in Kubernetes agus chuireamar freastalaí DNS nód áitiúil i bhfeidhm i réiteach.conf gach pod trí bhratach a shocrú --cnuasach-dns orduithe cuaille . D'éirigh leis an réiteach seo a bheith éifeachtach le haghaidh teorainneacha ama DNS.

Mar sin féin, chonaic muid fós caillteanas paicéad agus méadú ar an gcuntar cuir isteach_theip sa chomhéadan Flannel. Leanadh ar aghaidh leis seo tar éis don réiteach oibre a bheith curtha i bhfeidhm toisc go rabhamar in ann deireadh a chur le SNAT agus/nó DNAT do thrácht DNS amháin. Caomhnaíodh coinníollacha cine do chineálacha eile tráchta. Ar ámharaí an tsaoil, is TCP an chuid is mó dár bpacáistí, agus má tharlaíonn fadhb ní dhéantar iad a athchraoladh. Táimid fós ag iarraidh teacht ar réiteach oiriúnach do gach cineál tráchta.

Ag Úsáid Toscaire le haghaidh Cothromú Ualach Níos Fearr

De réir mar a aistríomar seirbhísí inneall go Kubernetes, thosaigh muid ag fulaingt ó ualach neamhchothrom idir na pods. Fuaireamar amach go raibh HTTP Keepalive ina chúis le naisc ELB a chrochadh ar na chéad phodanna réidh de gach imscaradh a cuireadh i bhfeidhm. Mar sin, chuaigh formhór na tráchta trí chéatadán beag de na pods a bhí ar fáil. Ba é an chéad réiteach a ndearnamar tástáil air ná MaxSurge a shocrú go 100% ar imscaradh nua do na cásanna is measa. Ba neamhshuntasach an éifeacht agus ní raibh aon tuar dóchais inti i dtéarmaí imlonnaithe níos mó.

Réiteach eile a d’úsáideamar ba ea iarratais acmhainní ar sheirbhísí ríthábhachtacha a mhéadú go saorga. Sa chás seo, bheadh ​​níos mó spáis ag na pods a chuirtear in aice láimhe le haistriú i gcomparáid le pods trom eile. Ní oibreodh sé san fhadtréimhse ach an oiread toisc gur cur amú acmhainní a bheadh ​​ann. Ina theannta sin, bhí ár n-iarratais Nód aon-snáithithe agus, dá réir sin, ní fhéadfaidís ach croí amháin a úsáid. Ba é an t-aon réiteach fíor ná cothromaíocht ualaigh níos fearr a úsáid.

Ba mhaith linn le fada a thuiscint go hiomlán Toscaire. Thug an staid reatha deis dúinn é a imscaradh ar bhealach an-teoranta agus torthaí a fháil láithreach. Is seachfhreastalaí ardfheidhmíochta, foinse oscailte, ciseal-XNUMX é Envoy atá deartha le haghaidh feidhmchláir mhóra SOA. Féadann sé ardteicnící cothromaithe ualaigh a chur i bhfeidhm, lena n-áirítear atriail uathoibríocha, scoradáin chiorcaid, agus teorannú ráta domhanda. (Nóta. aistrigh.: Is féidir leat tuilleadh a léamh faoi seo i an t-alt seo faoi ​​Istio, atá bunaithe ar Thoscaire.)

Thángamar ar an gcumraíocht seo a leanas: bíodh taobhcharr Toscaire agat le haghaidh gach pod agus bealach amháin, agus ceangail an braisle leis an gcoimeádán go háitiúil tríd an gcalafort. Chun cascáidiú féideartha a íoslaghdú agus chun ga buailte beag a choinneáil, d'úsáideamar cabhlach de phodaí seachfhreastalaí Toscaire, ceann amháin in aghaidh an Chrios Infhaighteachta (AZ) do gach seirbhís. Bhí siad ag brath ar inneall fionnachtana seirbhíse simplí a scríobh duine dár n-innealtóirí a chuir liosta pods ar ais i ngach AZ le haghaidh seirbhís ar leith.

Bhain na Toscaire tosaigh seirbhíse úsáid as an meicníocht aimsithe seirbhíse seo le braisle agus bealach amháin in aghaidh an tsrutha. Shocraigh muid teorainneacha ama leordhóthanacha, mhéadaigh muid gach socrú scoradáin chiorcaid, agus chuireamar cumraíocht athiarrachta íosta leis chun cabhrú le teipeanna aonair agus chun imscaradh réidh a chinntiú. Chuireamar BOL TCP os comhair gach ceann de na Toscaire tosaigh seirbhíse seo. Fiú dá mbeadh an coimeád beo ónár bpríomhsheachfhreastalaí greamaithe ar roinnt pods Toscaire, bhí siad fós in ann an t-ualach a láimhseáil i bhfad níos fearr agus bhí siad cumraithe chun cothromaíocht a dhéanamh trí least_request sa inneall.

Le himscaradh, d'úsáideamar an duán preStop ar choda feidhmchláir agus ar chodáin taobhcharr. Spreag an duán earráid agus stádas an chríochphointe riaracháin atá suite ar an gcoimeádán taobhcharr á sheiceáil agus chuaigh sé a chodladh ar feadh tamaill chun ligean do naisc ghníomhacha a fhoirceannadh.

Ceann de na cúiseanna a raibh muid in ann bogadh chomh tapa sin ná mar gheall ar an méadracht mhionsonraithe a raibh muid in ann a chomhtháthú go héasca i suiteáil tipiciúil Prometheus. Thug sé seo deis dúinn a fheiceáil go díreach cad a bhí ag tarlú agus muid ag coigeartú paraiméadair chumraíochta agus ag athdháileadh tráchta.

Bhí na torthaí láithreach agus soiléir. Thosaigh muid leis na seirbhísí is neamhchothrom, agus faoi láthair tá sé ag feidhmiú os comhair na 12 sheirbhís is tábhachtaí sa bhraisle. I mbliana táimid ag pleanáil aistriú go dtí mogalra seirbhíse iomlán le fionnachtain seirbhíse níos airde, briseadh ciorcaid, braite asluiteacha, teorannú rátaí agus rianú.

Aistriú tinder go Kubernetes
Fíor 3–1. Cóineasú LAP seirbhís amháin le linn an aistrithe go Toscaire

Aistriú tinder go Kubernetes

Aistriú tinder go Kubernetes

Toradh deiridh

Tríd an taithí seo agus taighde breise, tá foireann láidir bonneagair tógtha againn a bhfuil scileanna láidre acu maidir le braislí móra Kubernetes a dhearadh, a imscaradh agus a oibriú. Tá an t-eolas agus an taithí ag gach innealtóir Tinder anois chun coimeádáin a phacáistiú agus feidhmchláir a imscaradh chuig Kubernetes.

Nuair a tháinig an gá le hacmhainn bhreise ar an sean-bhonneagar, bhí orainn fanacht roinnt nóiméad le haghaidh cásanna EC2 nua a sheoladh. Anois tosaíonn coimeádáin ag rith agus tosaíonn siad ag próiseáil tráchta laistigh de soicind seachas nóiméad. Soláthraíonn sceidealú coimeádán iolrach ar shampla EC2 amháin comhchruinniú cothrománach feabhsaithe. Mar thoradh air sin, tuar againn laghdú suntasach ar chostais EC2019 in 2 i gcomparáid leis an mbliain seo caite.

Thóg an imirce beagnach dhá bhliain, ach chríochnaíomar é i mí an Mhárta 2019. Faoi láthair, ritheann ardán Tinder go heisiach ar bhraisle Kubernetes ina bhfuil 200 seirbhís, 1000 nóid, 15 pods agus 000 coimeádán reatha. Ní hé an bonneagar an t-aon réimse d’fhoirne oibríochtaí a thuilleadh. Roinneann ár n-innealtóirí go léir an fhreagracht seo agus rialaíonn siad an próiseas a bhaineann le tógáil agus le himscaradh a n-iarratas ag baint úsáide as cód amháin.

PS ó aistritheoir

Léigh freisin sraith alt ar ár mblag:

Foinse: will.com

Add a comment