Redis Sentinel

Redis Sentinel



Oletetaan skenaario, jossa tuotannossasi on vain yksi Redis-esiintymä ja se epäonnistuu jossain vaiheessa jostain syystä. Sovelluksesi tallentaa tiedot välimuistiin Redis-tietosäilössä, ja nyt ainoa tietolähteesi on kuollut. Yksi tapa hallita tällaisia ​​skenaarioita on ylläpitää isäntä-orja-arkkitehtuuria, jossa orjat voivat replikoida isäntäsolmua, kunnes se palaa. Redis-klusterit tukevat korkeaa käytettävyyttä jossain määrin master-replica -lähestymistavan avulla. Redis Sentinel on toinen lähestymistapa, joka tarjoaa luotettavamman tavan ylläpitää Redis-esiintymien korkeaa käytettävyyttä. Se tarkkailee Redis-isäntäsolmua vikojen varalta ja käynnistää välittömästi vikasietoprosessin, joka siirtää olemassa olevan orjasolmun upouusi isäntä.







Lisäksi Redis sentinel toimii välimiehenä, jossa asiakkaat muodostavat yhteyden ja kysyvät viimeisintä pääsolmun IP-osoitetta. Joten yhdistetty vartija antaa pääsolmun osoitteen välittömästi.



Lisäksi pääsolmun vika vahvistetaan, jos useat vartijat sopivat, että tietty isäntä ei ole tavoitettavissa tai käytettävissä. Tämä päättää vian havaitsemisvaiheen ja vikasietoprosessi alkaa heti. Näin ollen Redis sentinel voidaan nähdä hajautetuksi järjestelmäksi, jolla on tietyt ominaisuudet.



Sentinellien sopimus perustuu päätösvaltaisuuteen, jota käsitellään seuraavassa osiossa.





Kenen arvo

Quorum-arvo on sentinelien enimmäismäärä, josta on sovittava, kun pääsolmu on alhaalla. Tätä arvoa käytetään vain tunnistamaan vika pääsolmussa. Viansiirtoprosessi alkaa useiden käytettävissä olevien vartiosolmujen valtuuttamalla jatkamaan valitun vartijan ollessa johtajana.

Redis Sentinelin ominaisuudet

Sentinel tunnetaan tarjoavan korkean käytettävyyden mekanismin Redis-tietovarastolle. Sen lisäksi voidaan luetella useita muita ominaisuuksia.



  • Sentinel tarkkailee jatkuvasti isäntä- ja orjasolmujen tilaa Redis-järjestelmässäsi.
  • Aina kun Redis-esiintymissäsi on vika tai jotain vikaa, sentinel pystyy ilmoittamaan järjestelmänvalvojalle tai yhdistetyille sovelluksille sentinel API:n avulla.
  • Vartija ohjaa vikasietovaihetta mainostamalla kopiota uutena isäntänä. Jäljellä olevat replikat on määritetty käyttämään uutta pääkonetta. Lopuksi vastaavat asiakkaat saavat ilmoituksen uudesta pääsolmun osoitteesta.
  • Lisäksi Redis-sentinel on konfiguraatioiden tarjoaja yhdistetyille asiakkaille, jossa asiakkaat voivat pyytää tällä hetkellä saatavilla olevan pääinstanssin osoitetta ja jos äkillinen romahdus tapahtui, vartija on sitoutunut työntämään uuden pääsolmun osoitteen välittömästi.

Seuraavassa osiossa määritämme Redis-vartijat master-replica-esiintymillä ja käytämme sentinel-sovellusliittymää solmujen valvontaan.

Sentinel-kokoonpano

Ensin luodaan kaksi Redis-instanssia portteihin 7000 ja 7001. Portti 7000 tulee olemaan pääsolmu ja toinen kopioi isäntäsolmun. Molemmat esiintymät käyttävät seuraavia konfiguraatiotiedostoja vastaavasti:

Pääsolmun kokoonpano

portti 7000
klusterikäyttöinen nro
cluster-config-file nodes.conf
cluster-node-timeout 5000
liitteenä Joo

Slave Node Configuration

portti 7001
klusterikäyttöinen nro
cluster-config-file nodes.conf
cluster-node-timeout 5000
liitteenä Joo

