Istio Circuit Breaker: hoʻopau i nā ipu hewa

Ua pau nā lā hoʻomaha a ua hoʻi mākou me kā mākou pou ʻelua ma ka moʻo Istio Service Mesh.

Istio Circuit Breaker: hoʻopau i nā ipu hewa

ʻO ke kumuhana o kēia lā ʻo Circuit Breaker, i unuhi ʻia i loko o ka ʻenekini uila ʻo Rūsia ʻo ia hoʻi "ka hoʻokaʻawale kaʻa", ma ka ʻōlelo maʻamau - "ka hoʻokaʻawale kaʻa". Ma Istio wale nō ʻaʻole hiki i kēia mīkini ke hoʻokaʻawale i kahi kaapuni pōkole a overloaded, akā i nā pahu hewa.

Pehea e hana maikaʻi ai kēia

Ke mālama ʻia nā microservices e nā Kubernetes, no ka laʻana i loko o ka OpenShift platform, hoʻonui lākou i luna a i lalo ma muli o ka ukana. Ma muli o ka holo ʻana o nā microservices i loko o nā pods, hiki i nā manawa he nui o kahi microservice i hoʻopaʻa ʻia ma ka hopena hoʻokahi, a na Kubernetes e hoʻokele i nā noi a hoʻouka i ke kaulike ma waena o lākou. A - kūpono - pono e hana maikaʻi kēia mau mea āpau.

Hoʻomanaʻo mākou he liʻiliʻi a ephemeral nā microservices. ʻO ka Ephemerality, ʻo ia hoʻi ke ʻano o ka maʻalahi o ka ʻike ʻana a me ka nalo ʻana, ua hoʻohaʻahaʻa pinepine ʻia. ʻO ka hānau ʻana a me ka make ʻana o kahi mea ʻē aʻe o kahi microservice i loko o kahi pod he mau mea i manaʻo ʻia, OpenShift a me Kubernetes e mālama pono i kēia, a hana maikaʻi nā mea a pau - akā hou i ke kumumanaʻo.

Pehea ka hana maoli

I kēia manawa, e noʻonoʻo ʻoe ua lilo kahi ʻano kikoʻī o kahi microservice, ʻo ia hoʻi, kahi pahu: ʻaʻole ia e pane (hewa 503), a i ʻole, he aha ka mea maikaʻi ʻole, pane mai, akā lohi. I nā huaʻōlelo ʻē aʻe, lilo ia i glitchy a ʻaʻole i pane i nā noi, akā ʻaʻole ia e wehe koke ʻia mai ka loko. He aha ka mea e hana ai ma keia hihia? E ho'āʻo hou? Pono au e wehe iā ia mai ka papa kuhikuhi ala? A he aha ke ʻano o ka "lohi loa" - ʻehia ka nui o nā helu, a ʻo wai ka mea e hoʻoholo ai? E hoʻomaha wale paha a hoʻāʻo hou ma hope? Inā pēlā, pehea ka nui ma hope?

He aha ka Pool Ejection ma Istio

A eia ʻo Istio e hoʻopakele me kāna mau mīkini pale Circuit Breaker, nāna e hoʻoneʻe i nā pahu hewa mai ke ala ʻana a me ka hoʻouka ʻana i ka wai puna waiwai, e hoʻokō ana i ke kaʻina hana Pool Ejection.

Me ka hoʻohana ʻana i kahi hoʻolālā ʻike ʻoi aku ka maikaʻi, ʻike ʻo Istio i nā pihi curve i waho o ka laina a hoʻoneʻe iā lākou mai ka wai punawai no kahi manawa i ʻōlelo ʻia, i kapa ʻia he puka hiamoe.

No ka hōʻike ʻana i ke ʻano o kēia hana ma Kubernetes ma ka OpenShift platform, e hoʻomaka me kahi kiʻi kiʻi o nā microservice maʻamau mai ka laʻana i ka waihona. Nā Hōʻike Hoʻolālā Red Hat. Loaʻa iā mākou ʻelua pods, v1 a me v2, e holo ana kēlā me kēia pahu hoʻokahi. Ke hoʻohana ʻole ʻia nā lula hoʻokele ʻo Istio, hoʻopau ʻo Kubernetes i ka hoʻokele kaʻa puni-robin kaulike kaulike:

Istio Circuit Breaker: hoʻopau i nā ipu hewa

E hoʻomākaukau ana no kahi hāʻule

Ma mua o ka hana ʻana i ka Pool Ejection, pono ʻoe e hana i kahi lula hoʻokele Istio. E ʻōlelo mākou makemake mākou e puʻunaue i nā noi ma waena o nā pods ma kahi ratio 50/50. Eia hou, e hoʻonui mākou i ka helu o nā pahu v2 mai hoʻokahi a ʻelua, e like me kēia:

oc scale deployment recommendation-v2 --replicas=2 -n tutorial

