Infrastruktuurivikojen vaikutus Amazon OpenSearch Servicen sirpaleeseen

Infrastruktuurivikojen vaikutus Amazon OpenSearch Servicen sirpaleeseen

Lähdesolmu: 1783553

Amazon OpenSearch-palvelu on hallittu palvelu, jonka avulla on helppo suojata, ottaa käyttöön ja käyttää OpenSearchia ja vanhoja Elasticsearch-klustereita mittakaavassa AWS-pilvessä. Amazon OpenSearch Service tarjoaa kaikki klusterisi resurssit, käynnistää sen ja havaitsee ja korvaa epäonnistuneet solmut automaattisesti, mikä vähentää itsehallittujen infrastruktuurien ylimääräisiä kustannuksia. Palvelu helpottaa interaktiivisen lokianalyysin suorittamista, reaaliaikaista sovellusten seurantaa, verkkosivustohakuja ja paljon muuta tarjoamalla OpenSearchin uusimmat versiot, tuen 19:lle Elasticsearchin versiolle (1.5–7.10 versiot) ja visualisointiominaisuudet. OpenSearch Dashboards ja Kibana (versiot 1.5–7.10).

Viimeisimmässä palveluohjelmistoversiossa olemme päivittäneet sirpaleiden allokointilogiikkaa kuormitustietoiseksi siten, että kun sirpaleet jaetaan uudelleen mahdollisten solmuvikojen sattuessa, palvelu estää selviytyneiden solmujen ylikuormituksen epäonnistuneessa solmussa aiemmin isännöityjen sirpaleiden takia. Tämä on erityisen tärkeää Multi-AZ-verkkotunnuksille johdonmukaisen ja ennustettavan klusterin suorituskyvyn takaamiseksi.

Jos haluat lisätietoja sirpaleiden allokointilogiikasta yleensä, katso Elasticsearch-sirpaleiden allokoinnin selvittäminen.

Haaste

Amazon OpenSearch Service -verkkotunnuksen sanotaan olevan "tasapainoinen", kun solmujen määrä on jakautunut tasaisesti määritettyjen saatavuusvyöhykkeiden kesken ja sirpaleiden kokonaismäärä on jaettu tasaisesti kaikkien käytettävissä olevien solmujen kesken ilman, että minkään indeksin sirpaleet keskittyvät mihinkään. solmu. OpenSearchissa on myös ominaisuus nimeltä "Zone Awareness", joka, kun se on käytössä, varmistaa, että ensisijainen sirpale ja sitä vastaava replika on allokoitu eri saatavuusvyöhykkeille. Jos sinulla on useampi kuin yksi kopio tiedoista, useiden käytettävyysvyöhykkeiden käyttö parantaa vikasietoisuutta ja käytettävyyttä. Jos toimialuetta skaalataan tai skaalataan sisään tai solmujen epäonnistumisen aikana, OpenSearch jakaa automaattisesti sirpaleet uudelleen käytettävissä olevien solmujen välillä noudattaen samalla vyöhyketietoisuuteen perustuvia jakosääntöjä.

Vaikka sirpaleiden tasapainotusprosessi varmistaa, että sirpaleet jakautuvat tasaisesti käytettävyysvyöhykkeille, joissakin tapauksissa, jos yhdellä vyöhykkeellä tapahtuu odottamaton vika, sirpaleet jaetaan uudelleen elossa oleville solmuille. Tämä saattaa johtaa siihen, että säilyneet solmut ylikuormituvat, mikä vaikuttaa klusterin vakauteen.

Jos esimerkiksi yksi solmu kolmen solmun klusterissa laskee, OpenSearch jakaa uudelleen määrittämättömät sirpaleet seuraavan kaavion mukaisesti. Tässä "P" edustaa ensisijaista sirpalekopiota, kun taas "R" edustaa replikan sirpalekopiota.

Tämä toimialueen käyttäytyminen voidaan selittää kahdessa osassa – epäonnistumisen ja palautumisen aikana.

Epäonnistumisen aikana

Toimialue, joka on otettu käyttöön useilla käytettävyysvyöhykkeillä, voi kohdata monenlaisia ​​vikoja elinkaarensa aikana.

Täydellinen vyöhykevika

