Redis-klusterin määrittäminen CentOS 8:ssa - Osa 3


Redis Cluster on sisäänrakennettu Redis-ominaisuus, joka tukee automaattista sirpalointia, replikointia ja korkeaa käytettävyyttä ja joka on aiemmin toteutettu Sentinelien avulla. Se on suunniteltu kahteen päätarkoitukseen: toinen on jakaa tietojoukkosi automaattisesti useiden esiintymien kesken ja toiseksi tarjota jonkin verran käytettävyyttä osioiden aikana, jatkaa toimintaa, kun jotkin ilmentymät (erityisesti isännät) epäonnistuvat tai eivät pysty kommunikoimaan useimpien esiintymien kanssa. klusterin solmut.

Klusteri lakkaa kuitenkin toimimasta suurempien vikojen sattuessa (esim. kun suurin osa pääesiintymistä ei ole käytettävissä). Lisäksi, jos isäntä ja orja epäonnistuvat samanaikaisesti, klusteri ei voi jatkaa normaaleja toimintoja (vaikka kiertotapa on lisätä solmuja tai luoda epäsymmetria klusteriin, muuttaa klusterin asettelua automaattisesti).

Redis-klusterin dokumentaation mukaan odotetulla tavalla toimivan "minimiklusterin" on sisällettävä vähintään kolme pääsolmua. Mutta korkean käytettävyyden kannalta sopivimmassa asetelmassa tulisi olla vähintään 6 solmua kolmella isännällä ja kolmella orjalla, joista jokaisella on orja.

Tärkeää: Redis Clusterilla on myös joitain rajoituksia, jotka eivät tue NAT--ympäristöjä sekä niitä, joissa IP-osoitteet tai TCP-portit on yhdistetty uudelleen. esimerkki Dockerissa. Lisäksi kaikki asiakaskirjastot eivät tue sitä.

Tässä artikkelissa kerrotaan, kuinka Redis-klusteri määritetään (jossa Cluster-Mode on poistettu käytöstä) CentOS 8:ssa. Se sisältää kuinka asentaa Redis, määrittää klusterin solmut, luoda klusterin ja testata klusterin vikasietoa.

Huomaa: käytämme tässä oppaassa tuoreita/tyhjiä Redis-esiintymiä klusteritilan suorittamiseen. Klusteritila ei toimi joidenkin Redis-sarjan kahdessa ensimmäisessä oppaassa tehtyjen asetusten kanssa, etenkään, kun parametrin kopiota käytetään.

Edellytykset:

  1. Palvelimet, joissa on CentOS 8 -asennus

Testiympäristön asetukset

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-/kirjoituspääsolmua ja 3 vain luku -replikasolmua, joista jokaisella on yksi replika, joten kolme sirpaletta sisältää kaikki klusterin tiedot kussakin solmussa. Sovelluksen API- tai CLI-asiakasohjelma voi kirjoittaa vain pääsolmuihin, mutta lukea mistä tahansa klusterin solmusta.

Vaihe 1: Redisin asentaminen kaikkiin solmuihin

1. Kirjaudu kaikkiin ilmentymiin SSH:n kautta ja suorita seuraava komento asentaaksesi Redis-moduulin DNF-paketinhallinnan avulla kuvan mukaisesti.

dnf module install redis

2. Käynnistä seuraavaksi Redis-palvelu, ota se käyttöön automaattisesti järjestelmän käynnistyksen yhteydessä ja tarkista sen tila varmistaaksesi, että se on käynnissä (tarkista palvelu kaikissa kuudessa tapauksessa ):

systemctl start redis
systemctl enable redis
systemctl status redis

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

3. Tässä osiossa kerrotaan, kuinka Redis-klusterin solmut määritetään. Muista tehdä asetukset tässä kaikissa solmuissa.

Määritä Redis-palvelin /etc/redis.conf-määritystiedoston avulla. Suositeltava tapa on luoda varmuuskopio alkuperäisestä tiedostosta ennen sen muokkaamista valitsemallasi komentorivitekstieditorilla.

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

4. Etsi seuraavaksi seuraavat määritysparametrit ja muokkaa niiden arvoja kuvan mukaisesti. Parametri bind määrittää sen Redis-palvelimen rajapinnan, jota kuuntelee, ja asettaa sen arvoksi esiintymän LAN-IP-osoitteen. Poista 127.0.0.1, koska ymmärsimme, että sen jättäminen sinne hidastaa klusterin luomisprosessia, erityisesti klusteriin liittymistä.

bind  10.42.0.247

Aseta sitten protected-mode-asetukseksi no salliaksesi yhteydet klusterin muista esiintymistä.

protected-mode no

