Redis Sentinel

Redis Sentinel



Tételezzünk fel egy olyan forgatókönyvet, amelyben csak egy Redis-példány van a termelésben, és az valamikor valamilyen okból meghiúsul. Az alkalmazás gyorsítótárazza az adatokat a Redis adattárban, és most az egyetlen adatforrás halott. Az ilyen forgatókönyvek szabályozásának egyik módja a mester-szolga architektúra fenntartása, ahol a szolgák replikálhatják a mester csomópontot, amíg az vissza nem jön. A Redis-fürtök bizonyos mértékig támogatják a magas rendelkezésre állást a master-replica megközelítéssel. A Redis Sentinel egy másik megközelítés, amely megbízhatóbb módot biztosít a Redis-példányok magas rendelkezésre állásának fenntartására. Figyeli a Redis főcsomópont meghibásodásait, és azonnal elindítja a feladatátvételi folyamatot, amely egy meglévő szolga csomópontot egy vadonatúj mesterré léptet elő.







Ezenkívül a Redis sentinel közvetítőként működik, ahol az ügyfelek csatlakoznak és kérik a legújabb főcsomópont IP-címét. Tehát a csatlakoztatott őrszem azonnal megadja a fő csomópont címét.



Ezenkívül a főcsomópont meghibásodása megerősítést nyer, ha több őrszem megállapodott abban, hogy egy adott mester nem érhető el vagy nem elérhető. Ezzel a hibaészlelési szakasz lezárul, és a feladatátvételi folyamat azonnal elindul. Ennélfogva a Redis őrszem meghatározott tulajdonságokkal rendelkező elosztott rendszernek tekinthető.



Az őrszemek megállapodása a határozatképesség értékén alapul, amelyet a következő részben tárgyalunk.





Akinek Értéke

A Kvórum érték az őrszemek maximális száma, amelyről meg kell állapodni, amikor a fő csomópont nem működik. Ez az érték csak a fő csomópont hibájának azonosítására szolgál. A feladatátvételi folyamat több rendelkezésre álló őrcsomópont engedélyezésével kezdődik, hogy egy kiválasztott őrszemet vezetőként folytathassanak.

A Redis Sentinel jellemzői

A Sentinel arról ismert, hogy magas rendelkezésre állási mechanizmust biztosít a Redis adattár számára. Ezen kívül számos más képesség is felsorolható.



  • A Sentinel folyamatosan figyeli a Redis rendszer mester és szolga csomópontjainak állapotát.
  • Valahányszor hiba vagy valami probléma adódik a Redis-példányokkal, a sentinel képes értesíteni a rendszergazdát vagy a csatlakoztatott alkalmazásokat a sentinel API-n keresztül.
  • A feladatátvételi fázist az őr irányítja egy replika új mesterként való előmozdításával. A fennmaradó replikák az új mester használatára konfigurálva. Végül a megfelelő ügyfelek értesítést kapnak az új főcsomópont-címről.
  • Ezenkívül a Redis sentinel a csatlakoztatott kliensek konfigurációs szolgáltatója, ahol a kliensek lekérhetik az aktuálisan elérhető főpéldány címét, és ha hirtelen összeomlás történt, az őr kötelezi magát az új fő csomópont címének azonnali leküldésére.

A következő szakaszban a Redis sentineleket főreplika példányokkal konfiguráljuk, és az őrző API-t használjuk a csomópontok figyelésére.

Sentinel konfiguráció

Először is létrehozunk két Redis-példányt a 7000-es és a 7001-es portokon. A 7000-es port lesz a főcsomópont, a másik pedig a főcsomópontot replikálja. Mindkét példány a következő konfigurációs fájlokat használja:

Főcsomópont-konfiguráció

kikötő 7000
cluster-kompatibilis sz
cluster-config-file nodes.conf
cluster-node-timeout 5000
függelékben Igen

Slave csomópont konfigurációja

