Mai Breaker na Istio: kashe kwantena mara kyau

Hutu sun ƙare kuma mun dawo tare da post ɗinmu na biyu a cikin jerin layin Sabis na Istio.

Mai Breaker na Istio: kashe kwantena mara kyau

Maudu'in yau shine Circuit Breaker, wanda aka fassara zuwa injiniyan lantarki na Rasha yana nufin "mai karya da'ira", a cikin yare na gama gari - "Circuit breaker". A cikin Istio kawai wannan na'ura ba ta cire haɗin guntuwar da'ira ko ɗimbin yawa, amma kwantena mara kyau.

Yadda yakamata wannan yayi aiki da kyau

Lokacin da Kubernetes ke sarrafa microservices, misali a cikin dandali na OpenShift, suna haɓaka sama da ƙasa ta atomatik dangane da kaya. Tun da microservices ke gudana a cikin kwasfa, za a iya samun lokuta da yawa na microservice a cikin akwati a wuri ɗaya, kuma Kubernetes za ta bi da buƙatun da daidaita daidaito tsakanin su. Kuma - daidai - duk wannan ya kamata yayi aiki daidai.

Mun tuna cewa microservices ƙanana ne kuma na al'ada. Ephemeralality, wanda a nan yana nufin sauƙi na bayyanar da bacewa, yawanci ana la'akari da shi. Haihuwa da mutuwar wani misali na microservice a cikin kwafsa abubuwa ne da ake tsammani, OpenShift da Kubernetes suna kula da wannan da kyau, kuma komai yana aiki mai girma - amma kuma a ka'ida.

Yadda yake aiki a zahiri

Yanzu yi tunanin cewa takamaiman misali na microservice, wato, akwati, ya zama mara amfani: ko dai bai amsa ba (kuskure 503), ko, abin da ya fi daɗi, yana amsawa, amma a hankali. A wasu kalmomi, yana zama mai haske ko baya amsa buƙatun, amma ba a cire shi ta atomatik daga tafkin. Me ya kamata a yi a wannan yanayin? Don sake gwadawa? Shin ya kamata in cire shi daga tsarin tuƙi? Kuma menene ma'anar "jinkirin jinkiri" - nawa ne a cikin lambobi, kuma wanene ya ƙayyade su? Wataƙila kawai a ba shi hutu kuma a sake gwadawa daga baya? Idan haka ne, nawa daga baya?

Menene Fitar Pool a Istio

Kuma a nan Istio ya zo don ceto tare da injunan kariyar Circuit Breaker, wanda ke cire kwantena mara kyau na ɗan lokaci daga hanyar tuƙi da daidaita kayan aiki, aiwatar da hanyar Pool Ejection.

Yin amfani da dabarar ganowa, Istio yana gano ɓangarorin lanƙwasa waɗanda ba su da layi kuma ya cire su daga tafkin albarkatun don ƙayyadadden adadin lokaci, wanda ake kira taga barci.

Don nuna yadda wannan ke aiki a Kubernetes akan dandamali na OpenShift, bari mu fara da hoton sikirin na yau da kullun masu aiki na microservices daga misalin a cikin ma'ajin. Demos Mai Haɓakawa Hat Hat. Anan muna da kwasfa biyu, v1 da v2, kowanne yana gudana akwati ɗaya. Lokacin da ba a yi amfani da ƙa'idodin zirga-zirgar Istio ba, Kubernetes ba ta da ma'auni zuwa daidaitaccen zagayawa-robin:

Mai Breaker na Istio: kashe kwantena mara kyau

Ana shirin yin karo

Kafin yin Pool Ejection, kuna buƙatar ƙirƙirar ƙa'idar sarrafa Istio. Bari mu ce muna son rarraba buƙatun tsakanin kwas ɗin a cikin rabo na 50/50. Bugu da ƙari, za mu ƙara adadin kwantena v2 daga ɗaya zuwa biyu, kamar haka:

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

