Te whakawhiti Tinder ki Kubernetes

Tuhipoka. whakamaori.: Ko nga kaimahi o te ratonga Tinder rongonui o te ao i whakapuaki i etahi korero hangarau mo te heke i o raatau hanganga ki Kubernetes. Tata ki te rua tau te roa o te mahi, a, i puta mai te whakarewatanga o tetahi papaa nui-nui i runga i nga K8, kei roto i nga ratonga 200 kei runga i nga ipu 48 mano. He aha nga uauatanga pai i pa ki nga miihini Tinder me nga hua i puta? Panuitia tenei whakamaoritanga.

Te whakawhiti Tinder ki Kubernetes

He aha?

Tata ki te rua tau ki muri, ka whakatau a Tinder ki te neke i tana papaahi ki Kubernetes. Ma nga Kubernetes e tuku te roopu Tinder ki te kawe me te neke ki te mahi mahi me te iti o te whakapau kaha ma te tukunga korekore. (whakaahua korekore). I roto i tenei take, ko te huihuinga o nga tono, to raatau tohatoha, me nga hanganga ake ka tautuhia e te waehere.

I rapu hoki matou i tetahi otinga mo te raru o te tauine me te pumau. I te wa e kino ana te whakatauine, he maha nga meneti ka tatari matou mo nga tauira EC2 hou kia huri. Ko te whakaaro ki te whakarewa i nga ipu me te tiimata ki te mahi waka i roto i nga hēkona hei utu mo nga meneti ka tino ataahua ki a maatau.

Ko te tukanga i puta he uaua. I a matou hekenga i te timatanga o te tau 2019, ka eke te kahui Kubernetes ki te papatipu tino nui, a ka timata matou ki te pa ki nga raru maha na te nui o nga waka, te rahi o te roopu, me te DNS. I runga i te huarahi, he maha nga raru whakamere e pa ana ki te heke i nga ratonga 200 me te pupuri i te kahui Kubernetes kei roto 1000 nga pona, 15000 nga pene me te 48000 nga ipu rere.

Pehea?

Mai i te marama o Hanuere 2018, he maha nga waahanga o te heke. I timata matou ma te whakakii i o maatau ratonga katoa me te tuku ki nga taiao kapua whakamatautau Kubernetes. I timata mai i te marama o Whiringa-a-nuku, i timata matou ki te whakawhiti tikanga katoa i nga ratonga o naianei ki Kubernetes. Hei te Maehe o te tau e whai ake nei, kua oti i a matou te hekenga, a inaianei kei te whakahaere anake te papaaho Tinder ki runga Kubernetes.

Te hanga whakaahua mo Kubernetes

Neke atu i te 30 nga putunga waehere puna mo nga ratonga miihini e rere ana i runga i te kahui Kubernetes. Ko te waehere kei roto i enei putunga ka tuhia ki roto i nga reo rereke (hei tauira, Node.js, Java, Scala, Haere) me nga taiao whakahaere maha mo te reo kotahi.

I hoahoatia te punaha hanga ki te whakarato i te "hanganga horopaki" tino whakarite mo ia ratonga miihini. Ko te tikanga kei roto he Dockerfile me te rarangi o nga whakahau anga. Ko o raatau ihirangi he tino whakarite, i te wa ano, ka tuhia enei horopaki hanga katoa kia rite ki te whakatakotoranga paerewa. Ko te whakarite i nga horopaki hanga ka taea e te punaha hanga kotahi te whakahaere i nga ratonga miihini katoa.

Te whakawhiti Tinder ki Kubernetes
Whakaahua 1-1. Te tukanga hanga paerewa ma te ipu Kaihanga

Hei whakatutuki i te riterite morahi i waenga i nga wa whakahaere (taiao wa whakahaere) he rite tonu te mahi hanga i te wa o te whanaketanga me te whakamatautau. He wero tino whakamere i a matou: me hanga e matou he huarahi hei whakarite i te riterite o te taiao hanga puta noa i te papaaho katoa. Hei whakatutuki i tenei, ka whakahaerehia nga huihuinga huihuinga katoa i roto i tetahi ipu motuhake. Kaihanga.