Klusteri voi menettää yhden käytettävyysvyöhykkeen useista syistä ja myös kaikki kyseisen vyöhykkeen solmut. Nykyään palvelu yrittää sijoittaa kadonneet solmut jäljellä oleville terveille saatavuusvyöhykkeille. Palvelu yrittää myös luoda uudelleen kadonneet sirpaleet jäljellä olevissa solmuissa noudattaen silti allokointisääntöjä. Tämä voi johtaa joihinkin odottamattomiin seurauksiin.

  • Kun vaikutuksen kohteena olevan vyöhykkeen sirpaleet siirretään terveille vyöhykkeille, ne laukaisevat sirpaleiden palautukset, jotka voivat lisätä latenssia, koska se kuluttaa ylimääräisiä suorittimen jaksoja ja verkon kaistanleveyttä.
  • n-AZ, n-kopio-asetuksissa (n>1) jäljellä olevat n-1 käytettävyysvyöhykkeet allokoidaan n:nnelle sirpalekopiolle, mikä voi olla ei-toivottavaa, koska se voi aiheuttaa vinoutta sirpaleiden jakelussa, mikä voi myös johtaa epätasapainoinen liikenne solmujen välillä. Nämä solmut voivat ylikuormittua, mikä johtaa uusiin virheisiin.

Osittainen vyöhykevika

Jos vyöhyke epäonnistuu osittain tai kun toimialue menettää vain osan Saatavuusvyöhykkeen solmuista, Amazon OpenSearch Service yrittää korvata epäonnistuneet solmut mahdollisimman nopeasti. Kuitenkin, jos solmujen vaihtaminen kestää liian kauan, OpenSearch yrittää allokoida kyseisen vyöhykkeen määrittämättömät sirpaleet Saatavuusvyöhykkeen jäljellä oleville solmuille. Jos palvelu ei voi korvata vaikutuksen alaisen Saatavuusvyöhykkeen solmuja, se voi allokoida ne toiselle konfiguroidulle Saatavuusvyöhykkeelle, mikä voi edelleen vääristää sirpaleiden jakautumista sekä vyöhykkeen sisällä että sen sisällä. Tällä on taas ei-toivottuja seurauksia.

  • Jos toimialueen solmuissa ei ole tarpeeksi tallennustilaa lisäsirpaleiden sijoittamiseen, toimialue voidaan estää kirjoittamasta, mikä vaikuttaa indeksointiin.
  • Sirpaleiden vääristyneen jakautumisen vuoksi toimialue voi myös kokea vinoa liikennettä solmujen välillä, mikä voi edelleen lisätä luku- ja kirjoitustoimintojen latenssia tai aikakatkaisuja.

Elpyminen

Nykyään verkkotunnuksen halutun solmumäärän ylläpitämiseksi Amazon OpenSearch Service käynnistää datasolmuja jäljellä olevilla terveillä saatavuusvyöhykkeillä, kuten yllä olevassa vikaosiossa kuvatut skenaariot. AWS tarvitsi manuaalisia toimia varmistaakseen solmujen oikean jakautumisen kaikilla käytettävyysvyöhykkeillä tällaisen tapahtuman jälkeen.

Mikä muuttuu

Parantaakseen yleistä vikojen käsittelyä ja minimoidakseen vian vaikutuksen verkkotunnuksen kuntoon ja suorituskykyyn Amazon OpenSearch Service tekee seuraavat muutokset:

  • Pakkovyöhyketietoisuus: OpenSearchilla on jo olemassa oleva sirpaleiden tasapainotuskokoonpano, jota kutsutaan pakotetuksi tietoisuudeksi, jota käytetään määrittämään käytettävyysvyöhykkeet, joille sirpaleet on kohdistettava. Jos sinulla on esimerkiksi tietoisuusattribuutti nimeltä vyöhyke ja määrität solmut sisään zone1 ja zone2, voit käyttää pakotettua tietoisuutta estämään OpenSearchia varaamasta replikoita, jos käytettävissä on vain yksi vyöhyke:
cluster.routing.allocation.awareness.attributes: zone
cluster.routing.allocation.awareness.force.zone.values: zone1,zone2

Tällä esimerkkikokoonpanolla, jos aloitat kaksi solmua node.attr.zone asetettu zone1 ja luo hakemisto, jossa on viisi sirpaletta ja yksi replika, OpenSearch luo indeksin ja varaa viisi ensisijaista sirpaletta, mutta ei replikoita. Replikat allokoidaan vain kerran, kun solmuja on node.attr.zone asetettu zone2 ovat käytettävissä.

Amazon OpenSearch Service käyttää pakotettua tietoisuuden määritystä Multi-AZ-verkkotunnuksissa varmistaakseen, että sirpaleet jaetaan vain vyöhyketietoisuuden sääntöjen mukaisesti. Tämä estäisi terveiden saatavuusvyöhykkeiden solmujen kuormituksen äkillisen lisääntymisen.

  • Load-Aware Shard Allokation: Amazon OpenSearch Service ottaa huomioon sellaiset tekijät kuin varatun kapasiteetin, todellisen kapasiteetin ja sirpalekopioiden kokonaismäärän laskeakseen, onko jokin solmu ylikuormitettu useammalla sirpaleella solmukohtaisten odotettujen keskimääräisten sirpaleiden perusteella. Se estäisi sirpaleiden osoittamisen, kun mikä tahansa solmu on varannut sirpaleiden määrän, joka ylittää tämän rajan.