Yanzu mun saita ƙa'idar tuƙi don rarraba zirga-zirga tsakanin kwasfa a cikin rabo na 50/50.

Mai Breaker na Istio: kashe kwantena mara kyau
Ga yadda sakamakon wannan doka ya kasance:

Mai Breaker na Istio: kashe kwantena mara kyau
Kuna iya samun kuskure tare da gaskiyar cewa wannan allon ba 50/50 ba ne, amma 14: 9, amma bayan lokaci yanayin zai inganta.

Yin kuskure

Yanzu bari mu kashe ɗaya daga cikin kwantena v2 guda biyu don mu sami akwati v1 lafiyayye, akwati lafiya v2 guda ɗaya da akwati v2 mara kyau:

Mai Breaker na Istio: kashe kwantena mara kyau

Gyara kuskure

Don haka, muna da akwati mara kyau, kuma lokaci yayi da za a cire Pool. Yin amfani da tsari mai sauƙi, za mu keɓance wannan akwati da ya gaza daga duk wani tsarin zagayawa na tsawon daƙiƙa 15 a cikin bege cewa zai dawo cikin yanayin lafiya (ko dai sake farawa ko dawo da aiki). Wannan shine yadda wannan tsarin yayi kama da sakamakon aikinsa:

Mai Breaker na Istio: kashe kwantena mara kyau
Mai Breaker na Istio: kashe kwantena mara kyau
Kamar yadda kuke gani, an daina amfani da gandun v2 da ya gaza don buƙatun tuƙi saboda an cire shi daga tafkin. Amma bayan dakika 15 zai dawo ta atomatik zuwa tafkin. A zahiri, mun nuna yadda Pool Ejection ke aiki.

Bari mu fara gina gine-gine

Pool Ejection, haɗe tare da ikon sa ido na Istio, yana ba ku damar fara gina tsarin don maye gurbin kwantena mara kyau ta atomatik don rage, idan ba a kawar da su ba, raguwa da gazawa.

NASA tana da babbar murya guda ɗaya - Kasawa Ba Zabi ba ne, wanda marubucin wanda ake ɗauka a matsayin darektan jirgin. Gene Kranz. Ana iya fassara shi zuwa Rashanci a matsayin "Rashin kasawa ba zaɓi ba ne," kuma ma'anar a nan ita ce duk abin da za a iya yin aiki idan kana da isasshen so. Duk da haka, a cikin rayuwa ta ainihi, gazawar ba kawai ta faru ba, ba makawa ne, a ko'ina da komai. Kuma yadda za a magance su a cikin yanayin microservices? A cikin ra'ayinmu, yana da kyau a dogara ba akan son rai ba, amma akan iyawar kwantena. Kubernetes, Red Hat OpenShiftkuma Istio.

Istio, kamar yadda muka rubuta a sama, yana aiwatar da ra'ayi na masu rarraba da'ira, wanda ya tabbatar da kansa sosai a cikin duniyar zahiri. Kuma kamar yadda na'ura mai ba da wutar lantarki ke kashe sashin matsala na da'ira, Istio's software Circuit Breaker yana buɗe haɗin tsakanin rafi na buƙatun da akwati mai matsala lokacin da wani abu ba daidai ba tare da ƙarshen ƙarshen, misali, lokacin da uwar garken ya fadi ko ya fara farawa. Rege gudu.

Bugu da ƙari, a cikin akwati na biyu akwai ƙarin matsalolin kawai, tun da birki na akwati ɗaya ba wai kawai yana haifar da jinkirin jinkiri a cikin ayyukan da ake amfani da shi ba kuma, a sakamakon haka, rage aikin tsarin gaba ɗaya, amma kuma yana haifar da maimaitawa. buƙatun zuwa sabis ɗin da aka riga ya yi jinkirin gudu, wanda ke ƙara tsananta lamarin.

Mai karyawar kewayawa a ka'idar