kikötő 7001
cluster-kompatibilis sz
cluster-config-file nodes.conf
cluster-node-timeout 5000
függelékben Igen

Mindkét példány a hozzá tartozó konfigurációs fájl megadásával kezdődik. A következő paranccsal indíthatjuk külön a Redis példányokat:

redis-server redis.conf

Csatlakozzunk a 7001-es porton indult Redis-példányhoz az alábbiak szerint:

redis-cli -o 7001

Most ezt a példányt a 7000-es porton futó master replikájává tehetjük. A REPLICAOF parancs a következőképpen használható:

127.0.0.1 másolata 7000

Ahogy az várható volt, a 7001-es porton futó példány a 7000-es porton futó fő replika csomópontja lett.

Most készen állunk három Redis sentinel konfigurálására a fenti főpéldány figyelésére. Három konfigurációs fájlra van szükségünk ahhoz, hogy három őrszem példányt hozzunk létre az 5000-es, 5001-es és 5002-es portokon, ahogy az alábbiakban látható.

Minden egyes sentinel.conf A fájl a következőképpen néz ki, kivéve, hogy a portszám megváltozik:

kikötő 5000
sentinel monitor masternode 127.0.0.1 7000 két
őrszem le-after-miliseconds masternode 5000
őrszem feladatátvételi időtúllépés főcsomópont 60 000

Most itt az ideje a három őrszem működtetésének. Használhatja a redis-sentinel végrehajtható fájlt az elérési úttal együtt sentinel.conf konfigurációs fájlt egy sentinel példány létrehozásához. Ellenkező esetben továbbra is meghívhatjuk a redis-server végrehajtható fájlját, ha megadjuk az elérési utat sentinel.conf és a zászlót -őrszem .

Indítsuk el az egyes őrszemeket a következő paranccsal:

redis-server sentinel.conf --őrszem

Az első őrszem az 5000-es porton indult el. Hasonlóképpen elindíthatja a másik két példányt is.

Most a Redis Sentinel beállításai be vannak állítva, és az alábbi ábrán látható módon működik:

A következő részben többet fogunk megvizsgálni a Sentinel API-ról és arról, hogyan használhatjuk fel a Redis főcsomóponthoz kapcsolódó információk lekérésére.

Sentinel API

A Redis külön őrző API-t biztosít a társított mesterek és replikák figyeléséhez, az értesítésekre való feliratkozáshoz és az őrszem beállításainak módosításához. Ezenkívül az alábbiakban számos felhasználási módot sorolunk fel.

  • Ellenőrizze a felügyelt Redis master és slave példányok állapotát
  • Részletek a többi őrszemről
  • Feladatátvétel esetén push-stílusú értesítések fogadása az őrszemektől

A SENTINEL parancs a hozzá tartozó alparancsokkal együtt használható Redis őrszemek és felügyelt csomópontok lekérdezésére, frissítésére vagy beállítására.

Ellenőrizze a fő csomópont állapotát

Nagyon fontos időnként figyelni vagy ellenőrizni a főcsomópont állapotát. A következő sentinel API parancs használható a fő részletek lekérésére:

ŐRSZEMESTER < felügyelt_mesternév >

monitored_master_name: A fő csomópont neve, amely a korábbi lépésben létrehozott őrkonfigurációs fájlban van megadva.

Használjuk ezt a parancsot a mester állapotának lekérdezésére a beállításunkban. Esetünkben a fő csomópont neve 'masternode'.

SENTINEL MASTER masternode

Számos információ került lekérésre, és ezek közül néhány fontos, például a num-slave, a flags és a num-other-sentinels.

Az zászlókat tulajdonság értékre van állítva fő- ami azt jelenti, hogy a mester jó egészségnek örvend. Amikor a fő csomópont nem működik, a s_down vagy o_down zászló jelenik meg. A tulajdon más-őrszemek száma 2-re van állítva, ami azt jelenti, hogy a Redis sentinel már felismerte a másik két őrszemet a fő csomóponthoz. Ezen kívül a szám-szolgák tulajdonság megjeleníti a fő csomópont elérhető replikáit. Ebben az esetben 1-re van állítva, mivel csak egy replikánk van.

