Kuinka asentaa Redis-replikaatio (jossa klusteritila on poistettu käytöstä) CentOS 8:ssa - Osa 1


Redis (Remote Dictionary Server) on erittäin suosittu ja laajalti käytetty avoimen lähdekoodin nopea, hajautettu ja tehokas muistissa oleva avainarvotietokanta/tietorakennepalvelin.

Se tarjoaa runsaasti ominaisuuksia, jotka tekevät siitä tehokkaan monenlaisiin käyttötapauksiin: tietokantana, välimuistikerroksena, viestivälittäjänä tai jonona; soveltuu verkkosovelluksiin, chat- ja viestisovelluksiin, pelaamiseen, reaaliaikaiseen data-analytiikkaan ja paljon muuta.

Se tukee joustavia tietorakenteita, isäntä-orja-asynkronista replikointia lukusuorituskyvyn skaalaamiseksi ja tietojen katoamisen estämiseksi, asiakaspuolen sirpalointia kirjoitussuorituskyvyn skaalaamiseksi, kahta säilyvyyden muotoa muistissa olevien tietojen kirjoittamiseen levylle kompaktissa muodossa, klusterointia ja osiointi. Siinä on myös automaattisia vikasietotoimintoja korkean käytettävyyden käyttöönottamiseksi Redis Sentinelin, Lua-komentosarjan, transaktioiden ja monien muiden kautta.

Koska EI SQL:ää tai ei-relaatiotietokanta, Redis tarjoaa suorituskykyetuja perinteisiin tietokantajärjestelmiin verrattuna (kuten MySQL/MariaDB, PostgreSQL jne.), koska kaikki sen tiedot sijaitsevat tai tallennetaan muistiin, joten ne ovat helposti sovelluksen käytettävissä, kun taas perinteisten tietokantojen on kirjoitettava kaikki tiedot levylle tai luettava sieltä tai ulkoisesta lähteestä.

Redisistä on tullut yhä yleisempi valinta välimuistiin, mikä mahdollistaa välimuistissa olevien tietojen uudelleenkäytön (jotka on tallennettu sovelluksen päämuistitilaan) sen sijaan, että usein kysyttäisiin tietokannasta usein käytettyjä tietoja. Se on siis loistava kumppani RDMS:lle (Relational Database Management Systems), joka parantaa sovelluksen suorituskykyä.

Tässä kolmiosaisessa Redis-oppituntisarjassa kerromme, kuinka voit määrittää ja käyttää joitain Rediksen keskeisiä ominaisuuksia, joita ovat replikointi, korkea saatavuus Redis Sentinel- ja >Redis Cluster, artikkelit ovat:

Tässä oppaassa kerrotaan, kuinka Redis-replikaatio määritetään (jossa Cluster-Mode Disabled) CentOS 8 Linuxissa, mukaan lukien kuinka Redis asennetaan ja pääkoneen asetukset määritetään. ja replikoita ja testaa replikaatiota.

Tärkeää: Redis-klusterilla (eli replikointiklusterilla), jossa klusteritila on poistettu käytöstä, on yksi solmuryhmä ( esim. isäntä ja yksi tai kaksi kopiota), jolloin Redis-klusteri, jossa klusteritila on käytössä, voi koostua kahdesta tai useammasta solmuryhmästä (esim. kolmesta isännästä, joissa kussakin on orja tai kaksi).

Edellytykset:

  1. Palvelimet, joissa on CentOS 8 -asennus

Testiympäristön asetukset

Redis Master Server: 10.42.0.247
Redis Replica1/Slave1: 10.42.0.21
Redis Replica2/Slave2: 10.42.0.34

Yllä olevalla asetuksella (jossa on yksi luku/kirjoitettava ensisijainen/pääsolmu ja kaksi vain luku -replikasolmua) meillä on yksi solmuryhmä, joka sisältää kaikki klusterin tiedot kussakin solmussa. Kun orja muodostaa yhteyden isäntään, se vastaanottaa alkuperäisen kopion koko tietokannasta ja kaikki orjalla aiemmin olleet tiedot hylätään.

Lisäksi asiakas voi kirjoittaa vain isäntäkoneelle, mutta lukea mistä tahansa klusterin solmusta. Ja kun kirjoituksia suoritetaan isännällä, ne leviävät kaikkiin kytkettyihin orjiin orjatietojoukon päivittämiseksi reaaliajassa.

Vaihe 1: Redisin asentaminen CentOS 8:aan

1. Aluksi kirjaudu kaikkiin CentOS 8 -solmuihin SSH:n kautta ja asenna sitten Redis-paketti kaikkiin solmuihin (pää- ja replikoihin). ) käyttämällä DNF-paketinhallintaa kuvan mukaisesti.


dnf install @redis

