Ipu, ratonga moroiti me nga mata ratonga

I roto i te Ipurangi he paihere Tuhinga о mata ratonga (mesh ratonga), a tenei ano tetahi. Hore! Engari he aha? Na, e hiahia ana ahau ki te whakapuaki i taku whakaaro he pai ake mena ka puta mai nga mahanga ratonga i nga tau 10 ki muri, i mua i te taenga mai o nga papanga ipu penei i a Docker me Kubernetes. Kare au i te kii he pai ake, he kino atu ranei taku tirohanga i etahi atu, engari na te mea he kararehe uaua rawa atu nga mahanga ratonga, he maha nga tirohanga ka pai ake te maarama ki a raatau.

Ka korero ahau mo te papaaho dotCloud, i hangaia ki runga i te kotahi rau nga ratonga miihini me te tautoko i nga mano tini tono whakauru. Ka whakamāramahia e au nga wero i pa ki a matou i te whakawhanaketanga me te whakarewatanga, me te pehea e taea ai (kaore ranei) te awhina a nga ratonga.

Te hitori o dotCloud

Kua tuhia e au mo te hitori o dotCloud me nga whiringa hoahoanga mo tenei turanga, engari kaore au i korero nui mo te paparanga whatunga. Mena kaore koe e hiahia ki te ruku ki te panui tuhinga whakamutunga e pā ana ki a dotCloud, koinei te ngako i roto i te poto: he PaaS platform-as-a-ratonga e taea ai e nga kaihoko te whakahaere i nga tini tono (Java, PHP, Python...), me te tautoko mo te whānuitanga o nga raraunga. ratonga (MongoDB, MySQL, Redis...) me te rerengamahi penei i a Heroku: Ka tukuna e koe to waehere ki te papaaho, ka hangaia he whakaahua ipu me te tuku.

Ka korerotia e ahau ki a koe te huarahi i tukuna ai nga waka ki te papaaho dotCloud. Ehara i te mea he tino hauhautanga (ahakoa he pai te mahi a te punaha mo tona wa!), engari ko te mea nui na te mea ma nga taputapu hou ka taea te whakatinana i tenei hoahoa i roto i te wa poto e te roopu iti mena ka hiahia ratou ki te arai i nga waka i waenga i te paihere. o microservices he paihere tono ranei. Ma tenei ara, ka taea e koe te whakataurite i nga whiringa: ka aha mena ka whakawhanake koe i nga mea katoa ka whakamahia e koe he mata ratonga o naianei. Ko te whiringa paerewa ko te hanga i a koe ake, te hoko ranei.

Te ararere waka mo nga tono e whakahaerehia ana

Ka taea e nga tono i runga i te dotCloud te whakaatu i nga tohu mutunga HTTP me TCP.

Nga pito mutunga HTTP i taapiri hihiri ki te whirihoranga kapoi taurite kawenga Hipache. He rite tenei ki nga mahi a nga rauemi i enei ra Ingoa i Kubernetes me te taurite kawenga penei Traefik.

Ka hono atu nga kaihoko ki nga pito mutunga HTTP ma nga rohe e tika ana, mena ka tohu te ingoa rohe ki nga taurite kawenga a dotCloud. Kaore he mea motuhake.

TCP mutunga e hono ana ki te tau tauranga, ka tukuna ki nga ipu katoa o taua puranga ma nga taurangi taiao.

Ka taea e nga kaihoko te hono atu ki nga tohu mutunga TCP ma te whakamahi i te ingoa kaihautu e tika ana (penei i te gateway-X.dotcloud.com) me te tau tauranga.

Ka whakatauhia e tenei ingoa kaihautu ki te roopu tūmau "nats" (kaore e pa ana ki Ngaaere), ka arai i nga hononga TCP taumai ki te ipu tika (mehemea ranei mo nga ratonga taurite, ki nga ipu tika).

Mena kei te mohio koe ki nga Kubernetes, tera pea ka maumahara koe ki nga Ratonga TaurangiPort.

Karekau he ratonga rite i runga i te papaaho dotCloud RōpūIP: Mo te ngawari, he rite tonu te uru atu o nga ratonga mai i roto me waho o te papa.

He ngawari noa nga mea katoa: ko nga whakatinanatanga tuatahi o nga whatunga ararere HTTP me TCP he torutoru rau noa nga rarangi Python ia ia. Maamaa (e kii ana ahau he maamaa) nga algorithm i parahia i te wa e tipu ana te papaaho me etahi atu whakaritenga ka puta.