Huomautuksia että kaikki määräämättömät ensisijainen kopio sallittaisiin edelleen ylikuormitetussa solmussa, jotta klusteria estetään välittömältä tietojen katoamiselta.

Samoin korjatakseen manuaalisen palautusongelman (kuten on kuvattu yllä olevassa Palautus-osiossa) Amazon OpenSearch Service tekee myös muutoksia sisäiseen skaalauskomponenttiin. Uudempien muutosten myötä Amazon OpenSearch Service ei käynnistä solmuja jäljellä olevilla käytettävyysvyöhykkeillä, vaikka se käy läpi aiemmin kuvatun vikaskenaarion.

Nykyisen ja uuden käyttäytymisen visualisointi

Esimerkiksi Amazon OpenSearch Service -toimialue on määritetty 3-AZ:lla, 6 datasolmulla, 12 ensisijaisella sirpaleella ja 24 replikasirpaleella. Toimialue on varattu AZ-1:n, AZ-2:n ja AZ-3:n välillä, ja kummassakin vyöhykkeessä on kaksi solmua.

Tämänhetkinen sirpaleiden jako:
Sirpaleiden kokonaismäärä: 12 ensisijaista + 24 kopiota = 36 sirpaletta
Saatavuusalueiden lukumäärä: 3
Sirpaleiden määrä vyöhykettä kohden (vyöhyketietoisuus on totta): 36/3 = 12
Solmujen määrä käytettävyysaluetta kohti: 2
Sirpaleiden määrä solmua kohti: 12/2 = 6

Seuraava kaavio tarjoaa visuaalisen esityksen toimialueen asetuksista. Ympyrät osoittavat solmulle allokoitujen sirpaleiden määrää. Amazon OpenSearch Service jakaa kuusi sirpaletta solmua kohti.

Osittaisen vyöhykevian aikana, kun yksi solmu AZ-3:ssa epäonnistuu, epäonnistunut solmu osoitetaan jäljellä olevalle vyöhykkeelle ja vyöhykkeen sirpaleet jaetaan uudelleen käytettävissä olevien solmujen perusteella. Yllä kuvattujen muutosten jälkeen klusteri ei luo uutta solmua tai jaa sirpaleita uudelleen solmun vian jälkeen.


Yllä olevassa kaaviossa Amazon OpenSearch Service yrittäisi käynnistää korvaavan kapasiteetin samalla vyöhykkeellä, kun yksi solmu menetetään AZ-3:ssa. Joidenkin käyttökatkojen vuoksi vyöhyke saattaa kuitenkin olla heikentynyt eikä vaihtoa voi käynnistää. Tällaisessa tapauksessa palvelu yrittää käynnistää alijäämäkapasiteetin toisella terveellä alueella, mikä voi johtaa vyöhykkeiden epätasapainoon käytettävyysvyöhykkeiden välillä. Törmäysalueen sirpaleet tunkeutuvat samalla vyöhykkeellä säilyneeseen solmuun. Uudella käytöksellä palvelu kuitenkin yrittäisi käynnistää kapasiteettia samalla vyöhykkeellä, mutta välttää alijäämäkapasiteetin käynnistämistä muilla vyöhykkeillä epätasapainon välttämiseksi. Sirpaleiden allokaattori varmistaisi myös, että säilyneet solmut eivät ylikuormitu.


Samoin, jos kaikki AZ-3:n solmut katoavat tai AZ-3 vahingoittuu, Amazon OpenSearch Service tuo esiin kadonneet solmut jäljellä olevalla Saatavuusvyöhykkeellä ja jakaa myös sirpaleet uudelleen solmuille. Uusien muutosten jälkeen Amazon OpenSearch Service ei kuitenkaan varaa solmuja jäljellä olevalle vyöhykkeelle tai se yrittää jakaa kadonneita sirpaleita uudelleen jäljellä olevalle vyöhykkeelle. Amazon OpenSearch Service odottaa, että palautus tapahtuu ja että verkkotunnus palaa alkuperäiseen kokoonpanoon palautuksen jälkeen.

Jos verkkotunnuksessasi ei ole tarpeeksi kapasiteettia kestämään käytettävyysvyöhykkeen menetystä, verkkotunnuksesi suorituskyky voi laskea. Siksi on erittäin suositeltavaa noudattaa parhaita käytäntöjä verkkotunnuksesi koon määrittämisessä, mikä tarkoittaa, että sinulla on riittävästi resursseja kestämään yhden Saatavuusvyöhykkeen epäonnistumisen menettämisen.


