Hutu sun ƙare kuma mun dawo tare da post ɗinmu na biyu a cikin jerin layin Sabis na Istio.
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.
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.
Ga yadda sakamakon wannan doka ya kasance:
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:
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:
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.
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:
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
siege -r 2 -c 20 -v customer-tutorial.$(minishift ip).nip.io
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:
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:
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