Kako nastaviti grozd Redis v CentOS 8 - 3. del


Redis Cluster je vgrajena funkcija Redis, ki podpira samodejno ostrenje, kopiranje in visoko razpoložljivost, ki je bila prej uvedena z uporabo Sentinels. Zasnovan je za dva glavna namena: eden je samodejno razdelitev nabora podatkov na več primerkov in drugič zagotavljanje določene stopnje razpoložljivosti med particijami, nadaljevanje operacij, ko nekateri primerki (zlasti glavni) ne uspejo ali ne morejo komunicirati z večino vozlišča v gruči.

Vendar grozd preneha delovati v primeru večjih napak (npr. Ko večina glavnih primerov ni na voljo). Če glavni in pomožni enoti hkrati ne uspeta, gruča ne more nadaljevati običajnih operacij (čeprav je rešitev, da dodate več vozlišč ali ustvarite asimetrijo v gruči, da samodejno spremenite postavitev gruče).

V skladu z dokumentacijo grozda Redis naj bi\"minimalna grozd", ki deluje po pričakovanjih, vsebovala vsaj 3 glavna vozlišča, vendar najprimernejša nastavitev za visoko razpoložljivost mora imeti vsaj 6 vozlišč s tremi glavnimi enotami in tremi podrejenimi, vsak glavni suženj.

Pomembno: Redis Cluster ima tudi nekatere omejitve, ki so pomanjkanje podpore za NATted okolja, pa tudi tista, kjer so naslovi IP ali vrata TCP preimenovani, na primer pod Dockerjem. Poleg tega je ne podpira vsaka odjemalska knjižnica.

Ta članek prikazuje, kako nastaviti grozd Redis (z onemogočenim načinom grozda) v CentOS 8. Vključuje, kako namestiti Redis, konfigurirati vozlišča gruč, ustvariti gručo in preskusiti odpoved gruče.

Opomba: V tem priročniku bomo za zagon načina gruče uporabili sveže/prazne primerke Redis. Način gruče ne bo deloval z nekaterimi konfiguracijami, izvedenimi v prvih dveh vodičih naše serije Redis, še posebej ne deluje, če se uporablja replika parametra.

  1. Strežniki z namestitvijo CentOS 8

Redis Master1: 10.42.0.247
Redis Master2: 10.42.0.197
Redis Master3: 10.42.0.132

Redis Slave1: 10.42.0.200
Redis Slave2: 10.42.0.21
Redis Slave3: 10.42.0.34

Naša nastavitev ima 3 vozlišča glavnega branja/pisanja in 3 vozlišča replike samo za branje, pri čemer ima vsak glavni eno repliko, zato trije delci vsebujejo vse podatke gruče v vsakem vozlišču. Aplikacijski API ali odjemalec CLI lahko piše samo v glavna vozlišča, vendar bere iz katerega koli vozlišča v gruči.

1. korak: Namestitev Redisa na vsa vozlišča

1. Prijavite se v vse primerke prek SSH, nato zaženite naslednji ukaz, da namestite modul Redis z upraviteljem paketov DNF, kot je prikazano.

# dnf module install redis

2. Nato zaženite storitev Redis, omogočite samodejni zagon ob zagonu sistema in preverite njeno stanje, da preverite, ali se izvaja (storitev preverite v vseh 6 primerkih):

# systemctl start redis
# systemctl enable redis
# systemctl status redis

2. korak: Konfiguriranje primerkov Redis na vseh vozliščih

3. Ta razdelek opisuje, kako konfigurirati vozlišča gruče Redis. Ne pozabite tukaj izvesti konfiguracije na vseh vozliščih.

Za konfiguracijo strežnika Redis uporabite konfiguracijsko datoteko /etc/redis.conf. Kot priporočeno prakso ustvarite varnostno kopijo izvirne datoteke, preden jo uredite z urejevalnikom besedila v ukazni vrstici po vaši izbiri.

# cp /etc/redis.conf /etc/redis.conf.orig
# vi /etc/redis.conf

4. Nato poiščite naslednje konfiguracijske parametre in uredite njihove vrednosti, kot je prikazano. Parameter vezanja nastavi, da bo vmesnik strežnika Redis poslušal, njegovo vrednost nastavite na primer IP LAN. Odstranite 127.0.0.1, ker smo ugotovili, da njegovo zaviranje upočasni postopek ustvarjanja gruče, zlasti stopnjo pridružitve gruči.

bind  10.42.0.247

Nato nastavite zaščiteni način na no , da omogočite povezave iz drugih primerkov v gruči.

protected-mode no

Parameter vrat določa vrata, ki jih bo strežnik Redis poslušal za povezave, privzeto je 6379. To so podatkovna vrata za komunikacijo s strankami.

port 6379

5. Naslednji niz parametrov bo omogočil način gruče in določil nekatere njegove uporabne funkcije. Parameter z omogočeno gručo, če je nastavljen na yes , aktivira način gruče.

cluster-enabled yes

Nato parameter cluster-config-file nastavi ime konfiguracijske datoteke grozda vozlišča grozda (npr. Nodes-6379.conf). Datoteka je ustvarjena v delovnem imeniku (privzeto je/var/lib/redis, definiran s parametrom dir) in je ni mogoče urejati.

cluster-config-file nodes-6379.conf

Naslednja uporabna možnost gruče je časovna omejitev vozlišča gruče, uporablja se za nastavitev največjega časa v milisekundah, ko je primerek lahko nedosegljiv, da se lahko upošteva v stanju okvare. Vrednost 15000 ustreza 15 sekundam.

cluster-node-timeout 15000