Tällä hetkellä, kun verkkotunnus palautuu, palvelu vaatii manuaalisia toimenpiteitä kapasiteetin tasapainottamiseksi käytettävyysvyöhykkeiden välillä, mikä sisältää myös sirpaleiden siirtämistä. Uudella käytöksellä ei kuitenkaan tarvita mitään puuttumista palautusprosessin aikana, koska kapasiteetti palaa vaikutusalueelle ja sirpaleet allokoidaan automaattisesti myös palautetuille solmuille. Näin varmistetaan, että jäljellä olevilla resursseilla ei ole kilpailevia prioriteetteja.

Mitä voit odottaa

Kun olet päivittänyt Amazon OpenSearch Service -verkkotunnuksesi uusimpaan palveluohjelmistoversioon, verkkotunnukset, jotka ovat olleet parhaiden käytäntöjen mukaan on ennustettavampi suorituskyky, vaikka se menettää yhden tai useamman datasolmun käytettävyysvyöhykkeellä. Solmussa esiintyvien sirpaleiden yleiskohdistustapaukset vähenevät. On hyvä käytäntö tarjota riittävästi kapasiteettia, jotta voidaan sietää yksittäisen vyöhykkeen vika

Saatat toisinaan nähdä verkkotunnuksen muuttuvan keltaiseksi tällaisten odottamattomien vikojen aikana, koska emme määritä replikasiruja ylikuormitettuihin solmuihin. Tämä ei kuitenkaan tarkoita, että hyvin määritetyssä toimialueessa tapahtuisi tietojen menetystä. Varmistamme edelleen, että kaikki ensisijaiset on osoitettu seisokkien aikana. Käytössä on automaattinen palautus, joka huolehtii toimialueen solmujen tasapainottamisesta ja varmistaa, että kopiot osoitetaan, kun vika toipuu.

Päivitä Amazon OpenSearch Service -verkkotunnuksesi palveluohjelmisto, jotta nämä uudet muutokset otetaan käyttöön verkkotunnuksessasi. Lisätietoja palveluohjelmiston päivitysprosessista on osoitteessa Amazon OpenSearch -palvelun dokumentaatio.

Yhteenveto

Tässä viestissä näimme, kuinka Amazon OpenSearch Service paransi äskettäin logiikkaa solmujen ja sirpaleiden jakamiseksi käytettävyysvyöhykkeiden kesken vyöhykekatkojen aikana.

Tämä muutos auttaa palvelua varmistamaan yhtenäisemmän ja ennakoitavamman suorituskyvyn solmu- tai vyöhykevikojen aikana. Verkkotunnukset eivät näe lisääntynyttä latenssia tai kirjoituslohkoja käsittelyn kirjoitus- ja lukujakson aikana, mikä nousi toisinaan aikaisemmin esiin solmujen yliallokoinnin vuoksi.


Tietoja kirjoittajista

Bukhtawar Khan on vanhempi ohjelmistosuunnittelija, joka työskentelee Amazon OpenSearch Servicessä. Hän on kiinnostunut hajautetuista ja autonomisista järjestelmistä. Hän on OpenSearchin aktiivinen avustaja.

Anshu Agarwal on vanhempi ohjelmistosuunnittelija, joka työskentelee AWS OpenSearchin parissa Amazon Web Services -palvelussa. Hän on intohimoinen skaalautuvien ja erittäin luotettavien järjestelmien rakentamiseen liittyvien ongelmien ratkaisemiseen.

Shourya Dutta Biswas on ohjelmistosuunnittelija, joka työskentelee AWS OpenSearchin parissa Amazon Web Services -palvelussa. Hän on intohimoinen erittäin kestävien hajautettujen järjestelmien rakentamiseen.

Rishab Nahata on ohjelmistosuunnittelija, joka työskentelee OpenSearchin parissa Amazon Web Services -palvelussa. Hän on kiinnostunut ongelmien ratkaisemisesta hajautetuissa järjestelmissä. Hän on OpenSearchin aktiivinen avustaja.

Ranjith Ramachandra on suunnittelupäällikkö, joka työskentelee Amazon OpenSearch Servicessä Amazon Web Services -palvelussa.

Jon Handler on Senior Principal Solutions Architect, joka on erikoistunut AWS-hakuteknologioihin – Amazon CloudSearch ja Amazon OpenSearch Service. Hän toimii Palo Altossa ja auttaa laajaa asiakaskuntaa saamaan haku- ja loki-analytiikkatyökuormituksensa käyttöön oikein ja toimimaan hyvin.

Aikaleima:

Lisää aiheesta AWS Big Data