Plane data mesh service vs. plane control

Aloha, Habr! Ke hāʻawi aku nei au iā ʻoe i kahi unuhi o ka ʻatikala "Ka mokulele ʻikepili mesh lawelawe vs ka mokulele hoʻomalu" ka mea kākau ʻO Matt Klein.

Plane data mesh service vs. plane control

I kēia manawa, "makemake wau a unuhi" i ka wehewehe ʻana o nā ʻāpana mesh lawelawe ʻelua, ka mokulele data a me ka mokulele hoʻokele. ʻO kēia wehewehe ʻana iaʻu ka mea maʻalahi a hoihoi, a ʻo ka mea nui e alakaʻi i ka hoʻomaopopo ʻana i ka "Pono anei?"

Ke ulu nui nei ka manaʻo o kahi "Service mesh" i nā makahiki ʻelua i hala iho nei (Original article ʻOkakopa 10, 2017) a me ka nui o ka poʻe i komo i ka lewa, ua ʻike au i ka piʻi ʻana o ka huikau ma waena o nā mea āpau. kaiaulu ʻenehana e pili ana i ka hoʻohālikelike ʻana a me ka hoʻohālikelike ʻana i nā haʻina like ʻole.

ʻOi aku ka maikaʻi o ka hōʻuluʻulu ʻana o ke kūlana e nā ʻano tweets aʻu i kākau ai ma Iulai:

Huikau mesh lawelawe #1: Linkerd ~ = Nginx ~ = Haproxy ~ = ʻElele. ʻAʻohe o lākou i like me Istio. ʻO Istio kekahi mea ʻokoʻa loa. 1 /

ʻO ka mea mua he mau mokulele data wale nō. ʻAʻole lākou e hana i kekahi mea. Pono lākou i ka manaʻo no kahi mea hou aʻe. 2/

ʻO Istio kahi laʻana o kahi mokulele hoʻokele e hoʻopili i nā ʻāpana. He papa ʻē aʻe kēia. /hopena

Hōʻike nā tweets mua i nā papahana like ʻole (Linkerd, NGINX, HAProxy, Envoy, a me Istio), akā ʻoi aku ka mea nui e hoʻolauna i nā manaʻo nui o ka mokulele data, mesh service, a me ka mokulele hoʻokele. Ma kēia pou, e hoʻi au i hope a kamaʻilio e pili ana i kaʻu manaʻo i nā huaʻōlelo "plane data" a me "plane control" ma kahi kiʻekiʻe loa, a laila e kamaʻilio e pili ana i ke ʻano o nā huaʻōlelo i nā papahana i ʻōlelo ʻia ma nā tweets.

He aha ka mesh lawelawe, ʻoiaʻiʻo?

Plane data mesh service vs. plane control
Kiʻi 1: Ka nānā ʻana mesh lawelawe

1 Kānāwai hōʻike i ka manaʻo o ka mesh lawelawe ma kona pae kumu. ʻEhā mau pūʻulu lawelawe (AD). Hoʻopili ʻia kēlā me kēia lawelawe lawelawe me kahi kikowaena proxy kūloko. ʻO nā kaʻa pūnaewele āpau (HTTP, REST, gRPC, Redis, a me nā mea ʻē aʻe) mai kahi laʻana noi hoʻokahi e hele ʻia ma o kahi koho kūloko i nā hui lawelawe waho kūpono. ʻO kēia ala, ʻaʻole ʻike ka mea noi i ka pūnaewele holoʻokoʻa a ʻike wale i kāna proxy kūloko. ʻO ka hopena, ua hoʻoneʻe ʻia ka pūnaewele ʻōnaehana puʻupuʻu mai ka lawelawe.

mokulele ʻikepili