Kare i hiahiatia te whakatikatika nui o te waehere o naianei. Ina koa, 12 take taupānga ka taea te whakamahi tika i te wahitau i riro mai i nga taurangi taiao.

He pehea te rereke o tenei mai i te miihini ratonga hou?

He iti kitenga. Karekau he inenga mo te mata ararere TCP. Ina tae mai ki te ararere HTTP, ko nga putanga o muri mai i whakauru mai i nga inenga HTTP taipitopito me nga waehere hapa me nga wa whakautu, engari ko nga ratonga ratonga hou kei te haere ake, me te whakauru ki nga punaha kohinga inenga penei i a Prometheus, hei tauira.

He mea nui te whakakitenga mai i te tirohanga whakahaere (hei awhina i nga raru), engari i te wa e tuku ana i nga ahuatanga hou. He haumaru te tuku puru-matomato и te tukunga kanari.

Te pai o te ararere he iti hoki. I roto i te mata ararere dotCloud, me haere nga waka katoa ki roto i te kahui o nga pona ararere whakatapua. Ko te tikanga ka whiti i nga rohe maha AZ (Rohe Wātea) me te tino piki ake te torohūtanga. Kei te maumahara ahau ki te waehere rapurongoā e mahi ana neke atu i te kotahi rau nga patai SQL mo ia wharangi me te whakatuwhera hononga hou ki te tūmau SQL mo ia patai. I te wa e rere ana i te rohe, ka uta tonu te wharangi, engari i roto i te dotCloud he iti noa nga hēkona ki te uta na te mea he tekau maero te roa o ia hononga TCP (me nga uiui SQL ka whai ake). I tenei keehi, na nga hononga pumau tonu i whakaoti te raru.

He pai ake nga mahanga ratonga o naianei ki te pa ki nga raru penei. Ko te tuatahi, ka tirohia e ratou kua tukuna nga hononga i te puna. He rite tonu te rere arorau: клиент → меш → сервис, engari inaianei ka mahi te mata i te rohe, kaore i runga i nga waahanga mamao, na te hononga клиент → меш he rohe me te tino tere (hekonakikiti kaua ki te mirihakona).

Ka whakatinanahia ano hoki e nga miihini ratonga o naianei nga huringa whakatairite kawenga. Ma te aro turuki i te hauora o nga tuara, ka taea e ratou te tuku atu i nga waka ki nga tuara tere, ka pai ake te mahi katoa.

Haumarutanga pai ake hoki. Ko te dotCloud routing mesh i rere katoa i runga i te EC2 Classic me te kore i whakamuna i nga waka (i runga i te whakaaro mena ka taea e tetahi te tuku hongi ki runga i nga waka whatunga EC2, kua raru koe). Ko nga ratonga o naianei kei te tiaki marama i a maatau waka katoa, hei tauira, me te motuhēhēnga TLS tahi me te whakamunatanga o muri.

Te arataki waka mo nga ratonga papaaho

Kaati, kua korerohia e maatau te hokohoko i waenga i nga tono, engari me pehea te kaupapa dotCloud ake?

Ko te tüäpapa tonu he tata ki te kotahi rau nga ratonga miihini e kawe ana i nga momo mahi. Ko etahi i whakaae ki nga tono a etahi atu, ko etahi he kaimahi i muri mai i hono atu ki etahi atu ratonga engari kaore i whakaae ki nga hononga. Ahakoa he aha, me mohio ia ratonga ki nga pito mutunga o nga wahitau me hono atu.

Ka taea e te maha o nga ratonga taumata teitei te whakamahi i te mata ararere kua whakaahuatia i runga ake nei. Inaa, he maha o nga ratonga miihini dotCloud neke atu i te kotahi rau kua tukuna hei tono auau i runga i te papaaho dotCloud ake. Engari he iti noa nga ratonga taumata-iti (ina koa ko te hunga e whakamahi ana i tenei mahanga ararere) e hiahia ana ki tetahi mea ngawari ake, me te iti ake o te whakawhirinaki (i te mea kaore e taea e raatau te whakawhirinaki ki a raatau ano ki te mahi - te pai o te heihei tawhito me te raru hua manu).

