Nuair nach e Linux conntrack do charaid tuilleadh

Nuair nach e Linux conntrack do charaid tuilleadh

Tha tracadh ceangail (“conntrack”) na phrìomh fheart de chruach lìonra kernel Linux. Leigidh e leis an kernel sùil a chumail air a h-uile ceangal lìonra loidsigeach no sruthan agus mar sin a’ comharrachadh a h-uile pacaid a tha a’ dèanamh suas gach sruth gus an tèid an giullachd còmhla ann an òrdugh.

Tha Conntrack na fheart kernel cudromach a thathas a’ cleachdadh ann an cuid de chùisean bunaiteach:

  • Tha NAT an urra ri fiosrachadh bho conntrack gus an urrainn dha a h-uile pacaid bhon aon shruth a làimhseachadh gu co-ionann. Mar eisimpleir, nuair a gheibh pod gu seirbheis Kubernetes, bidh an neach-cothromachaidh luchdan kube-proxy a’ cleachdadh NAT gus trafaic a stiùireadh gu pod sònraichte taobh a-staigh a’ bhuidheann. Tha Conntrack a’ clàradh gum feumar a h-uile pacaid chun t-seirbheis IP a chuir chun aon phod airson ceangal sònraichte, agus gum feum na pacaidean a thilleas leis a’ pod backend a bhith air an NAT air ais chun pod às an tàinig an t-iarrtas.
  • Tha ballachan teine ​​​​stàite leithid Calico an urra ri fiosrachadh bho chlàr ceangail gu trafaic “freagairt” geal-liosta. Leigidh seo leat poileasaidh lìonra a sgrìobhadh a tha ag ràdh “leig le mo pod ceangal ri seòladh IP iomallach sam bith” gun a bhith agad ri poileasaidh a sgrìobhadh gus trafaic freagairt a cheadachadh gu soilleir. (Às aonais seo, dh'fheumadh tu an riaghailt "leig pacaidean dhan pod agam bho IP sam bith" a tha mòran nach robh cho tèarainte.)

A bharrachd air an sin, mar as trice bidh conntrack a’ leasachadh coileanadh an t-siostaim (le bhith a’ lughdachadh caitheamh CPU agus latency pacaid) bho dìreach a’ chiad phacaid ann an sruth
feumaidh tu a dhol tron ​​stac lìonra gu lèir gus faighinn a-mach dè a nì thu leis. Faic am post"Coimeas eadar modhan kube-proxy" gus eisimpleir fhaicinn air mar a tha e ag obair.

Ach, tha na crìochan aige aig contrack ...

Mar sin càite an deach e uile ceàrr?

Tha meud as motha aig a’ chlàr conntrack, agus ma dh’fhàsas e làn, mar as trice bidh ceanglaichean a’ tòiseachadh air an diùltadh no air an leigeil sìos. Tha àite gu leòr an-asgaidh anns a’ chlàr gus trafaic a’ mhòr-chuid de thagraidhean a làimhseachadh, agus cha tig seo gu bhith na dhuilgheadas gu bràth. Ach, tha grunn shuidheachaidhean ann far am biodh tu airson beachdachadh air a’ chlàr conntrack a chleachdadh:

  • Is e a’ chùis as fhollaisiche ma làimhsicheas an frithealaiche agad àireamh fìor mhòr de cheanglaichean gnìomhach aig an aon àm. Mar eisimpleir, ma tha an clàr conntrack agad air a rèiteachadh airson inntrigidhean 128k, ach gu bheil ceanglaichean co-aontach> 128k agad, gu cinnteach bidh duilgheadas agad!
  • Cùis nach eil cho follaiseach: ma bhios an frithealaiche agad a’ pròiseasadh àireamh mhòr de cheanglaichean gach diog. Eadhon ged a tha na ceanglaichean geàrr-ùine, bidh Linux fhathast a’ cumail sùil orra airson ùine (120an gu bunaiteach). Mar eisimpleir, ma tha an clàr conntrack agad air a rèiteachadh airson 128k inntrigidhean agus gu bheil thu a’ feuchainn ri 1100 ceangal san diog a làimhseachadh, thèid iad thairis air meud a’ chlàr conntrack, fiù ’s ged a tha na ceanglaichean glè ghoirid (128k/120s = 1092 ceanglaichean/ s).

Tha grunn sheòrsaichean aplacaidean sònraichte ann a tha anns na roinnean sin. A bharrachd air an sin, ma tha tòrr droch chleasaichean agad, dh’ fhaodadh lìonadh clàr-conntrack an fhrithealaiche agad le mòran cheanglaichean leth-fhosgailte a chleachdadh mar phàirt de ionnsaigh diùltadh seirbheis (DOS). Anns gach suidheachadh, faodaidh conntrack a bhith na bhotal cuibhrichte san t-siostam agad. Ann an cuid de shuidheachaidhean, dh’ fhaodadh gum bi atharrachadh crìochan a’ bhùird conntrack gu leòr gus na feumalachdan agad a choileanadh - le bhith ag àrdachadh meud no a’ lughdachadh na h-ùineachan conntrack (ach ma nì thu ceàrr e, bidh tòrr trioblaid agad). Airson cùisean eile bidh e riatanach a dhol seachad air conntrack airson trafaic ionnsaigheach.

Dìreach eisimpleir

Bheir sinn eisimpleir sònraichte: bha grunn luchd-frithealaidh memcached aig aon sholaraiche SaaS mòr leis an robh sinn ag obair air luchd-aoigheachd (chan e innealan brìgheil), agus bha gach fear dhiubh a’ giullachd 50K + ceanglaichean geàrr-ùine gach diog.

Rinn iad deuchainn air an rèiteachadh conntrack, ag àrdachadh meudan bùird agus a’ lughdachadh ùine tracadh, ach cha robh an rèiteachadh earbsach, mheudaich caitheamh RAM gu mòr, rud a bha na dhuilgheadas (air òrdugh GBytes!), Agus bha na ceanglaichean cho goirid is nach do rinn conntrack. cruthaich a bhuannachd coileanaidh àbhaisteach (Lùghdachadh caitheamh CPU no latency pacaid).

Thionndaidh iad gu Calico mar roghainn eile. Leigidh poileasaidhean lìonra Calico leat gun a bhith a’ cleachdadh conntrack airson seòrsachan sònraichte de thrafaig (a’ cleachdadh an roghainn poileasaidh doNotTrack). Thug seo dhaibh an ìre coileanaidh a bha a dhìth orra, a bharrachd air an ìre tèarainteachd a bharrachd a thug Calico seachad.

Dè an fhaid a dh’ fheumas tu a dhol gus seach-rathad conntrack?

  • Bu chòir do phoileasaidhean lìonra nach dèan lorg a bhith co-chothromach sa chumantas. A thaobh an t-solaraiche SaaS: bha na tagraidhean aca a’ ruith taobh a-staigh an raon dìon agus mar sin, a’ cleachdadh poileasaidh lìonraidh, b’ urrainn dhaibh trafaic a ghealltainn bho thagraidhean sònraichte eile aig an robh cead faighinn gu memcached.
  • Chan eil am poileasaidh do-not-track a’ toirt aire do stiùir a’ cheangail. Mar sin, ma tha am frithealaiche memcached air a sheacadh, faodaidh tu gu teòiridheach feuchainn ri ceangal ri gin de na teachdaichean memcached, fhad ‘s a chleachdas e am port stòr ceart. Ach, ma tha thu air poileasaidh lìonra a mhìneachadh gu ceart airson do luchd-dèiligidh memcached, bidh na h-oidhirpean ceangail sin fhathast air an diùltadh air taobh an neach-dèiligidh.
  • Tha am poileasaidh do-not-track air a chuir an sàs anns a h-uile pacaid, an taca ri poileasaidhean àbhaisteach, a tha air an cur an sàs dìreach air a’ chiad phacaid ann an sruth. Faodaidh seo caitheamh CPU gach pacaid àrdachadh oir feumar am poileasaidh a chuir an sàs airson gach pacaid. Ach airson ceanglaichean geàrr-ùine, tha a’ chosgais seo air a chothromachadh leis an lùghdachadh ann an caitheamh ghoireasan airson giollachd conntrack. Mar eisimpleir, a thaobh solaraiche SaaS, bha an àireamh de phasganan airson gach ceangal glè bheag, agus mar sin bha an caitheamh CPU a bharrachd nuair a bhathas a’ cur phoileasaidhean an sàs anns gach pacaid air fhìreanachadh.

Feuch an tòisich sinn air deuchainn

Ruith sinn an deuchainn air aon pod le frithealaiche memcached agus grunn pods teachdaiche memcached a’ ruith air nodan iomallach gus am b’ urrainn dhuinn àireamh mhòr de cheanglaichean a ruith gach diog. Bha 8 cores agus 512k anns a’ chlàr conntrack aig an fhrithealaiche leis a’ pod frithealaiche memcached (am meud clàr àbhaisteach airson an aoigh).
Thomhais sinn an diofar dèanadais eadar: gun phoileasaidh lìonra; le poileasaidh cunbhalach Calico; agus Calico do-not-track poileasaidh.

Airson a’ chiad deuchainn, shuidhich sinn an àireamh de cheanglaichean gu 4.000 gach diog, gus am b’ urrainn dhuinn fòcas a chuir air an eadar-dhealachadh ann an caitheamh CPU. Cha robh eadar-dhealachaidhean mòra sam bith eadar poileasaidh sam bith agus poileasaidh cunbhalach, ach na dèan sùil air àrdachadh caitheamh CPU timcheall air 20%:

Nuair nach e Linux conntrack do charaid tuilleadh

Anns an dàrna deuchainn, chuir sinn air bhog na h-uimhir de cheanglaichean ’s a dh’ fhaodadh ar teachdaichean a ghineadh agus a thomhas an àireamh as motha de cheanglaichean gach diog a b’ urrainn don t-seirbheisiche memcached againn a làimhseachadh. Mar a bhiodh dùil, ràinig na cùisean “gun phoileasaidh” agus “poileasaidh cunbhalach” le chèile a’ chrìoch de chòrr air 4,000 ceangal gach diog (512k / 120s = 4,369 ceanglaichean/ean). Le poileasaidh do-not-track, chuir ar luchd-dèiligidh 60,000 ceangal gach diog gun duilgheadas sam bith. Tha sinn cinnteach gum b’ urrainn dhuinn an àireamh seo àrdachadh le bhith a’ cur barrachd teachdaichean ris, ach tha sinn a’ faireachdainn gu bheil na h-àireamhan sin gu leòr mu thràth airson puing an artaigil seo a nochdadh!

Nuair nach e Linux conntrack do charaid tuilleadh

co-dhùnadh

Tha Conntrack na fheart kernel cudromach. Bidh e a’ dèanamh an obair aige gu foirfe. Tha e gu tric air a chleachdadh le prìomh phàirtean siostam. Ach, ann an cuid de shuidheachaidhean sònraichte, tha an dùmhlachd mar thoradh air conntrack nas àirde na na buannachdan àbhaisteach a bheir e seachad. Anns an t-suidheachadh seo, faodar poileasaidhean lìonra Calico a chleachdadh gus cleachdadh conntrack a dhì-cheadachadh fhad ‘s a tha iad ag àrdachadh tèarainteachd lìonra. Airson a h-uile trafaic eile, tha conntrack fhathast na charaid dhut!

Leugh cuideachd artaigilean eile air ar blog:

Source: www.habr.com

Cuir beachd ann