I loko o kahi mesh lawelawe, kahi kikowaena proxy i loaʻa i ka wahi no ka noi e hana i kēia mau hana:

  • ʻIke lawelawe. He aha nā lawelawe / noi i loaʻa no kāu noi?
  • Nānā olakino. Ua hoʻihoʻi ʻia nā manawa lawelawe e ka ʻike lawelawe i ke olakino a mākaukau e ʻae i ka hele ʻana o ka pūnaewele? Hiki i kēia ke hoʻokomo i nā mea hoʻoikaika (e laʻa me ka pane / healthcheck) a me ka passive (e laʻa me ka hoʻohana ʻana i 3 mau hewa 5xx i ʻōlelo ʻia ma ke ʻano he hōʻailona o kahi kūlana lawelawe maikaʻi ʻole).
  • Ke alahele. I ka loaʻa ʻana o kahi noi iā "/foo" mai kahi lawelawe REST, ʻo wai ka pūʻulu lawelawe e hoʻouna ʻia ai ka noi?
  • Kaulike hoʻouka. I ka manawa i koho ʻia ai kahi pūʻulu lawelawe i ka wā e hoʻokele ai, i hea kahi lawelawe e hoʻouna ʻia ai ke noi? Me ka manawa hea? Me nā hoʻonohonoho hoʻonohonoho kaapuni? Inā hāʻule ka noi, pono e hoʻāʻo hou?
  • ʻO ka hōʻoia a me ka mana. No nā noi e hiki mai ana, hiki i ka lawelawe kelepona ke ʻike ʻia a ʻae ʻia me ka mTLS a i ʻole kekahi ʻano hana ʻē aʻe? Inā ʻike ʻia / ʻae ʻia, ʻae ʻia e kāhea i ka hana i noi ʻia (endpoint) ma ka lawelawe a i ʻole e hoʻihoʻi ʻia kahi pane ʻole?
  • ʻIke ʻia. Pono e hana ʻia nā ʻikepili kikoʻī, nā logs/logs, a me nā ʻikepili i hāʻawi ʻia no kēlā me kēia noi i hiki i nā mea hoʻohana ke hoʻomaopopo i ka kahe ʻana o nā kaʻa a me nā pilikia debug ke kū mai.

ʻO ka mokulele ʻikepili ke kuleana no nā helu mua a pau i ka mesh lawelawe. ʻO ka ʻoiaʻiʻo, ʻo ka proxy kūloko i ka lawelawe (sidecar) ʻo ia ka mokulele data. I nā huaʻōlelo ʻē aʻe, aia ke kuleana o ka mokulele data no ka hoʻolaha ʻana, ka hoʻouna ʻana, a me ka nānā ʻana i kēlā me kēia ʻeke pūnaewele i hoʻouna ʻia i kahi lawelawe.

ʻO ka mokulele hoʻomalu

ʻO ka abstraction pūnaewele i hāʻawi ʻia e kahi koho kūloko i ka mokulele data he mea kupanaha (?). Eia naʻe, pehea e ʻike maoli ai ka mea koho e pili ana i ke ala "/foo" i ka lawelawe B? Pehea e hoʻohana ʻia ai ka ʻikepili ʻike lawelawe i hoʻopiha ʻia e nā noi proxy? Pehea e hoʻonohonoho ʻia ai nā ʻāpana no ka hoʻopaʻa ʻana i ka ukana, ka manawa pau, ka haki kaapuni, a pēlā aku? Pehea ʻoe e kau ai i kahi noi me ka hoʻohana ʻana i ke ala uliuli/'ōmaʻomaʻo a i ʻole ke ʻano hoʻololi hoʻololi maikaʻi? ʻO wai ka mea nāna e hoʻonohonoho i ka hōʻoia ʻana o ka ʻōnaehana ākea a me nā hoʻonohonoho mana?

Aia nā mea a pau i luna ma lalo o ka mana o ka mokulele mana o ka mesh lawelawe. Lawe ka mokulele hoʻomalu i kahi pūʻulu o nā proxies mokuʻāina kaʻawale a hoʻololi iā lākou i ʻōnaehana puʻupuʻu.