I kēia manawa, hoʻonoho mākou i kahi lula alahele e puʻunaue ʻia ke kaʻa ma waena o nā pods ma kahi ratio 50/50.

Istio Circuit Breaker: hoʻopau i nā ipu hewa
Penei ke ano o ka hopena o keia rula:

Istio Circuit Breaker: hoʻopau i nā ipu hewa
Hiki iā ʻoe ke ʻimi i ka hewa me ka ʻoiaʻiʻo ʻaʻole ʻo 50/50 kēia pale, akā 14: 9, akā ma hope o ka manawa e hoʻomaikaʻi ke kūlana.

Ke hana nei i ka hewa

ʻĀnō e hoʻopau i kekahi o nā pahu v2 ʻelua i loaʻa iā mākou hoʻokahi pahu v1 olakino, hoʻokahi pahu v2 olakino a hoʻokahi pahu v2 hewa:

Istio Circuit Breaker: hoʻopau i nā ipu hewa

Hoʻoponopono i ka hewa

No laila, loaʻa iā mākou kahi pahu hewa, a ʻo ia ka manawa no ka Pool Ejection. Me ka hoʻohana ʻana i kahi hoʻonohonoho maʻalahi, e kāpae mākou i kēia pahu i hāʻule ʻole mai nā papa kuhikuhi no 15 kekona me ka manaʻolana e hoʻi hou ia i kahi kūlana olakino (e hoʻomaka hou a hoʻihoʻi i ka hana). ʻO kēia ke ʻano o kēia config a me nā hopena o kāna hana:

Istio Circuit Breaker: hoʻopau i nā ipu hewa
Istio Circuit Breaker: hoʻopau i nā ipu hewa
E like me kāu e ʻike ai, ʻaʻole hoʻohana hou ʻia ka pahu v2 i hāʻule no ka hoʻokele ʻana i nā noi no ka mea ua wehe ʻia mai ka loko. Akā, ma hope o 15 kekona, e ho'i 'o ia i ka loko. ʻOiaʻiʻo, ua hōʻike wale mākou i ka hana ʻana o Pool Ejection.

E hoʻomaka kākou i ke kūkulu hale

ʻO ka Pool Ejection, i hui pū ʻia me nā mākaʻikaʻi o Istio, hiki iā ʻoe ke hoʻomaka i ke kūkulu ʻana i kahi hoʻolālā no ka hoʻololi ʻana i nā pahu hewa e hōʻemi, inā ʻaʻole e hoʻopau, downtime a me nā hemahema.

Hoʻokahi ʻōlelo leo nui o NASA - ʻAʻole he koho ʻo Failure, ʻo ia ka mea i manaʻo ʻia ʻo ia ka luna hoʻokele. Gene Kranz. Hiki ke unuhi ʻia i ka ʻōlelo Lūkini e like me "ʻAʻole he koho ka hāʻule ʻole," a ʻo ka manaʻo ma aneʻi e hiki ke hana i nā mea āpau inā lawa kāu makemake. Eia naʻe, i ke ola maoli, ʻaʻole hiki wale nā ​​hemahema, ʻaʻole hiki ke pale ʻia, ma nā wahi āpau a me nā mea āpau. A pehea e hana ai me lākou i ka hihia o microservices? I ko mākou manaʻo, ʻoi aku ka maikaʻi o ka hilinaʻi ʻaʻole i ka makemake, akā i ka hiki o nā ipu, Kubernetes, ʻO Red Hat OpenShifta Istio.

ʻO Istio, e like me kā mākou i kākau ai ma luna, hoʻokō i ka manaʻo o nā mea haʻihaʻi kaapuni, i hōʻoia maikaʻi iā ia iho i ka honua kino. A e like me ka hoʻopau ʻana o ka mea haʻihaʻi uila i kahi ʻāpana pilikia o kahi kaapuni, wehe ka polokalamu ʻo Istio Circuit Breaker i ka pilina ma waena o kahi kahawai o nā noi a me kahi pahu pilikia inā hewa kekahi mea i ka hopena, no ka laʻana, i ka wā i hāʻule ai ke kikowaena a hoʻomaka paha e hoʻolohi.

Eia kekahi, i ka lua o ka hihia he mau pilikia wale nō, no ka mea, ʻaʻole i hoʻokau wale nā ​​pahu o ka pahu hoʻokahi i ka cascade o ka lohi i nā lawelawe e komo ai a, ma muli o ka hopena, e hōʻemi i ka hana o ka ʻōnaehana holoʻokoʻa, akā e hoʻohua hou i ka manawa. noi i kahi lawelawe lohi, e hoʻonui wale i ke kūlana .

Kaapuni kaapuni ma ke kumumanao