Molemmat esiintymät alkavat antamalla kumpaankin liittyvä määritystiedosto. Voimme käyttää seuraavaa komentoa käynnistämään Redis-instanssit erikseen:

redis-server redis.conf

Muodostetaan yhteys Redis-esiintymään, joka aloitettiin portista 7001 seuraavasti:

redis-cli -s 7001

Nyt voimme tehdä tästä ilmentymän replikan isäntäkoneesta, joka toimii portissa 7000. REPLICAOF-komentoa voidaan käyttää seuraavasti:

kopio versiosta 127.0.0.1 7000

Kuten odotettiin, portissa 7001 toimivasta ilmentymästä tuli portissa 7000 toimivan isäntäsolmun replikasolmu.

Nyt olemme valmiita konfiguroimaan kolme Redis-sentineliä valvomaan yllä olevaa pääesiintymää. Meillä on oltava kolme asetustiedostoa kolmen vartio-instanssin luomiseksi portteihin 5000, 5001 ja 5002, kuten seuraavassa esitetään.

Jokainen sentinel.conf tiedosto näyttää tältä paitsi että portin numero muuttuu:

portti 5000
sentinel monitor masternode 127.0.0.1 7000 kaksi
sentinel alas-jälkeen-millisekunti mastersolmu 5000
sentinel vikasieto-aikakatkaisun mastersolmu 60 000

Nyt on aika ajaa kolme vartijaa. Voit käyttää redis-sentinel-suoritettavaa tiedostoa polun kanssa sentinel.conf konfigurointitiedostoa sentinel-instanssin luomiseksi. Muussa tapauksessa voimme silti kutsua redis-palvelin suoritettavaa tiedostoa määrittämällä polun kohteeseen sentinel.conf ja lippu – vartija .

Aloitetaan jokainen sentinel seuraavalla komennolla:

redis-server sentinel.conf -- Sentinel

Ensimmäinen vartija on käynnistetty portista 5000. Samoin voit käynnistää myös kaksi muuta esiintymää.

Nyt Redis sentinel -asetuksemme on valmis ja toimii seuraavan kuvan mukaisesti:

Seuraavassa osiossa tutkimme lisää Sentinel API:sta ja kuinka voimme käyttää sitä Redis-pääsolmuun liittyvien tietojen hakemiseen.

Sentinel API

Redis tarjoaa erillisen sentinel-sovellusliittymän, jolla voidaan valvoa liittyviä master-malleja ja replikoita, tilata ilmoituksia ja muokata sentinel-asetuksia. Lisäksi alla on lueteltu useita käyttötapoja.

  • Tarkista valvottujen Redis-isäntä- ja orja-ilmentymien tila
  • Lisätietoa muista vartijoista
  • Vastaanota push-tyylisiä ilmoituksia vartijoilta vikasietotilanteessa

SENTINEL-komentoa voidaan käyttää siihen liittyvien alikomentojen kanssa Redis-sentinelien ja valvottujen solmujen kyselyyn, päivittämiseen tai asettamiseen.

Tarkista pääsolmun tila

On erittäin tärkeää seurata tai tarkistaa pääsolmun kunto ajoittain. Seuraavaa sentinel API -komentoa voidaan käyttää päätietojen hakemiseen:

SENTINEL MASTER < valvottu_isäntänimi >

monitored_master_name: Pääsolmun nimi, joka on määritetty aikaisemmassa vaiheessa luomassamme sentinel-määritystiedostossa.

Käytetään tätä komentoa päätilan kyselyyn asennuksessamme. Meidän tapauksessamme pääsolmun nimi on 'masternode'.

SENTINEL MASTER masternode

Useita tietoja on haettu ja osa niistä on tärkeitä, kuten num-slave, liput ja num-other-sentinels.

The liput ominaisuus on asetettu hallita mikä tarkoittaa, että mestari on hyvässä kunnossa. Aina kun pääsolmu on alhaalla, s_down tai o_alas lippu tulee näkyviin. Omaisuus luku-muut-vartijat on asetettu arvoon 2, mikä tarkoittaa, että Redis-vartija on jo tunnistanut kaksi muuta pääsolmun vartijaa. Lisäksi orjien lukumäärä -ominaisuus näyttää pääsolmun käytettävissä olevat kopiot. Tässä tapauksessa se on asetettu arvoon 1, koska meillä on vain yksi kopio.