2. Kun Redis-paketin asennus on valmis, käynnistä Redis-palvelu, ota se käyttöön automaattisesti jokaisen järjestelmän käynnistyksen yhteydessä ja tarkista, onko se käynnissä seuraavasti.

systemctl start redis
systemctl enable redis
systemctl status redis

3. Voit myös varmistaa, että Redis-palvelin on toiminnassa, tarkistamalla kuunteluportit ss-komennolla seuraavasti.

ss -ltpn | grep redis-server

Vaihe 2: Redis Master Serverin määrittäminen

4. Redis määritetään käyttämällä /etc/redis.conf-määritystiedostoa, joka on itse dokumentoitu esimerkkimääritystiedosto. Luo ensin varmuuskopio alkuperäisestä tiedostosta ja avaa se sitten muokkausta varten valitsemallasi komentorivieditorilla.

cp /etc/redis.conf /etc/redis.conf.org
vi /etc/redis.conf

5. Oletuksena Redis-esiintymä on määritetty kuuntelemaan ja hyväksymään yhteyksiä palautusliittymässä sidosdirektiivin avulla. Kommunikoidakseen replikoiden kanssa isäntälaite on määritettävä kuuntelemaan IPv4 -palautusosoitetta ja sen LAN-IP-osoitetta, eli 10.42.0.247.

bind 127.0.0.1 10.42.0.247

6. Aseta seuraavaksi suojatun tilan parametriksi no salliaksesi yhteydenpidon replikoiden kanssa kuvan mukaisesti.

protected-mode no

Lisäksi Redis kuuntelee porttia 6379, joka on asetettu port-direktiivin avulla. Tämä on tietoportti sovellusliittymien tai CLI-asiakkaiden kanssa viestimiseen.

port 6379

7. Master-replica-tiedonsiirron turvaamiseksi valinnaisesti voimme suojata pääkoneen käyttämällä requirepass-direktiiviä, jotta asiakkaiden/replikoiden on anna todennussalasana ennen komentojen suorittamista tai replikaation synkronointiprosessin aloittamista, muuten isäntä hylkää asiakas-/replikapyynnön (muista asettaa suojattu salasana).

Käytämme seuraavaa vaihtoehtoa esittelytarkoituksiin näyttääksemme, kuinka se toimii.

requirepass  Securep@55Here

8. Redis-lokit tallennetaan myös /var/log/redis/redis.log-tiedostoon, joka asetetaan logfile-direktiivillä. ja oletuspalvelimen monisanaisuustaso on huomautus, joka määritellään loglevel-parametrilla.

loglevel  notice
logfile  /var/log/redis/redis.log

9. Koska systemd on CentOS 8:n oletusjärjestelmän ja palvelun hallinta, voit määrittää Redisin olemaan vuorovaikutuksessa systemd-valvontapuuhun asettamalla supervised-parametrin arvoksi systemd.

supervised systemd

10. Kun olet tehnyt kaikki tarvittavat asetukset, tallenna tiedosto ja sulje se. Käynnistä sitten Redis-palvelu uudelleen ottaaksesi käyttöön uudet muutokset.

systemctl daemon-reload
systemctl restart redis

11. Käyttääksemme Redis-palvelinta meidän on käytettävä redis-cli-komentoa (komentoriviliittymä redis-palvelimeen). Oletusarvoisesti se muodostaa yhteyden localhost-palvelimeen (portissa 127.0.0.1 6379). Huomaa, että koska palvelin on suojattu asiakkailta salasanalla, komennon suorittamisen ennen todennusta pitäisi epäonnistua.

Anna todennussalasana auth-komennolla seuraavan kuvakaappauksen mukaisesti.

redis-cli
127.0.0.1:6379> client list
127.0.0.1:6379> AUTH Securep@55Here
127.0.0.1:6379> client list

12. Voit muodostaa yhteyden replikkaan (kun olet määrittänyt ne seuraavassa osiossa kuvatulla tavalla) käyttämällä -h ja -p vaihtoehdot replikan IP-osoitteen/isäntänimen ja portin määrittämiseksi (ei portin 6379 on oltava auki replikan palomuurissa).

redis-cli -h 10.42.0.21 -p 6379

13. Avaa seuraavaksi palomuurissa oleva Redis-palvelimen dataportti salliaksesi saapuvat yhteydet isäntäkoneeseen ja lataa sitten palomuurisäännöt uudelleen komennolla firewall-cmd kuvan mukaisesti.

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

Vaihe 3: Redis Replica/Slave -palvelimien määrittäminen

14. Aseta Redis-esiintymä nopeasti replikoksi lennossa käyttämällä redis-cli-apuohjelmaa ja kutsumalla REPLICAOF komento kuvan mukaisesti.

redis-cli replicaof 10.42.0.247 6379
OR
redis-cli
127.0.0.1:6379> REPLICAOF 10.42.0.247 6379