Ko tana whakatinanatanga ipu e hiahiatia ana nga tikanga Docker matatau. Ka whakawhiwhia e te Kaihanga te ID kaiwhakamahi o te rohe me nga mea ngaro (pērā i te kī SSH, tohu AWS, me etahi atu) e hiahiatia ana kia uru atu ki nga putunga Tinder tūmataiti. Ka whakairihia e ia nga raarangi aa-rohe e mau ana nga puna ki te penapena i nga taonga hanga. Ko tenei huarahi ka pai ake te mahi na te mea ka whakakorehia te hiahia ki te kape i nga taonga hanga i waenga i te ipu Kaihanga me te kaihautu. Ka taea te whakamahi ano i nga taonga hanga rongoa me te kore whirihoranga taapiri.

Mo etahi ratonga, me hanga e matou tetahi atu ipu hei mahere i te taiao whakahiato ki te taiao omaoma (hei tauira, ko te whare pukapuka Node.js bcrypt e whakaputa ana i nga taonga-rua-a-papa-a-rua i te wa o te whakaurunga). I roto i te tukanga whakahiato, ka rereke pea nga whakaritenga i waenga i nga ratonga, ka whakahiatohia te Dockerfile whakamutunga i runga i te rere.

Kubernetes hoahoanga huinga me te hekenga

Te whakahaere i te rahi o te roopu

I whakatau matou ki te whakamahi kube-aws mo te tuku kapoi aunoa i runga i nga tauira Amazon EC2. I te timatanga, i mahi nga mea katoa i roto i te puna noa o nga pona. I mohio wawe matou ki te wehe i nga kawenga mahi ma te rahi me te momo tauira kia pai ake te whakamahi rauemi. Ko te arorau ko te whakahaere i te maha o nga poti miro-maha kua utaina he pai ake te matapae i runga i te mahi i te noho tahi me te maha o nga peera miro kotahi.

I te mutunga ka whakatauhia e matou:

  • m5.4x nui - mo te aroturuki (Prometheus);
  • c5.4x nui - mo te kawenga mahi Node.js (taumaha miro kotahi);
  • c5.2x nui - mo te Java me te Haere (nga mahi miro maha);
  • c5.4x nui — mo te paewhiri mana (3 nodes).

Te heke