I tukuna enei ratonga taumata-iti, miihana-nui ma te whakahaere i nga ipu ki runga i etahi waahanga matua. I tenei keehi, kaore i whakamahia nga ratonga turanga paerewa: te hono, te kaihoroi me te kaihoroi. Mena kei te pirangi koe ki te whakataurite ki nga papaahi ipu hou, he rite ki te whakahaere i te waka rererangi whakahaere docker run tika ki runga i nga pona, kaua ki te tuku i te mahi ki a Kubernetes. He tino rite ki te ariā kōwae pateko (pods), e whakamahia ana e ia kubeadm ranei bootkube i te wa e whakaara ana i te kapoi mokowhiti.

I kitea enei ratonga i runga i te ahua ngawari me te kino: he konae YAML i whakarārangihia o ratou ingoa me o ratou wahi noho; a me tango e ia kiritaki he kape o tenei konae YAML hei tuku.

I tetahi taha, he tino pono na te mea kaore e hiahiatia te tautoko o tetahi toa o waho / taonga utu pera i te Zookeeper (mahara, etcd, kaore ano a Consul i tera wa). I tetahi atu taha, he uaua ki te neke ratonga. Ia wa ka nekehia, ka whiwhi nga kaihoko katoa i te konae YAML kua whakahoutia (me te whakaara ano). Kaore e tino pai!

I muri mai, ka timata matou ki te whakatinana i tetahi kaupapa hou, i hono ai ia kiritaki ki tetahi tūmau takawaenga rohe. Engari i te wahitau me te tauranga, me mohio noa ki te tau tauranga o te ratonga, me te hono ma localhost. Ma te takawaenga o te rohe e whakahaere tenei hononga ka tuku atu ki te tūmau tūturu. Inaianei, i te wa e nekehia ana te tuara ki tetahi atu miihini, ki te whakatauine ranei, kaua ki te whakahou i nga kaihoko katoa, me whakahou noa e koe enei takawaenga katoa; a kua kore e hiahiatia he whakaara ano.

(I whakamaheretia ano ki te whakauru i nga waka i roto i nga hononga TLS me te whakanoho i tetahi atu tūmau takawaenga ki te taha whiwhi, me te manatoko i nga tiwhikete TLS me te kore e uru mai te ratonga whiwhi, kua whirihorahia ki te whakaae hononga anake localhost. He nui ake mo tenei i muri mai).

He tino rite tenei ki SmartStack mai i Airbnb, engari ko te rereketanga nui ko te SmartStack kua whakatinanahia, kua tohatohahia ki te whakaputanga, i te wa i aukatihia te punaha ararere a-roto o dotCloud i te wa i riro ai a dotCloud hei Docker.

Ko taku ake whakaaro ko SmartStack tetahi o nga mea o mua ki nga punaha penei i a Istio, Linkerd me Consul Connect na te mea he rite tonu te tauira:

  • Whakahaerehia he takawaenga ki ia node.
  • Ka hono nga kaihoko ki te takawaenga.
  • Ka whakahouhia e te waka rererangi te whirihoranga takawaenga ina huri nga tuara.
  • ... Hua!

Te whakatinanatanga o tenei ra o te mata ratonga

Mena ka hiahia tatou ki te whakatinana i tetahi matiti rite i enei ra, ka taea e taatau te whakamahi i nga maapono rite. Hei tauira, whirihorahia he rohe DNS o roto ma te mapi i nga ingoa ratonga ki nga wahitau kei te waahi 127.0.0.0/8. Na ka whakahaere i te HAProxy ki ia node i roto i te tautau, me te whakaae ki nga hononga ki ia wahitau ratonga (i roto i taua kupengaroto 127.0.0.0/8) me te whakatika/whakarite i te kawenga ki nga pito tuara e tika ana. Ka taea te whakahaere i te whirihoranga HAProxy confd, ka taea e koe te penapena i nga korero o muri i roto i te etcd, i te Consul ranei ka pana aunoa i te whirihoranga whakahou ki HAProxy ina hiahiatia.

Koinei te ahua o te mahi a Istio! Engari me etahi rereke:

  • Whakamahinga Takawaenga Karere hei utu mo HAProxy.
  • Ka penapena te whirihoranga tuara ma te Kubernetes API hei utu mo te etcd, Consul ranei.
  • Ka tohatohahia nga ratonga i runga i te kupenga-roto o roto (nga wahitau Kubernetes ClusterIP) kaua ki te 127.0.0.0/8.
  • He waahanga taapiri (Citadel) hei taapiri i te whakamotuhēhēnga TLS i waenga i te kiritaki me nga tūmau.
  • E tautoko ana i nga ahuatanga hou penei i te wehenga ara iahiko, te tohatoha toha, te tuku canary, etc.