Információkat szerezhet a csatlakoztatott replikákról

A főcsomóponthoz kapcsolódó replikákat a következő SENTINEL alparancs segítségével ellenőrizhetjük:

ŐRZÉRREPLIKÁK < felügyelt_mesternév >

Ebben a példában a mesternév „masternode”.

SENTINEL replikák masternode

Ahogy az várható volt, a Sentinel a 7001-es porton futó slave csomópontot észlelte.

Információkat szerezhet a társult őrszemekről

Hasonlóképpen lekérdezhetjük az aktuális főcsomóponthoz társított egyéb őrszemekre vonatkozó részleteket a következő SENTINEL alparancs használatával:

SENTINEL SENTINELS < master_node_name >

Ebben az esetben a „masternode” nevű főcsomóponthoz kapcsolódó információkat fogjuk lekérni.

SENTINEL sentinels masternode

Szerezze meg a fő csomópont címét

Ahogy az előző részben említettük, a Redis sentinel a csatlakoztatott ügyfelek konfigurációs szolgáltatója. Így a jelenleg futó főcsomópont IP-címét és portját képes biztosítani a kért klienseknek. A következő Sentinel API alparancs használható az említett információk lekérésére.

SENTINEL GET-MASTER-CÍM NÉV SZERINT < master_node_name >

Hajtsuk végre a fenti parancsot a forgatókönyvünkhöz a következőképpen:

sentinel get-master-addr-by-name masternode

Csak néhány Sentinel API parancsot tárgyaltunk. Számos más alparancs is elérhető, mint például a sentinel-failover, az sentinel info-cache, a sentinel masters stb. Ezen kívül számos parancs elérhető adminisztrációs célokra is. A következő részben a Redis sentinel feladatátvételi folyamatára fogunk összpontosítani.

Sentinel feladatátvételi folyamat

Mivel az őrszem be van állítva, tesztelhetjük a feladatátvételi fázist. Állítsuk a főcsomópontunkat 300 másodpercre alvó állapotba, ami a főcsomópont meghibásodását szimulálja.

hibakeresés alvás 300

A 7000-es porton futó fő csomópont most elérhetetlen. Így a társított őrszemek észreveszik, hogy a mester nem érhető el a +sdown esemény. Ezután ez lesz beállítva +odown ahol 2 őrszem megerősíti, hogy a mester csomópont nem működik a kvórum értékének megfelelően. Végül elindul a feladatátvételi fázis, és ideális esetben a replikát az új mesterré kell előléptetni.

Ellenőrizzük újra a főcsomópont IP-címét és a portot.

sentinel get-master-addr-by-name masternode

Ahogy az várható volt, az előző replikát az új mesterré léptették elő, ami azt jelenti, hogy az őrszem feladatátvételi folyamat sikeres volt. Ezzel véget ért a három őrszem-beállításunk telepítése és tesztelése egyetlen mester-replika párhoz.

Következtetés

A Redis sentinel a legmegbízhatóbb módszer egy adott Redis fő replikapéldány magas rendelkezésre állásának biztosítására. Az őrszem emberi beavatkozás nélkül képes figyelni, értesíteni és automatikus feladatátvételt kezdeményezni. Több őrszem is egyetért abban, hogy a főcsomópont nem érhető el, és a kvórumértéket használják az őrszemek maximális számaként, amelyekről meg kell állapodni a főpéldány elérhetőségének ellenőrzésekor. A Redis sentinel egy könnyen használható API-t kínál a főcsomópont és a kapcsolódó replikák állapotával kapcsolatos információk lekéréséhez, valamint adminisztrációs feladatok végrehajtásához.