Ko tetahi o nga mahi whakarite mo te heke mai i nga hanganga tawhito ki Kubernetes ko te tuku i nga korero tika o naianei i waenga i nga ratonga ki nga taurite kawenga hou (Elastic Load Balancers (ELB). I hangaia i runga i te kupengaroto motuhake o te kapua tūmataiti mariko (VPC). I honoa tenei kupengaroto ki tetahi VPC Kubernetes. Na tenei ka taea e matou te heke haere i nga waahanga, me te kore e whakaaro ki te raupapa motuhake o nga ratonga whakawhirinaki.

I hangaia enei pito mutunga ma te whakamahi i nga huinga taumahatanga o nga rekoata DNS e tohu ana nga CNAME ki ia ELB hou. Hei huri, ka taapirihia he urunga hou e tohu ana ki te ELB hou o te ratonga Kubernetes me te taumaha o te 0. Na ka whakatauhia e matou te Time To Live (TTL) o te whakaurunga kua whakaritea ki te 0. I muri i tenei, ko nga taumaha tawhito me nga taumaha hou. āta whakatikahia, ā, i te mutunga ka tukuna te 100% o te kawenga ki tētahi tūmau hōu. I muri i te otinga o te whakawhiti, ka hoki te uara TTL ki te taumata e tika ana.

Ko nga waahanga Java kei a matou ka taea te whakatutuki i te TTL DNS iti, engari kaore i taea e nga tono Node. Ko tetahi o nga miihini i tuhi ano i tetahi waahanga o te waehere puna hononga ka takai ki tetahi kaiwhakahaere i whakahou i nga puna wai ia 60 hēkona. He pai rawa te mahi o te huarahi i kowhiria me te kore e kitea te paheketanga o te mahi.

Nga akoranga

Nga Tepe o te papanga Whatunga

I te ata ata o Hanuere 8, 2019, ka hinga ohorere te papa Tinder. Hei whakautu ki te pikinga kore e hono ana i te waahi o te papa i mua i tera ata, ka piki te maha o nga pona me nga pona kei roto i te tautau. Na tenei i pau ai te keteroki ARP i runga i o maatau pona katoa.

E toru nga whiringa Linux e pa ana ki te keteroki ARP:

Te whakawhiti Tinder ki Kubernetes
(puna)

gc_thresh3 - he rohe uaua tenei. Ko te ahua o nga urunga "puke tepu noho tata" ki roto i te raarangi, ahakoa i muri i te kohinga para tukutahi (GC), kaore i nui te mokowā i roto i te keteroki ARP hei penapena i te urunga tata. I roto i tenei take, ka whakarerea katoatia e te kernel te kete.

Ka whakamahia e maatau Tuhinga hei papanga whatunga i Kubernetes. Ka tukuna nga paatete ki runga VXLAN. Ko te VXLAN he kauhanga L2 i whakaarahia ki runga ake o te whatunga L3. Ko te hangarau e whakamahi ana i te whakaurunga MAC-in-UDP (MAC Address-in-User Datagram Protocol) me te whakawhänui i nga waahanga whatunga Apa 2. Ko te kawa kawe i runga i te whatunga pokapū raraunga tinana ko te IP me te UDP.

Te whakawhiti Tinder ki Kubernetes
Whakaahua 2–1. Hoahoa harani (puna)

Te whakawhiti Tinder ki Kubernetes
Whakaahua 2-2. Mōkihi VXLAN (puna)

Ka tohaina e ia node kaimahi Kubernetes he mokowā wāhitau mariko me te kanohi kanohi /24 mai i te poraka /9 nui ake. Mo ia node ko tenei te tikanga kotahi te urunga ki te ripanga ararere, kotahi te urunga ki te ripanga ARP (kei te atanga flannel.1), me tetahi urunga ki te ripanga whakawhiti (FDB). Ka taapirihia i te wa tuatahi i timatahia ai tetahi pona kaimahi, ia wa ranei ka kitea he pona hou.

I tua atu, ka puta te whakawhitinga korero node-pod (pod-pod) ki te atanga eth0 (e whakaatu ana i te hoahoa Flannel i runga ake nei). Ka puta he urunga taapiri ki te ripanga ARP mo ia puna me te kaihautu haerenga.

I roto i to tatou taiao, he tino noa tenei momo korero. Mo nga taonga ratonga i Kubernetes, ka hangaia he ELB ka rehitatia e Kubernetes ia node ki te ELB. Karekau te ELB e mohio mo nga poti, a ko te pona kua tohua ko te waahi whakamutunga o te kete. Ko te kaupapa ko te wa ka whiwhi te node i tetahi paatete mai i te ELB, ka whakaaro ia ki te whai whakaaro ki nga ture iptables mo tetahi ratonga motuhake ka kowhiri matapōkeretia he pākākano i runga i tetahi atu node.

I te wa o te rahunga, he 605 nga pona kei roto i te tautau. Mo nga take kua whakahuahia i runga ake nei, i pai tenei ki te whakakore i te hiranga gc_thresh3, koinei te taunoa. Ka pa ana tenei, ehara i te mea ka timata te whakaheke i nga paatete, engari ka ngaro katoa te mokowā wāhitau mariko Flannel me te kanohi kanohi /24 mai i te ripanga ARP. Ko te whakawhitiwhiti node-pod me nga patai DNS ka haukotia (Kei te whakahaerehia te DNS i roto i te roopu; panui i muri mai i tenei tuhinga mo nga taipitopito).

Hei whakaoti i tenei raruraru, me whakanui ake koe i nga uara gc_thresh1, gc_thresh2 и gc_thresh3 ka whakaara ano i a Flannel ki te rehita ano i nga whatunga ngaro.

Tauine DNS ohorere

I te wa o te hekenga, i kaha matou ki te whakamahi i te DNS ki te whakahaere waka me te whakawhiti haere i nga ratonga mai i nga hanganga tawhito ki Kubernetes. I whakatauhia e matou nga uara TTL iti mo nga Tautuhi Tuhituhi e pa ana ki te Ara53. I te wa e rere ana nga hanganga tawhito i runga i nga waahanga EC2, i tohu to maatau whirihoranga whakatau ki a Amazon DNS. I warewarehia e matou tenei, a, ko te paanga o te iti o te TTL i runga i a maatau ratonga me nga ratonga Amazon (penei i a DynamoDB) kaore i kitea.

I te hekenga o nga ratonga ki Kubernetes, i kite matou kei te tukatuka a DNS i te 250 mano tono mo ia hekona. Ko te mutunga mai, i timata nga tono ki te kite i nga wa roa mo nga patai DNS. I puta tenei ahakoa nga mahi nui ki te arotau me te huri i te kaiwhakarato DNS ki CoreDNS (i te nui o te kawenga kua tae ki te 1000 nga pene e rere ana i runga i te 120 cores).

I a matou e rangahau ana i etahi atu take me etahi atu otinga, i kitea e matou he tuhinga, e whakaahua ana i nga ahuatanga o te iwi e pa ana ki te anga tātari paatete netfilter i roto i te Linux. Ko nga taima i kitea e matou, i honoa me te piki haere o te porotiti whakauru_rahua i roto i te atanga Flannel i rite ki nga kitenga o te tuhinga.

Ka puta te raruraru i te waahi o te Whakamaoritanga Wāhitau Whatunga Puna me te Whainga (SNAT me te DNAT) me te urunga o muri ki te ripanga hono. Ko tetahi o nga mahi i korerohia a roto me te whakaaro o te hapori ko te neke i te DNS ki te node kaimahi ake. I tenei take:

  • Kaore e hiahiatia te SNAT na te mea ka noho tonu te waka ki roto i te node. Kaore e hiahiatia kia tukuna ma te atanga eth0.
  • Kaore e hiahiatia ana te DNAT mai i te mea kei te rohe te IP whainga ki te node, a ehara i te peera kua tohua matapōkeretia e ai ki nga ture iptables.

I whakatau matou ki te piri ki tenei huarahi. I tukuna a CoreDNS hei DaemonSet i Kubernetes a ka whakatinanahia e matou he tūmau DNS node rohe ki taumira.conf ia pene ma te whakatakoto haki --cluster-dns ope kubelet . Ko tenei otinga ka whai hua mo nga wa mutunga DNS.

Heoi, i kite tonu matou i te ngaronga o te paakete me te pikinga o te porotiti whakauru_rahua i roto i te atanga Flannel. I haere tonu tenei i muri i te whakatinanatanga o te mahi na te mea i taea e matou te whakakore i te SNAT me/ranei te DNAT mo te hokohoko DNS anake. I tiakina nga tikanga reihi mo etahi atu momo waka. Waimarie, ko te nuinga o a maatau kete he TCP, a ki te puta he raru ka tukuna ano. Kei te ngana tonu matou ki te rapu otinga pai mo nga momo waka katoa.

Te whakamahi i te Envoy mo te Pai ake o te Whakataurite Uta

I te hekenga o nga ratonga tuara ki Kubernetes, i timata matou ki te mamae i te taumahatanga koretake i waenga i nga poro. I kitea e matou na HTTP Keepalive i whakairi nga hononga ELB ki runga i nga putunga kua reri tuatahi o ia tukunga kua hurihia. No reira, ko te nuinga o nga waka i haere i roto i te paheketanga iti o nga poti e waatea ana. Ko te otinga tuatahi i whakamatauria e matou ko te whakatakoto i te MaxSurge ki te 100% mo nga whakaurunga hou mo nga ahuatanga kino rawa atu. Ko te painga i puta mai he iti noa, he kore korero mo nga waahanga nui ake.

Ko tetahi atu otinga i whakamahia e matou ko te whakanui ake i nga tono rauemi mo nga ratonga whakahirahira. I tenei take, ka nui ake te waahi ki te whakanekeneke i nga peera e tata ana ki etahi atu peera taumaha. Kare hoki e mahi mo te wa roa na te mea he moumou rawa nga rawa. I tua atu, ko o maatau tono Node he miro kotahi, na reira, ka taea anake te whakamahi i te matua kotahi. Ko te otinga tino tika ko te whakamahi pai ake i te whakataurite kawenga.

Kua roa matou e hiahia ana ki te tino maioha karere. Ko te ahuatanga o naianei i taea e maatau te tuku i roto i te huarahi tino iti ka whiwhi hua tonu. Ko te Envoy he takawaenga teitei, tuwhera-puna, paparanga-XNUMX i hangaia mo nga tono SOA nui. Ka taea e ia te whakatinana i nga tikanga whakataurite kawenga teitei, tae atu ki nga whakamatautau aunoa, nga wehenga ara iahiko, me te aukati reiti o te ao. (Tuhipoka. whakamaori.: Ka taea e koe te panui atu mo tenei i roto i tenei tuhinga mo Istio, e pa ana ki te Envoy.)

I puta mai ko te whirihoranga e whai ake nei: me whai i tetahi waka taha Envoy mo ia peera me te huarahi kotahi, ka honoa te tautau ki te ipu i te rohe ma te tauranga. Hei whakaiti i te rerenga karekau me te pupuri i te radius paheketanga iti, i whakamahia e matou he waka o Envoy mua-takawaenga pods, kotahi mo ia Rohe Wātea (AZ) mo ia ratonga. I whakawhirinaki ratou ki tetahi miihini rapu ratonga ngawari i tuhia e tetahi o a maatau miihini i whakahoki noa mai i te rarangi o nga poti i ia AZ mo tetahi ratonga.

Ka whakamahia e nga Kaihautu o mua tenei tikanga rapu ratonga me te kahui whakarunga me te huarahi. I whakaritea e matou he wa tika, kua whakanuia nga tautuhinga ara iahiko katoa, me te taapiri i te whirihoranga ngana ano iti hei awhina i nga rahunga kotahi me te whakarite kia maeneene te whakatakotoranga. I whakanohohia e matou he TCP ELB ki mua i ia o enei Karere o mua. Ahakoa i mau tonu te keepalive mai i ta maatau paparanga takawaenga matua ki etahi putunga Envoy, he pai ake te kaha ki te hapai i te uta, ka whirihorahia kia taurite ma te iti_tono i te tuara.

Mo te whakatakotoranga, i whakamahia e matou te matau preStop i runga i nga peera tono me nga peera waka taha. I hapa te matau i te tirotiro i te mana o te pito mutunga o te kaiwhakahaere kei runga i te ipu waka taha ka moe mo te wa poto kia mutu ai nga hononga kaha.

Ko tetahi o nga take i tere tere ai te neke na runga i nga inenga taipitopito i taea e maatau te whakauru ngawari ki roto i te whakaurunga Prometheus. Na tenei ka taea e matou te kite i nga mea e tupu ana i a matou e whakatika ana i nga tawhā whirihoranga me te tohatoha ano i nga waka.

I tino kitea nga hua. I timata matou me nga ratonga kore taurite, a i tenei wa kei te whakahaere i mua o nga ratonga tino nui 12 i roto i te roopu. I tenei tau kei te whakamahere matou ki te whakawhiti ki te kato ratonga katoa me te kitenga ratonga matatau ake, te wehenga ara iahiko, te kitenga o waho, te whakaiti reiti me te whai.

Te whakawhiti Tinder ki Kubernetes
Whakaahua 3–1. Ko te whakakotahitanga CPU o tetahi ratonga i te wa o te whakawhiti ki te Envoy

Te whakawhiti Tinder ki Kubernetes

Te whakawhiti Tinder ki Kubernetes

Hua mutunga

Na tenei wheako me etahi atu rangahau, kua hangaia e matou he roopu hanganga kaha me nga pukenga kaha ki te hoahoa, ki te tuku, ki te whakahaere i nga tautau Kubernetes nui. Katoa nga miihini Tinder kei aianei te mohiotanga me te wheako ki te kohi ipu me te tuku tono ki a Kubernetes.

I te wa i ara ake te hiahia mo te kaha ki runga i nga hanganga tawhito, me tatari matou mo etahi meneti mo te whakarewatanga o nga tauira EC2 hou. Inaianei kua timata nga ipu ki te rere ka timata ki te tukatuka waka i roto i nga hēkona hei utu mo nga meneti. Ko te whakarite i nga ipu maha i runga i te tauira EC2 kotahi ka pai ake te kukū whakapae. Ko te mutunga, ka matapaehia e matou he whakahekenga nui o nga utu EC2019 i te tau 2 ka whakaritea ki tera tau.

Tata ki te rua tau te hekenga, engari i oti i a Maehe 2019. I tenei wa, ko te turanga Tinder kei runga anake i te roopu Kubernetes e 200 nga ratonga, 1000 node, 15 pods me te 000 ipu rere. Ehara i te mea ko te hanganga te rohe anake o nga roopu whakahaere. Ka tohatohahia e a maatau miihini katoa tenei kawenga me te whakahaere i te mahi hanga me te tuku i a raatau tono ma te whakamahi waehere anake.

PS mai i te kaiwhakamaori

Pānuihia hoki he raupapa tuhinga i runga i ta maatau blog:

Source: will.com

Tāpiri i te kōrero