Redis-klusterin asentaminen CentOS 8: een - osa 3


Redis Cluster on sisäänrakennettu Redis-ominaisuus, joka tukee automaattista sirpaloitumista, replikointia ja korkeaa saatavuutta, joka on aiemmin toteutettu Sentinelsin avulla. Se on suunniteltu kahteen tärkeään tarkoitukseen: yksi on jakaa tietojoukko automaattisesti useaan instanssiin ja toiseksi tarjota jonkin verran käytettävyyttä osioiden aikana, jatkaa toimintoja, kun jotkut instanssit (etenkin päälliköt) epäonnistuvat tai eivät pysty kommunikoimaan suurimman osan solmut klusterissa.

Klusteri kuitenkin lakkaa toimimasta suurempien vikojen sattuessa (esim. Kun suurin osa isäntäkappaleista ei ole käytettävissä). Lisäksi, jos isäntä ja orja epäonnistuvat samaan aikaan, klusteri ei voi jatkaa normaalia toimintaa (vaikka kiertotapa on lisätä solmuja tai luoda asymmetria klusteriin, muuttaa klusterin asettelua automaattisesti).

Redis-klusterin dokumentaation mukaan odotetusti toimivan "minimaalisen klusterin" on sisällettävä vähintään 3 pääsolmua. Suurimman käytettävyyden kannalta sopivimmissa asetuksissa tulisi kuitenkin olla vähintään 6 solmua, joissa on kolme isäntää ja kolme orjaa, jokaisella isännällä on orja.

Tärkeää: Redis Clusterilla on myös joitain rajoituksia, joista puuttuu tuki Natted-ympäristöille sekä niille, joissa IP-osoitteet tai TCP-portit on määritetty uudelleen esimerkiksi Dockerissa. Kaikki asiakaskirjastot eivät myöskään tue sitä.

Tässä artikkelissa kuvataan Redis-klusterin (Cluster-Mode Disabled) määrittäminen CentOS 8: een. Se sisältää Redis-ohjelmiston asentamisen, klusterisolmujen määrittämisen, klusterin luomisen ja klusterin vikasietotestin testaamisen.

Huomautus: Tässä oppaassa käytämme uusia/tyhjiä Redis-esiintymiä klusterimoodin ajamiseksi. Klusteritila ei toimi joidenkin kokoonpanojen kanssa, jotka on tehty Redis-sarjan kahdessa ensimmäisessä oppaassa, varsinkin se ei toimi, kun parametrin kopiota käytetään.

  1. Palvelimet, joissa on CentOS 8 -asennus

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

Asennuksessamme on 3 luku-/kirjoitus-isäntäsolmua ja 3 vain luku -kopiosolmua, joista jokaisella on yksi kopio, joten kolme sirpaleita sisältää kaikki klusterin tiedot kussakin solmussa. Sovellusliittymä tai CLI-asiakas voi kirjoittaa vain pääsolmuille, mutta lukea mistä tahansa klusterin solmusta.

Vaihe 1: Asenna Redis kaikkiin solmuihin

1. Kirjaudu kaikkiin esiintymiin SSH: n kautta ja asenna sitten Redis-moduuli suorittamalla seuraava komento käyttämällä DNF-paketinhallintaa kuvan osoittamalla tavalla.

# dnf module install redis

2. Käynnistä sitten Redis-palvelu, salli se käynnistymään automaattisesti järjestelmän käynnistyksen yhteydessä ja tarkista sen tila varmistaaksesi, että se on käynnissä (tarkista palvelu kaikissa kuudessa esiintymässä):

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

Vaihe 2: Redis-instanssien määrittäminen kaikissa solmuissa

3. Tässä osassa kuvataan Redis-klusterisolmujen määrittäminen. Muista suorittaa kokoonpanot täällä kaikille solmuille.

Määritä Redis-palvelin asetustiedostolla /etc/redis.conf. Suosittelemme, että luot varmuuskopion alkuperäisestä tiedostosta ennen sen muokkaamista valitsemallasi komentorivillä.

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

4. Etsi seuraavaksi seuraavat konfigurointiparametrit ja muokkaa niiden arvoja kuvan mukaisesti. Sidosparametri asettaa Redis-palvelimen käyttöliittymän kuuntelemaan, asettamalla sen arvoksi ilmentymän LAN IP: n. Poista 127.0.0.1, koska huomasimme, että sen jättäminen sinne hidastaa klusterin luomisprosessia, erityisesti klusteriin liittymisen vaihetta.

bind  10.42.0.247

Aseta sitten suojatun tilan arvoksi no , jotta yhteydet sallitaan klusterin muista esiintymistä.

protected-mode no

Portti-parametri määrittää portin, jota Redis-palvelin kuuntelee yhteyksien suhteen, oletusarvo on 6379. Tämä on dataportti asiakkaiden kanssa kommunikointiin.

port 6379

5. Seuraava parametrijoukko ottaa käyttöön klusterimoodin ja asettaa joitain sen hyödyllisiä ominaisuuksia. Kun klusteria käyttävä parametri on asetettu arvoon yes , aktivoidaan klusteritila.

cluster-enabled yes

Seuraavaksi cluster-config-file-parametri asettaa klusterisolmun klusterin kokoonpanotiedoston nimen (esim. Solmut-6379.conf). Tiedosto luodaan työhakemistoon (oletus on/var/lib/redis määritetään dir-parametrin avulla), eikä sitä voi muokata.