ʻO ka Circuit Breaker kahi mea koho e hoʻomalu i ke kahe o nā noi i kahi hopena. Ke pau kēia wahi i ka hana a i ʻole, ma muli o nā hoʻonohonoho i kuhikuhi ʻia, hoʻomaka e lohi, hoʻopau ka proxy i ka pilina me ka ipu. Hoʻihoʻi hou ʻia ke kaʻa i nā ipu ʻē aʻe, ma muli wale o ke kau kaulike ʻana. Wehe ʻia ka pilina no ka puka makani moe, ʻōlelo ʻelua mau minuke, a laila manaʻo ʻia he hapalua hāmama. ʻO ka ho'āʻo e hoʻouna i ka noi aʻe e hoʻoholo i ke kūlana hou o ka pilina. Inā maikaʻi nā mea a pau me ka lawelawe, hoʻi ka pilina i ke kūlana hana a pani hou. Inā loaʻa kekahi hewa i ka lawelawe, ua kāpae ʻia ka pilina a hoʻomaka hou ka puka hiamoe. Eia ke ʻano o ke kiʻi mokuʻāina ʻo Circuit Breaker maʻalahi:

Istio Circuit Breaker: hoʻopau i nā ipu hewa
He mea nui e hoʻomaopopo ma ʻaneʻi e hana ʻia kēia mau mea ma ke kiʻekiʻe o, no laila e ʻōlelo ai, ʻōnaehana ʻōnaehana. No laila, i kekahi manawa, pono ʻoe e aʻo i kāu mau noi e hana pū me Circuit Breaker, e like me ka hāʻawi ʻana i kahi waiwai paʻa i ka pane ʻana a i ʻole, inā hiki, e nānā ʻole i ke ola o ka lawelawe. Hoʻohana ʻia kahi ʻano bulkhead no kēia, akā aia ma waho o ke kiko o kēia ʻatikala.

Kaapuni kaapuni ma ka hana

No ka laʻana, e holo mākou i ʻelua mana o kā mākou microservice manaʻo ma OpenShift. E hana maikaʻi ka version 1, akā ma v2 e kūkulu mākou i kahi lohi e hoʻohālikelike i nā lohi ma ke kikowaena. No ka ʻike ʻana i nā hopena, e hoʻohana i ka mea hana paʻa ka pā:

siege -r 2 -c 20 -v customer-tutorial.$(minishift ip).nip.io

Istio Circuit Breaker: hoʻopau i nā ipu hewa
Me he mea lā ua hana nā mea a pau, akā he aha ke kumu kūʻai? I ka nānā mua ʻana, loaʻa iā mākou ka 100% loaʻa, akā e nānā pono - ʻo ka lōʻihi o ke kālepa ʻana e like me 12 kekona. ʻO kēia ka mea maopopo he bottleneck a pono e hoʻonui ʻia.

No ka hana ʻana i kēia, e hoʻohana mākou iā Istio e hoʻopau i nā kelepona e lohi i nā pahu. ʻO kēia ke ʻano o ka config e like me ka hoʻohana ʻana i ka Circuit Breaker:

Istio Circuit Breaker: hoʻopau i nā ipu hewa
ʻO ka laina hope loa me ka httpMaxRequestsPerConnection parameter hōʻailona e hoʻokaʻawale ʻia ka pilina me ka wā e hoʻāʻo ai e hana i kahi pilina ʻē aʻe - kahi lua - hoʻohui i ka mea i loaʻa. Ma muli o ka hoʻohālikelike ʻana o kā mākou pahu i kahi lawelawe lohi, e kū mai kēlā mau kūlana i kēlā me kēia manawa, a laila e hoʻihoʻi ʻo Istio i kahi hewa 503, akā ʻo kēia ka mea e hōʻike ai:

Istio Circuit Breaker: hoʻopau i nā ipu hewa

ʻAe, loaʻa iā mākou Circuit Breaker, he aha ka mea aʻe?

No laila, ua hoʻokō mākou i ka pani ʻana me ka ʻole o ka hoʻopā ʻana i ke kumu kumu o nā lawelawe iā lākou iho. Ke hoʻohana nei i ka Circuit Breaker a me ke kaʻina hana Pool Ejection i hōʻike ʻia ma luna nei, hiki iā mākou ke wehe i nā pahu pahu mai ka wai punawai a hiki i ka hoʻi ʻana i ka maʻamau, a nānā i ko lākou kūlana ma kahi alapine i kuhikuhi ʻia - i kā mākou laʻana, ʻelua mau minuke kēia (sleepWindow parameter).

E hoʻomaopopo i ka hiki ʻana o kahi noi ke pane i kahi hewa 503 i hoʻonohonoho ʻia ma ka pae kumu kumu. Nui nā hoʻolālā no ka hoʻohana ʻana i ka Circuit Breaker, ma muli o ke kūlana.

Ma ka pou aʻe: E kamaʻilio mākou e pili ana i ka huli ʻana a me ka nānā ʻana i kūkulu ʻia a hoʻohui ʻia paha iā Istio, a me pehea e hoʻokomo ai i nā hewa i loko o ka ʻōnaehana.

Source: www.habr.com

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