6. Omogočiti moramo tudi obstojnost Redisa na disku. Lahko uporabimo enega od načinov trajnosti, to je Datoteka samo za dodajanje (AOF): beleži (v datoteko appendonly.aof, ustvarjeno pod delovnim imenikom) vsako operacijo pisanja, ki jo je strežnik uspešno prejel. Podatki se bodo predvajali med zagonom strežnika za rekonstrukcijo prvotnega nabora podatkov.

Če jo želite omogočiti, nastavite parameter appendonly na yes .

appendonly yes

7. Po izvedbi vseh sprememb znova zaženite storitev Redis na vseh vozliščih, da uporabite nedavne spremembe.

# systemctl restart redis

8. V tem trenutku bi moralo vsako vozlišče gruče imeti ID. To lahko preverite v dnevniški datoteki na /var/log/redis/redis.log.

# cat /var/log/redis/redis.log

9. Nato na vseh primerkih odprite vrata 6397 in 16379. Kasnejša vrata se uporabljajo za vodilo grozda (komunikacijski kanal od vozlišča do vozlišča z uporabo binarnega protokola). To je osnovna zahteva za povezave TCP gruče Redis.

# firewall-cmd --zone=public --permanent --add-port=6379/tcp 
# firewall-cmd --zone=public --permanent --add-port=16379/tcp 
# firewall-cmd --reload

3. korak: Ustvarjanje grozda Redis

10. Če želite ustvariti gručo, uporabite odjemalca ukazne vrstice redis-cli, kot sledi. --cluster create omogoča ustvarjanje grozda, --cluster-replicas 1 pa ustvari eno kopijo na glavno datoteko.

Za našo postavitev, ki ima 6 vozlišč, bomo imeli 3 glavne in 3 podrejene.

Upoštevajte, da se bo prvih 6 vozlišč štelo za nadrejene (M) , naslednja tri pa kot podrejena (S) . Prvi podrejeni, tj. 10.42.0.200:6379, ponovi prvega nadrejenega, tj. 10.42.0.247:6379, drugi podrejeni podvoji drugega nadrejenega, v tem vrstnem redu.

Naslednji ukaz je oblikovan tako, da bo rezultat predstavljal našo logično nastavitev zgoraj.

# redis-cli --cluster create 10.42.0.247:6379 10.42.0.197:6379 10.42.0.132:6379 10.42.0.200:6379 10.42.0.21:6379 10.42.0.34:6379 --cluster-replicas 1

11. Ko je ustvarjanje gruče uspešno, zaženite naslednji ukaz na katerem koli gostitelju (navedite njegov naslov IP z zastavico -h ), da navedete vsa vozlišča gruče.

# redis-cli -h 10.42.0.247 -p 6379 cluster nodes

Videti bi morali vsa vozlišča grozda, podrejeni pa bi označili njihove nadrejene, kot je prikazano na naslednjem posnetku zaslona.

Različna polja so v tem vrstnem redu: ID vozlišča, naslov IP: vrata, zastave, zadnji poslani ping, zadnji prejeti pong, doba konfiguracije, stanje povezave, reže (za glavno enoto).

4. korak: Testiranje odpovedi Redis Cluster

12. V tem poglavju bomo prikazali, kako preizkusiti odpoved gruče. Najprej si zapomnimo mojstre.

# redis-cli -h 10.42.0.247 -p 6379 cluster nodes  | grep master

Upoštevajte tudi sužnje Redis.

# redis-cli -h 10.42.0.247 -p 6379 cluster nodes  | grep slave

13. Nato ustavimo storitev Redis na enem od glavnih vozlišč, npr. 10.42.0.197, in preverimo vsa glavna vozlišča v gruči.

# systemctl stop redis
# redis-cli -h 10.42.0.247 -p 6379 cluster nodes | grep master

Na naslednjem posnetku zaslona lahko vidite, da je vozlišče 10.42.0.197:6367 v stanju okvare in je njegov podrejeni 10.42.0.21:6379 povišan v glavno stanje.

14. Zdaj pa znova zaženimo storitev Redis na neuspelem vozlišču in preverimo vse glavne enote v gruči.

# systemctl start redis
# redis-cli -h 10.42.0.247 -p 6379 cluster nodes  | grep master

Preverite tudi pomožne enote gruče, da potrdite, da je neuspeli mojster zdaj suženjski.

# redis-cli -h 10.42.0.247 -p 6379 cluster nodes  | grep slave

5. korak: Preizkušanje podvajanja podatkov po gruči Redis

15. V tem zadnjem razdelku je razloženo, kako preveriti podvajanje podatkov gruče. Ustvarili bomo ključ in vrednost na enem od nadrejenih, nato pa ga poskusili prebrati iz vseh vozlišč gruče, kot sledi. S stikalom -c omogočite podporo za gruče v pripomočku redis-cli in dostopajte do podatkov v načinu gruče.

# redis-cli -c -h 10.42.0.247 -p 6379 set name 'TecMint.com'
# redis-cli -c -h 10.42.0.247 -p 6379 get name
# redis-cli -c -h 10.42.0.21 -p 6379 get name
# redis-cli -c -h 10.42.0.132 -p 6379 get name
# redis-cli -c -h 10.42.0.200 -p 6379 get name
# redis-cli -c -h 10.42.0.197 -p 6379 get name
# redis-cli -c -h 10.42.0.34 -p 6379 get name

Bottom line je Redis Cluster, ki je najprimernejši način za samodejno ostrenje, kopiranje in visoko razpoložljivost. V preostali datoteki /etc/redis.conf je veliko drugih dobro dokumentiranih konfiguracijskih parametrov, več informacij najdete v uradni dokumentaciji: Vadnica za grozde Redis in Specifikacija grozda Redis.

S tem smo prišli do konca tridelne vadnice Redis. Spodnji obrazec za povratne informacije lahko uporabite za objavo vprašanj ali komentarjev.