Circuit Breaker wakili ne wanda ke sarrafa kwararar buƙatun zuwa wurin ƙarshe. Lokacin da wannan batu ya daina aiki ko, dangane da saitunan da aka ƙayyade, ya fara raguwa, wakili ya karya haɗin gwiwa tare da akwati. Daga nan ana tura zirga-zirga zuwa wasu kwantena, kawai saboda daidaita kayan aiki. Haɗin yana buɗe don taga barcin da aka bayar, faɗi mintuna biyu, sannan ana ɗaukar rabin buɗewa. Ƙoƙarin aika buƙatun na gaba yana ƙayyade ƙarin yanayin haɗin. Idan komai yayi daidai tare da sabis ɗin, haɗin yana komawa yanayin aiki kuma yana sake rufewa. Idan har yanzu akwai wani abu da ba daidai ba tare da sabis ɗin, haɗin yana katse kuma an sake kunna taga barci. Anan ga yadda ƙayyadaddun zane na jihar Breaker yayi kama:

Mai Breaker na Istio: kashe kwantena mara kyau
Yana da mahimmanci a lura a nan cewa duk wannan yana faruwa a matakin, don yin magana, tsarin gine-gine. Don haka a wani lokaci dole ne ku koyar da aikace-aikacenku don yin aiki tare da Circuit Breaker, kamar samar da ƙima ta asali don amsa ko, idan zai yiwu, yin watsi da wanzuwar sabis ɗin. Ana amfani da tsari mai girma don wannan, amma ya wuce iyakar wannan labarin.

Mai Satar Zama a aikace

Misali, zamu gudanar da nau'ikan microservice na shawarwarin mu akan OpenShift. Siga 1 zai yi aiki da kyau, amma a cikin v2 za mu gina cikin jinkiri don kwaikwayi raguwa a kan sabar. Don duba sakamakon, yi amfani da kayan aiki kewaye:

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

Mai Breaker na Istio: kashe kwantena mara kyau
Komai yana aiki, amma a wane farashi? A kallo na farko, muna da 100% samuwa, amma duba a hankali - matsakaicin tsawon lokacin ciniki ya kai 12 seconds. Wannan a fili karara ce kuma yana bukatar fadadawa.

Don yin wannan, za mu yi amfani da Istio don kawar da kira zuwa jinkirin kwantena. Wannan shine yadda tsarin daidaitawa yayi kama da amfani da Circuit Breaker:

Mai Breaker na Istio: kashe kwantena mara kyau
Layi na ƙarshe tare da siginar siginar httpMaxRequestsPerConnection cewa haɗin tare da ya kamata a katse yayin ƙoƙarin ƙirƙirar wani haɗin - na biyu - ban da wanda yake akwai. Tunda kwandon mu yana siffanta sabis na jinkirin, irin waɗannan yanayi zasu tashi lokaci-lokaci, sannan Istio zai dawo da kuskuren 503, amma wannan shine abin da kewaye zai nuna:

Mai Breaker na Istio: kashe kwantena mara kyau

Ok, muna da Circuit Breaker, me ke gaba?

Don haka, mun aiwatar da kashewa ta atomatik ba tare da taɓa lambar tushen ayyukan da kansu ba kwata-kwata. Ta yin amfani da Breaker na Circuit da hanyar Pool Ejection da aka bayyana a sama, za mu iya cire kwantenan birki daga tafkin albarkatun har sai sun dawo al'ada, kuma mu duba matsayinsu a ƙayyadadden mitar - a cikin misalinmu, wannan minti biyu ne (madaidaicin barcin Window).

Lura cewa ikon aikace-aikacen don amsa kuskuren 503 ana saita shi a matakin lambar tushe. Akwai dabaru da yawa don yin amfani da Mai Satar Wuta, ya danganta da yanayin.

A rubutu na gaba: Za mu yi magana game da ganowa da saka idanu wanda aka riga an gina shi ko kuma a sauƙaƙe ƙarawa zuwa Istio, da yadda ake shigar da kurakurai da gangan a cikin tsarin.

source: www.habr.com

Add a comment