Porttiparametri määrittää portin, jonka kautta Redis-palvelin kuuntelee yhteyksiä. Oletusarvo on 6379. Tämä on dataportti asiakkaiden kanssa kommunikointiin.

port 6379

5. Seuraava parametrijoukko ottaa käyttöön klusteritilan ja asettaa joitakin sen hyödyllisiä ominaisuuksia. Cluster-enabled-parametri, kun se on asetettu arvoon yes, aktivoi klusteritilan.

cluster-enabled yes

Seuraavaksi parametri cluster-config-file määrittää klusterin solmun klusterin määritystiedoston nimen (esim. nodes-6379.conf). Tiedosto luodaan työhakemistoon (oletus on /var/lib/redis, joka on määritetty dir-parametrilla), eikä sitä voi muokata.

cluster-config-file nodes-6379.conf

Seuraava hyödyllinen klusterivaihtoehto on cluster-node-timeout. Sitä käytetään määrittämään millisekunteina enimmäisaika, jonka instanssi ei voi olla käytettävissä, jotta se voidaan katsoa virhetilassa. Arvo 15 000 vastaa 15 sekuntia.

cluster-node-timeout 15000

6. Meidän on myös otettava Redis-pysyvyys käyttöön levyllä. Voimme käyttää yhtä pysyvyystiloista, eli Liitä vain tiedosto (AOF): se kirjaa (luotuun tiedostoon appendonly.aof työhakemistossa) jokainen kirjoitustoiminto, jonka palvelin vastaanottaa onnistuneesti. Tiedot toistetaan palvelimen käynnistyksen aikana alkuperäisen tietojoukon rekonstruoimiseksi.

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

appendonly yes

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

systemctl restart redis

8. Tässä vaiheessa jokaisella klusterin solmulla pitäisi nyt olla ID. Voit tarkistaa tämän lokitiedostosta, joka sijaitsee 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änä (solmusta solmuun -viestintäkanava, 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: Luo Redis-klusteri

10. Luo klusteri redis-cli komentorivi -asiakasohjelmalla seuraavasti. --cluster create mahdollistaa klusterin luomisen ja --cluster-replicas 1 tarkoittaa yhden replikan luomista isäntäkohtaa kohden.

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

Huomaa, että ensimmäiset 6 solmua pidetään isäntänä (M) ja kolmea seuraavaa orjaa (S). koodi>. Ensimmäinen orja eli 10.42.0.200:6379 replikoi ensimmäisen isännän eli 10.42.0.247:6379, toinen orja replikoi toisen isännän tässä järjestyksessä.

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

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 luominen on onnistunut, suorita seuraava komento missä tahansa isännässä (määritä sen IP-osoite -h-lipulla) luetellaksesi kaikki klusterin solmut.

redis-cli -h 10.42.0.247 -p 6379 cluster nodes

Sinun pitäisi pystyä näkemään kaikki klusterin solmut, ja orjat osoittavat isäntänsä, kuten seuraavassa kuvakaappauksessa näkyy.

Eri kentät ovat tässä järjestyksessä: solmun tunnus, IP-osoite:portti, liput, viimeinen ping lähetetty, viimeinen pong vastaanotettu, konfigurointiaika, linkkitila, paikat (isäntäkoneille).

Vaihe 4: Redis Cluster Failoverin testaus

12. Tässä osiossa esittelemme, kuinka klusterin vikasietoa testataan. Ensinnäkin huomioidaan mestarit.

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

Ota myös huomioon Redisin orjat.

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

13. Lopetetaan seuraavaksi Redis-palvelu jossakin 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 epäonnistuneessa tilassa ja sen orja 10.42.0.21:6379 on ylennetty isäntä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: Testaa tietojen replikaatiota Redis-klusterissa

15. Tässä viimeisessä osiossa kerrotaan, kuinka klusterin tietojen replikointi tarkistetaan. Luomme avaimen ja arvon yhdelle isännistä ja yritämme sitten lukea sen kaikista klusterin solmuista seuraavasti. Käytä -c-kytkintä ottaaksesi klusterin tuki käyttöön redis-cli-apuohjelmassa 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 Cluster on ensisijainen tapa saada automaattinen jakaminen, replikointi ja korkea saatavuus. /etc/redis.conf-tiedoston loppuosassa on monia muita hyvin dokumentoituja määritysparametreja. Löydät lisätietoja virallisesta dokumentaatiosta: Redis-klusterin opetusohjelma ja Redis-klusterin spesifikaatio.

Tämä vie meidät kolmiosaisen Redis-opetussarjan loppuun. Alla olevalla palautelomakkeella voit lähettää kysymyksiä tai kommentteja.