cluster-config-file nodes-6379.conf

Seuraava hyödyllinen klusterivaihtoehto on klusterin-solmun aikakatkaisu. Sitä käytetään asettamaan enimmäisaika millisekunteina, jolloin ilmentymä voi olla poissa käytöstä, jotta sitä voidaan harkita vikatilassa. Arvo 15000 vastaa 15 sekuntia.

cluster-node-timeout 15000

6. Meidän on myös sallittava Redis-pysyvyys levyllä. Voimme käyttää yhtä pysyvyystilaa, joka on vain liitä tiedosto (AOF): se kirjaa (työhakemistoon luodussa tiedostossa appendonly.aof) kaikki palvelimen onnistuneesti vastaanottamat kirjoitusoperaatiot. Tiedot toistetaan palvelimen käynnistyksen aikana alkuperäisen tietojoukon rekonstruoimiseksi.

Ota se käyttöön asettamalla appendonly-parametriksi yes .

appendonly yes

7. Kun olet tehnyt kaikki muutokset, käynnistä Redis-palvelu uudelleen kaikissa solmuissa, jotta viimeisimmät muutokset otetaan käyttöön.

# systemctl restart redis

8. Tässä vaiheessa jokaisella klusterisolmulla tulisi nyt olla tunnus. Voit tarkistaa tämän lokitiedostosta, joka on osoitteessa /var/log/redis/redis.log.

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

9. Avaa seuraavaksi portit 6397 ja 16379 kaikissa tapauksissa. Myöhempää porttia käytetään klusteriväylälle (solmusta toiseen solmittu tietoliikennekanava, joka käyttää binaariprotokollaa). Tämä on Redis-klusterin TCP-yhteyksien perusvaatimus.

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

Vaihe 3: Redis-klusterin luominen

10. Luo klusteri käyttämällä redis-cli-komentoriviasiakasta seuraavasti. --cluster create mahdollistaa klusterin luomisen ja --cluster-replicas 1 tarkoittaa yhden replikan luomista per master.

Asennuksessamme, jossa on 6 solmua, meillä on 3 isäntää ja 3 orjaa.

Huomaa, että kuutta ensimmäistä solmua pidetään isäntänä (M) ja seuraavia kolmea solmua pidetään orjina (S) . Ensimmäinen orja eli 10.42.0.200:6379 toistaa ensimmäisen isännän eli 10.42.0.247:6379, toinen orja toistaa toisen isännän siinä järjestyksessä.

Seuraava komento on muotoiltu siten, että tulos edustaa yllä olevaa loogista asetustamme.

# 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. Kun klusterin luonti on onnistunut, suorita seuraava komento missä tahansa isännässä (määritä sen IP-osoite -h -merkinnällä) kaikkien klusterisolmujen luettelointiin.

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

Sinun pitäisi pystyä näkemään kaikki klusterisolmut siten, että orjat ilmoittavat isäntänsä, kuten seuraavassa kuvakaappauksessa esitetään.

Eri kentät ovat tässä järjestyksessä: solmun tunnus, IP-osoite: portti, liput, viimeinen ping lähetetty, viimeinen pong vastaanotettu, kokoonpanokausiaika, linkkitila, paikat (päälliköille).

Vaihe 4: Redis Cluster Failover -testaus

12. Tässä osiossa osoitetaan, kuinka testata klusterin vikasietoisuus. Otetaan ensin huomioon mestarit.

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

Ota myös huomioon Redis-orjat.

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

13. Seuraavaksi lopetetaan Redis-palvelu yhdellä pääsolmusta, esim. 10.42.0.197, ja tarkistetaan kaikki klusterin pääsolmut.

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

Seuraavasta kuvakaappauksesta näet, että solmu 10.42.0.197:6367 on vikatilassa ja sen orja 10.42.0.21:6379 on ylennetty master-tilaan.

14. Aloitetaan nyt Redis-palvelu uudelleen epäonnistuneessa solmussa ja tarkistetaan kaikki klusterin isännät.

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

Tarkista myös klusterin orjat varmistaaksesi, että epäonnistunut isäntä on nyt orja.

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

Vaihe 5: Tietojen toistamisen testaaminen Redis-klusterissa

15. Tässä viimeisessä osassa selitetään, kuinka klusteridatan replikointi tarkistetaan. Luomme avaimen ja arvon yhdelle masterista ja yritämme sitten lukea sen kaikista klusterisolmuista seuraavasti. Käytä -c -kytkintä ottaaksesi käyttöön klusterituen redis-cli-apuohjelman alla ja käyttääksesi tietoja klusteritilassa.

# 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

Tärkeintä on, että Redis-klusteri on ensisijainen tapa saada automaattinen sirppaus, replikointi ja korkea käytettävyys. /Etc/redis.conf -tiedostossa on monia muita hyvin dokumentoituja määritysparametreja. Löydät lisätietoja virallisesta dokumentaatiosta: Redis-klusterin opetusohjelma ja Redis-klusterimääritys.

Tämä tuo meidät kolmiosaisen Redis-opetusohjelman loppuun. Alla olevaa palautelomaketta voidaan käyttää kysymysten tai kommenttien lähettämiseen.