Kia ata titiro tatou ki etahi o nga rereketanga.

Takawaenga Karere

Ko te Envoy Proxy i tuhia e Lyft [te kaiwhakataetae a Uber i te maakete taxi - tata. ara]. He rite ki te maha o nga huarahi ki etahi atu takawaenga (hei tauira, HAProxy, Nginx, Traefik...), engari i tuhi a Lyft i a raatau na te mea e hiahia ana ratou ki nga ahuatanga karekau o etahi atu takawaenga, a, he pai ake te hanga i tetahi mea hou kaua ki te whakaroa i te waa.

Ka taea te whakamahi i te karere ki a ia ano. Mena he ratonga motuhake taku e tika ana kia hono atu ki etahi atu ratonga, ka taea e au te whirihora kia hono atu ki te Envoy, katahi ka whirihora me te whakahou ano i te Envoy me te waahi o etahi atu ratonga, me te whiwhi i te maha o nga mahi taapiri, penei i te tirohanga. Engari i te whare pukapuka kiritaki ritenga, ka werohia ranei nga tohu waea ki roto i te waehere, ka tukuna atu e matou he waka ki Envoy, ka kohia e ia nga inenga mo matou.

Engari ka taea e Envoy te mahi ano rererangi raraunga (rererangi raraunga) mo te mata ratonga. Ko te tikanga kua whirihorahia a Envoy mo tenei mata ratonga rererangi whakahaere (rererangi whakahaere).

Te rererangi whakahaere

Mo te rererangi whakahaere, ka whakawhirinaki a Istio ki te Kubernetes API. Kaore tenei i te tino rereke mai i te whakamahi confd, e whakawhirinaki ana ki etcd ranei Consul ki te tiro i te huinga o nga taviri i roto i te toa raraunga. Ka whakamahi a Istio i te API Kubernetes hei tiro i te huinga rauemi Kubernetes.

I waenga i tenei me tera: I kitea e au he painga tenei Whakaahuatanga API Kubernetese penei ana:

Ko te Tūmau API Kubernetes he "tumau wahangu" e tuku ana i te rokiroki, te whakaputanga, te whakamana, te whakahou, me nga tohutoro mo nga rauemi API.

I hoahoatia a Istio kia mahi tahi me Kubernetes; a, ki te hiahia koe ki te whakamahi i waho o Kubernetes, me whakahaere e koe he tauira o te tūmau API Kubernetes (me te ratonga kaiawhina etcd).

Nga wahitau ratonga

Ka whakawhirinaki a Istio ki nga wahitau ClusterIP ka tohaina e Kubernetes, na reira ka whiwhi nga ratonga Istio i tetahi wahitau o roto (kaore i te awhe 127.0.0.0/8).

Ko te hokohoko ki te wahitau ClusterIP mo tetahi ratonga motuhake i roto i te roopu Kubernetes me te kore Istio ka haukotia e te kube-proxy ka tukuna ki te tuara o taua takawaenga. Mena kei te pirangi koe ki nga korero hangarau, ka whakatakotohia e te kube-proxy nga ture iptables (he taurite kawenga IPVS ranei, i runga ano i te ahua o te whirihora) hei tuhi ano i nga wahitau IP whainga o nga hononga e haere ana ki te wahitau ClusterIP.

Ina whakaurua a Istio ki runga i te kahui Kubernetes, karekau he mea e rerekee kia tino whakahoehia mo tetahi kaihoko, ahakoa mokowāingoa katoa, ma te whakauru i tetahi ipu. sidecar ki nga peera ritenga. Ma tenei ipu ka huri i tetahi tauira o te Envoy ka whakatuu he huinga ture iptables hei haukoti i nga waka e haere ana ki etahi atu ratonga me te tuku ano i taua waka ki Envoy.