Hanki tietoja yhdistetyistä replikoista

Voimme tarkistaa pääsolmuun liitetyt replikat käyttämällä seuraavaa SENTINEL-alikomentoa:

SENTINEL-REPLIKAT < valvottu_isäntänimi >

Tässä esimerkissä isäntänimi on 'masternode'.

SENTINEL replikoita masternode

Kuten odotettiin, Sentinel havaitsi orjasolmun, joka käy portissa 7001.

Hanki tietoja assosioituneista vartijoista

Vastaavasti voimme tiedustella tietoja, jotka liittyvät muihin nykyiseen pääsolmuun liittyviin vartijoihin käyttämällä seuraavaa SENTINEL-alikomentoa:

SENTINEL SENTINELS < pääsolmun_nimi >

Tässä tapauksessa haemme tiedot, jotka liittyvät pääsolmuun nimeltä 'masternode'.

SENTINEL sentinels masternode

Hanki pääsolmun osoite

Kuten aikaisemmassa osiossa mainittiin, Redis sentinel on konfiguraatiotoimittaja yhdistettyille asiakkaille. Joten se pystyy tarjoamaan tällä hetkellä käynnissä olevan pääsolmun IP-osoitteen ja portin pyydetyille asiakkaille. Seuraavaa Sentinel API -alikomentoa voidaan käyttää mainittujen tietojen hakemiseen.

SENTINEL GET-MASTER-ADDR-BY-NAME < pääsolmun_nimi >

Suoritetaan yllä oleva komento skenaariollemme seuraavasti:

sentinel get-master-addr-by-name mastersolmu

Keskustelimme vain muutamasta sentinel API -komennosta. Saatavilla on useita muita alikomentoja, kuten sentinel-failover, sentinel info-cache, sentinel masters jne. Lisäksi monia komentoja on saatavana myös hallintatarkoituksiin. Seuraavassa osiossa keskitymme Redis sentinel -virheprosessiin.

Sentinel-virheprosessi

Koska vartijamme on määritetty, voimme testata vikasietovaihetta. Lähetetään pääsolmumme nukkumaan 300 sekunniksi, mikä simuloi vikaa pääsolmussa.

debug nukkua 300

Pääsolmun, joka toimii portissa 7000, ei pitäisi olla nyt tavoitettavissa. Joten liittyvät vartijat huomaavat, että isäntä ei ole käytettävissä +lasku tapahtuma. Sitten tämä asetetaan +odown jossa 2 vartijaa vahvistavat, että pääsolmu on alhaalla koorumiarvon mukaan. Lopuksi vikasietovaihe alkaa, ja mieluiten kopio tulisi ylentää uudeksi masteriksi.

Tarkistetaan pääsolmun IP-osoite ja portti uudelleen.

sentinel get-master-addr-by-name mastersolmu

Kuten odotettiin, edellinen replika on ylennetty uudeksi pääkäyttäjäksi, mikä tarkoittaa, että vartijan vikasietoprosessi on onnistunut. Tämä päättää kolmen vartijakokoonpanomme käyttöönoton ja testauksen yksittäistä master-replika-paria varten.

Johtopäätös

Redis sentinel on luotettavin tapa varmistaa tietyn Redis-pääreplica-esiintymän korkea käytettävyys. Sentinelli pystyy valvomaan, ilmoittamaan ja käynnistämään automaattisen vikasietoisuuden ilman ihmisen väliintuloa. Lisäksi useat vartijat ovat yhtä mieltä siitä, että isäntäsolmu ei ole tavoitettavissa ja koorumiarvoa käytetään sentinelien enimmäismääränä, josta on sovittava, kun tarkistetaan isäntäinstanssin saatavuus. Redis sentinel tarjoaa helppokäyttöisen API:n noutaakseen tietoja pääsolmun ja siihen liittyvien replikoiden tilasta ja suorittaakseen myös hallinnollisia tehtäviä.