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ő 7000cluster-kompatibilis sz
cluster-config-file nodes.conf
cluster-node-timeout 5000
függelékben Igen
Slave csomópont konfigurációja
kikötő 7001cluster-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ő 5000sentinel 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.