Ina whakauruhia ki te Kubernetes DNS, ko te tikanga ka taea e taatau waehere te hono ma te ingoa ratonga me nga mea katoa "ka mahi noa." I etahi atu kupu, ka tukuna e taatau waehere nga patai penei http://api/v1/users/4242no reira api whakatau tono mo 10.97.105.48, ka haukotia e nga ture iptables nga hononga mai i te 10.97.105.48 ka tuku atu ki te takawaenga Envoy rohe, a ka tukuna e taua takawaenga rohe te tono ki te API tuuturu. Wha!

He taapiri taapiri

Ka whakarato hoki a Istio i te whakamunatanga mutunga-ki-mutunga me te motuhēhēnga mā te mTLS (mutual TLS). He waahanga e kiia ana whare.

He waahanga ano Kaipara, ka taea e te Envoy te tono Tuhinga o mua tono ki te whakatau motuhake mo taua tono i runga i nga ahuatanga rereke penei i te pane, te uta o muri, aha atu... (kaua e manukanuka: he maha nga huarahi e rere tonu ai te Mixer, ahakoa ka pakaru, ka mahi tonu a Envoy. pai hei takawaenga).

Ae ra, i kii matou i te tirohanga: Ka kohia e Envoy te nui o nga inenga i te wa e tohatoha ana te tirotiro. I roto i te hoahoanga moroiti, mena me uru tetahi tono API ki roto i nga ratonga miihini A, B, C, me D, katahi ka uru mai, ka tohatohahia te rapunga ka taapirihia he tohu motuhake ki te tono me te penapena i tenei tohu tohu na roto i nga tono iti ki enei ratonga miihini katoa, ka taea nga waea katoa e pa ana ki te hopu.

Whakawhanakehia, hoko mai ranei

He rongonui a Istio mo te uaua. Engari, ko te hanga i te mata ararere i whakaahuahia e au i te timatanga o tenei pou he ngawari noa ma te whakamahi i nga taputapu o naianei. Na, he mea tika ki te hanga i a koe ake mata ratonga?

Mena he iti noa o tatou hiahia (kaore tatou e hiahia kia kitea, he ara iahiko me etahi atu hianga), katahi ka puta nga whakaaro ki te whakawhanake i a tatou ake taputapu. Engari ki te whakamahi tatou i nga Kubernetes, kare pea e hiahiatia na te mea kei te whakarato a Kubernetes i nga taputapu taketake mo te rapu ratonga me te whakataurite kawenga.

Engari ki te mea kei a maatau nga whakaritenga matatau, katahi ka "hoko" he miihini ratonga te ahua pai ake. (Ehara tenei i te "hoko" i nga wa katoa na te mea he puna tuwhera a Istio, engari me whakangao tonu tatou ki te wa miihini ki te mohio, ki te hora, ki te whakahaere.)

Me whiriwhiri e au a Istio, Linkerd, Consul Connect ranei?

I tenei wa kua korero noa matou mo Istio, engari ehara i te mea ko tenei anake te mata ratonga. He rereke rongonui ko Linkerd, a tera atu ano Consul Connect.

He aha te whiriwhiri?

He pono, kaore au e mohio. I tenei wa kare au e kaha ki te whakautu i tenei patai. He torutoru whakamere Tuhinga me te whakataurite o enei taputapu me te ara tohu tohu.

Ko tetahi huarahi whai hua ko te whakamahi i tetahi taputapu penei SuperGloo. Ka whakatinanahia he paparanga tangohanga hei whakangwari me te whakakotahi i nga API e kitea ana e nga mahanga ratonga. Engari ki te ako i nga API motuhake (a, ki taku whakaaro, he ahua uaua) nga momo momo kaawana ratonga, ka taea e tatou te whakamahi i nga hanga maamaa a SuperGloo - ka ngawari te whakawhiti mai i tetahi ki tetahi, me te mea he whakatakotoranga whirihoranga takawaenga e whakaatu ana i nga hononga HTTP me nga tuara ka taea. o te whakaputa i te whirihoranga tuturu mo Nginx, HAProxy, Traefik, Apache...

He iti nei taku mahi ki a Istio me SuperGloo, a i roto i te tuhinga e whai ake nei e hiahia ana ahau ki te whakaatu me pehea te taapiri i a Istio, Linkerd ranei ki tetahi kahui o mua ma te whakamahi i te SuperGloo, me pehea te mahi a muri ake nei, ara, ka taea e koe te huri mai i tetahi mata ratonga ki tetahi atu me te kore e tuhirua i nga whirihoranga.

Source: will.com

Tāpiri i te kōrero