15. Jos haluat tehdä replikointiyhteydestä pysyvän, sinun on tehtävä seuraavat muutokset määritystiedostoon. Aloita varmuuskopioimalla alkuperäinen tiedosto ja avaa se sitten muokkausta varten.

cp /etc/redis.conf /etc/redis.conf.org
vi /etc/redis.conf

16. Jotta asiakkaat voivat muodostaa yhteyden replikaan tietojen lukemista varten, lisää replikan IP-osoite sidosdirektiiviin.

replica1
bind 127.0.0.1 10.42.0.21

replica2
bind 127.0.0.1 10.42.0.34

Redis-esiintymän asettaminen replikoksi

17. Jos haluat määrittää Redis-esiintymän replicaksi, käytä replicaof-parametria ja aseta pääsolmun IP-osoite (tai isäntänimi) ja portti arvot.

replicaof 10.42.0.247 6379

Replikan asettaminen todentamaan pääkäyttäjälle

18. Seuraavaksi, koska pääesiintymämme on suojattu salasanalla, meidän on asetettava salasana replikan määrityksissä, jotta se voi todentaa isäntäkoneen käyttämällä masterauth-komentoa. parametri.

masterauth Securep@55Here

19. Lisäksi, kun replika menettää yhteyden pääkoneeseen tai kun replikointi on käynnissä, replika määritetään vastaamaan asiakkaan pyyntöihin, mahdollisesti "vanhentunut ". ”tietoja. Mutta jos se on ensimmäinen synkronointi, tietojoukko voi olla vain tyhjä. Tätä toimintaa ohjaa replica-serve-stale-data-parametri.

Ja koska Redis 2.6 -kopiot ovat oletuksena vain luku -tilassa, tätä ohjaa replica-read-only-parametri. Voit tehdä muita replikan kokoonpanon säätöjä sovelluksesi tarpeiden mukaan.

20. Kun olet tehnyt kaikki tarvittavat muutokset, käynnistä Redis-palvelu uudelleen kaikissa replikoissa.

systemctl restart redis

21. Avaa myös palomuurin portti 6379 salliaksesi yhteydet isäntäkoneesta ja asiakkaista replikoihin, ja lataa palomuurisäännöt uudelleen.

firewall-cmd --zone=public --permanenent --add-port=6379/tcp
firewall-cmd --reload

Vaihe 4: Tarkista pääreplikan replikaation tila

22. Kun master-replica-replikoinnin määritys on valmis, voimme tarkistaa, toimivatko asetukset hyvin seuraavasti.

Suorita pääkoneessa seuraavat komennot.

redis-cli
127.0.0.1:6379> AUTH Securep@55Here
127.0.0.1:6379> info replication

23. Tarkista myös replikoiden/orjien replikoinnin tila seuraavasti.

redis-cli
127.0.0.1:6379> info replication

23. Testataan nyt replikointi asettamalla avainarvo pääesiintymään ja tarkistetaan, onko tiedot synkronoitu replikoihin.

Päälliköllä toimi näin:

redis-cli
127.0.0.1:6379> AUTH Securep@55Here
127.0.0.1:6379> set domain 'linux-console.net'

24. Tarkista sitten, onko tiedot synkronoitu replikoihin kuvan mukaisesti.

redis-cli
127.0.0.1:6379> get domain

Pääasteen suojaaminen joidenkin kirjoitusten menettämisen vaaralta

25. Redisissä on ominaisuus, jonka avulla pääesiintymä voi rajoittaa tiettyjen sekuntien määrään tiettyjen sekuntien määrän menetyksen riskiä, jos replikoita ei ole tarpeeksi saatavilla.

Tämä tarkoittaa, että isäntä voi lopettaa kirjoitusten hyväksymisen, jos alle N replikoita on yhdistetty ja joiden viive on pienempi tai yhtä suuri kuin M sekuntia min ohjaamana. -replicas-to-write ja min-replicas-max-lag.

Voit määrittää ne poistamalla kommentit ja asettamalla arvot määritysvaatimustesi mukaisesti tiedostossa /etc/redis.conf seuraavan kuvakaappauksen mukaisesti. Tämä konfiguraatio tarkoittaa, että viimeisestä pingistä replikoihin 10 sekunnin kuluttua, jos verkossa on vähemmän kuin 2 kopiota, pääkone lakkaa hyväksymästä kirjoituksia.

min-replicas-to-write 2
min-replicas-max-lag 10

Löydät lisää vaihtoehtoja lopusta /etc/redis.conf-määritystiedostosta ja lisätietoja replikaatiosta on Redis-dokumentaatiossa.

Seuraavassa artikkelissa kerromme, kuinka Redis määritetään korkeaa käytettävyyttä varten Sentinelin kanssa CentOS 8:ssa. Pysy siihen asti lukittuna ja muista jakaa ajatuksesi ja kysymyksesi alla olevalla kommenttilomakkeellamme, jotta voit tavoittaa meidät.