Manaʻo wau ʻo ke kumu e ʻike ai ka poʻe ʻenehana i nā manaʻo ʻokoʻa o ka mokulele data a me ka hoʻokele mokulele e huikau no ka mea no ka hapa nui o ka poʻe maʻa ka mokulele ʻikepili ʻoiai ʻo ka mokulele hoʻokele he haole / maopopo ʻole. Ua hana mākou me nā mea hoʻokele pūnaewele kino a me nā hoʻololi no ka manawa lōʻihi. Hoʻomaopopo mākou pono e hele nā ​​ʻeke/noi mai kahi A a i kahi B a hiki iā mākou ke hoʻohana i ka lako a me nā lako polokalamu e hana i kēia. ʻO ka hanauna hou o nā polokalamu proxies he mau mana nani wale nō o nā mea hana a mākou i hoʻohana ai no ka manawa lōʻihi.

Plane data mesh service vs. plane control
Kiʻi 2: Ka mokulele hoʻomalu kanaka

Eia nō naʻe, ua hoʻohana mākou i nā mokulele hoʻokele no ka manawa lōʻihi, ʻoiai ʻaʻole hiki i ka hapa nui o nā mea hoʻohana pūnaewele ke hoʻopili i kēia ʻāpana o ka ʻōnaehana me kekahi mea ʻenehana. He maʻalahi ke kumu:
ʻO ka hapa nui o nā mokulele hoʻokele i hoʻohana ʻia i kēia lā ʻo ... mākou.

maluna o Ke kiʻi 2 hōʻike i ka mea aʻu i kapa ai ʻo "Human control plane." Ma kēia ʻano hoʻolālā, he mea maʻamau loa ia, hana ka mea hoʻohana kanaka huhū i nā hoʻonohonoho static - hiki paha ma o nā palapala - a kau iā lākou ma o kekahi kaʻina hana kūikawā i nā proxies āpau. A laila hoʻomaka nā proxies e hoʻohana i kēia hoʻonohonoho a hoʻomaka i ka hana ʻana i ka mokulele data me ka hoʻohana ʻana i nā hoʻonohonoho hou.

Plane data mesh service vs. plane control
Kiʻi 3: ʻO ka mokulele hoʻokele mesh lawelawe holomua

maluna o Ke kiʻi 3 hōʻike i ka "hoʻonui" mana mokulele o ka mesh lawelawe. Aia i loko o kēia mau ʻāpana:

  • ʻO ke kanaka: Aia kekahi kanaka (manaʻolana ʻaʻohe huhū) nāna e hoʻoholo i ka pae kiʻekiʻe e pili ana i ka ʻōnaehana holoʻokoʻa holoʻokoʻa.
  • UI mokulele hoʻomalu: Hoʻopili kekahi kanaka me kekahi ʻano mea hoʻohana e hoʻomalu i ka ʻōnaehana. He puka pūnaewele paha kēia, he noi laina kauoha (CLI), a i ʻole kekahi mea ʻokoʻa. Ke hoʻohana nei i ka mea hoʻohana, hiki i ka mea hoʻohana ke komo i nā ʻāpana hoʻonohonoho hoʻonohonoho honua e like me:
    • Ka mana hoʻolālā, ʻulaʻula/'ōmaʻomaʻo a/a i ʻole ka hoʻololi ʻana i nā kaʻa kaʻa
    • Nā koho hōʻoia a me ka mana
    • Nā kikoʻī o ka papa ʻaina, no ka laʻana inā noi ʻo A application i ka ʻike e pili ana i "/foo" i ka mea e hiki mai ana
    • E hoʻouka i nā hoʻonohonoho kaulike, e like me ka manawa pau, ka hoʻāʻo hou, ka hoʻonohonoho hoʻokaʻawale kaapuni, etc.
  • Mea hoʻonohonoho hana: Hoʻohana ʻia nā lawelawe ma ka ʻōnaehana ma o kekahi ʻano o ka ʻōnaehana hoʻonohonoho/orchestration, e like me Kubernetes a i ʻole Nomad. Na ka mea hoʻonohonoho ke kuleana no ka hoʻouka ʻana i ka lawelawe me kāna mea koho kūloko.
  • ʻIke lawelawe. Ke hoʻomaka a hoʻopau ka mea hoʻonohonoho i nā manawa lawelawe, hōʻike ia i ke kūlana olakino i ka ʻōnaehana ʻike lawelawe.
  • Nā API hoʻonohonoho hoʻonohonoho proxy kaʻa : Hoʻopau ikaika nā proxies kūloko i ka mokuʻāina mai nā ʻāpana ʻōnaehana like ʻole me ka hoʻohana ʻana i ke kumu hoʻohālike hope loa me ka ʻole o ka mea hana. ʻO ka ʻōnaehana holoʻokoʻa, kahi o nā lawelawe lawelawe e holo nei i kēia manawa a me nā kikowaena proxy kūloko, hoʻohuli hope loa i hoʻokahi kaiaolaola. ʻO ka API mokulele honua holoʻokoʻa o Envoy kekahi laʻana o ka hana ʻana o kēia ma ka hana.

ʻO ka mea nui, ʻo ke kumu o ka mokulele hoʻokele e hoʻonohonoho i ke kulekele e ʻae ʻia e ka mokulele data. E hoʻoneʻe aku nā mokulele hoʻokele kiʻekiʻe aʻe i nā ʻāpana ʻē aʻe o kekahi mau ʻōnaehana mai ka mea hoʻohana a koi aku i ka hana lima liʻiliʻi, inā pono lākou e hana!...

mokulele ʻikepili a me ka mokulele hoʻomalu. Hōʻuluʻulu manaʻo o ka mokulele ʻikepili vs

  • ʻO ka mokulele ʻikepili mesh lawelawe: Hoʻopilikia i kēlā me kēia ʻeke/noi i loko o ka ʻōnaehana. Ke kuleana no ka loaʻa ʻana o ka noi/lawelawe, ka nānā ʻana i ke olakino, ke ala ʻana, ke kaupaona ʻana, ka hōʻoia ʻana/ka ʻae a me ka nānā ʻana.
  • mokulele hoʻomalu mesh lawelawe: Hāʻawi i nā kulekele a me ka hoʻonohonoho ʻana no nā mokulele ʻikepili holo āpau i loko o ka pūnaewele lawelawe. ʻAʻole hoʻopā i nā pūʻolo / noi ma ka ʻōnaehana. Hoʻololi ka mokulele mana i nā mokulele ʻikepili a pau i ʻōnaehana puʻunaue.

ʻĀina papahana o kēia manawa

Ma ka hoʻomaopopo ʻana i ka wehewehe ʻana ma luna, e nānā kākou i ke kūlana o kēia manawa o ka papahana mesh service.

  • Nā mokulele ʻikepili: Linkerd, NGINX, HAProxy, Envoy, Traefik
  • Nā mokulele hoʻomalu: Istio, Nelson, SmartStack

Ma mua o ka hele ʻana i ka nānā hohonu ʻana o kēlā me kēia o nā haʻina i luna, e kamaʻilio pōkole wau i kekahi o nā manaʻo aʻu e manaʻo nei e hoʻoulu nui ai i ka huikau i kēia manawa.

ʻO Linkerd kekahi o nā kikowaena kikowaena mokulele mokulele mua no ka mesh lawelawe i ka hoʻomaka ʻana o 2016 a ua hana ʻo ia i kahi hana maikaʻi o ka hoʻonui ʻana i ka ʻike a me ka nānā ʻana i ke ʻano hoʻolālā mesh service. Ma kahi o 6 mau mahina ma hope o kēlā, ua hui pū ʻo Envoy iā Linkerd (ʻoiai ʻo ia me Lyft mai ka hopena o 2015). ʻO Linkerd a me Envoy nā papahana ʻelua i ʻōlelo pinepine ʻia i ke kūkākūkā ʻana i nā meshes lawelawe.

Ua hoʻolaha ʻia ʻo Istio ma Mei 2017. Ua like loa nā pahuhopu o ka papahana Istio me ka mokulele hoʻonui i hōʻike ʻia ma Ke kiʻi 3. ʻO Envoy no Istio ka mea koho paʻamau. No laila, ʻo Istio ka mokulele hoʻokele, a ʻo Envoy ka mokulele data. I ka manawa pōkole, ua hoʻoulu ʻo Istio i ka hauʻoli nui, a ua hoʻomaka nā mokulele data ʻē aʻe e hoʻohui i kahi pani no Envoy (ua hōʻike ʻo Linkerd a me NGINX i ka hoʻohui ʻana me Istio). ʻO ka hiki ke hoʻohana ʻia nā mokulele ʻikepili ʻokoʻa i loko o ka mokulele hoʻokele hoʻokahi, ʻo ia hoʻi, ʻaʻole pili pono ka mokulele mana a me ka mokulele ʻikepili. Hiki i kahi API e like me ka Envoy's generic data plane API ke hana i alahaka ma waena o ʻelua ʻāpana o ka ʻōnaehana.

Kōkua ʻo Nelson a me SmartStack e hōʻike hou aku i ka hoʻokaʻawale ʻana o ka mokulele hoʻokele a me ka mokulele data. Hoʻohana ʻo Nelson iā Envoy ma ke ʻano he mea koho a kūkulu i kahi mokulele hoʻokele hilinaʻi no ka mesh lawelawe e pili ana i ka waihona HashiCorp, ʻo ia hoʻi. Nomad, etc. ʻO SmartStack paha ka mua o kahi nalu hou o nā meshes lawelawe. Hoʻokumu ʻo SmartStack i kahi mokulele hoʻokele a puni HAProxy a i ʻole NGINX, e hōʻike ana i ka hiki ke hoʻokaʻawale i ka mokulele hoʻokele mai ka mesh lawelawe mai ka mokulele data.

ʻO ka hoʻolālā Microservice me kahi mesh lawelawe e loaʻa ana ka nui o ka nānā ʻana (pono!), A ʻoi aku ka nui o nā papahana a me nā mea kūʻai aku e hoʻomaka ana e hana i kēia kuhikuhi. I nā makahiki e hiki mai ana e ʻike mākou i nā mea hou i ka mokulele data a me ka mokulele hoʻokele, a me ka hui pū ʻana o nā ʻāpana like ʻole. ʻO ka hope loa, pono e lilo ka hoʻolālā microservice i ʻoi aku ka māmā a me ke kupua (?) no ka mea hoʻohana.
Manaʻo e emi a emi iki ka huhū.

Nā mea lawe nui

  • He ʻelua ʻāpana ʻokoʻa ka mesh lawelawe: ka mokulele data a me ka mokulele hoʻokele. Pono nā ʻāpana ʻelua, a me ka ʻole o lākou ʻaʻole e holo ka ʻōnaehana.
  • Ua kamaʻāina nā kānaka a pau i ka mokulele hoʻokele, a i kēia manawa, ʻo ʻoe paha ka mokulele hoʻokele!
  • Hoʻokūkū nā mokulele ʻikepili āpau me nā hiʻohiʻona, hana, configurability, a me ka hoʻonui.
  • Hoʻokūkū nā mokulele hoʻokele a pau i kekahi i kekahi i nā hiʻohiʻona, configurability, extensibility, a me ka maʻalahi o ka hoʻohana.
  • Hiki i hoʻokahi mokulele hoʻokele ke loaʻa nā abstractions kūpono a me nā API i hiki ke hoʻohana ʻia nā mokulele ʻikepili he nui.

Source: www.habr.com

Pākuʻi i ka manaʻo hoʻopuka