Oktatóanyagok > Hogyan telepíthető a Redis CentOS 7-re?

Hogyan telepíthető a Redis CentOS 7-re?

Közzétéve: 16 január 2020

CentOS Database Redis

A Redis különösen gyors nyílt forráskódú adatbázis, köszönhetően az adatoknak, amelyeket mind a lemez memóriájába menthetünk. Ez az egyik legjobb megoldás valósidejű adatfeldolgozást igénylő alkalmazások fejlesztésére.

Ez az oktatóanyag részletes leírást nyújt a Redis adatbázis telepítéséről és konfigurálásáról a Linux CentOS 7 disztribúcióval rendelkező kiszolgálóra, valamint az adatbázis biztonságának javítására és a replika telepítésének létrehozására.

Először csatlakozzon a szerverhez SSH kapcsolaton keresztül. Ha még nem tette meg, akkor ajánlott átböngésznie a Hogyan javítható az SSH biztonság az Ubuntu 18.04-en? útmutatónkat a folyamat megkezdése előtt. Helyi szerver esetén folytassa a következő lépéssel, és nyissa meg a szerver terminált.

A Redis telepítése

A Redis telepítéséhez csak használja a yum csomagkezelőt:

$ sudo yum install redis

A telepítés befejezése után indítsa el a szolgáltatást és telepítse a rendszerre:

$ sudo systemctl start redis

$ sudo systemctl enable redis

A telepítés ellenőrzése

A Redis helyes telepítésének ellenőrzéséhez használja a redis-cli parancssori klienst, beállítva egy tesztértéket az adatbázisban:

$ redis-cli set test 123456

OK

Ha minden helyesen működik, akkor a szerver az "OK" jelzéssel válaszol. Ezért ellenőrizze, hogy az értéket helyesen mentette-e:

$ redis-cli get test

"123456"

A Redis visszaadja az éppen mentett értéket (ebben az esetben a "123456" karakterlánc). Ezután törölje ezt a tesztkulcsot:

$ redis-cli del test

(integer) 1

A telepítés biztonságának javítása

A Redis kezdeti konfigurációja lehetővé teszi, hogy csak lokáli címről csatlakozzon az adatbázishoz, jelszó vagy hitelesítési forma nélkül. 

Az összes Redis beállítást a /etc/redis.conf konfigurációs fájl olvassa, és bármikor, valós időben felülírható, bármilyen kliensszoftver segítségével a CONFIG SET / CONFIG GET parancsokon keresztül. Ne feledje azonban, hogy az ügyfél által módosított beállítások nem kerülnek mentésre a konfigurációs fájlba, és a Redis következő indításakor elvesznek.

Az adatbázis biztonságának javítása érdekében állítsa be a hitelesítési jelszót a requirepass módosításával vagy beillesztésével a konfigurációs fájlba:

requirepass 5eMX822gZ0lCGdd81rSIrTvPCUfeEFYAUIgyJNs4

A jelszót a sima szöveges konfigurációs fájlba menti, és elég hosszúnak kell lennie ahhoz, hogy ellenálljon a bruteforce támadásoknak, mivel a Redis másodpercenként több kapcsolatot képes kezelni.

A legfontosabb beállítások között megtaláljuk azt a bindot is, amely beállítja azt, amelynek a Redis címen lehetővé kell tennie a kapcsolatok fogadását:

bind 127.0.0.1

Alapértelmezés szerint csak a 127.0.0.1 helyi cím van engedélyezve. Ha azonban a Redis szervert ki kell nyitnia kívülről, további címeket adhat hozzá, például:

bind 127.0.0.1 51.125.63.201

Egy másik általános hiba az, hogy az alapértelmezett portot a bejövő kapcsolatok hallgatására hagyja. Ez lehetővé teszi, hogy bármilyen portkereső szoftver megtalálhassa a Redis szervert.

port 2589

Ha a portot 6379-ről 2589-re változtatja, a Redis szolgáltatást elrejtheti, és további biztonságot nyújthat a telepítéséhez.

A konfigurációs fájl összes módosításának elvégzése után indítsa újra a szolgáltatást:

$ sudo systemctl restart redis

Az éppen alkalmazott paraméterek ellenőrzéséhez a redis-cli segítségével megkaphatja például az aktuális bind paramétert az új konfigurált port és a fent megadott jelszó használatával:

$ redis-cli -a 5eMX822gZ0lCGdd81rSIrTvPCUfeEFYAUIgyJNs4 -p 2589 config get bind

A kiszolgálónak a szükséges paraméterekkel kell válaszolnia:

1) "bind"

2) "127.0.0.1"

Egy replika telepítés létrehozása

A Redis lehetővé teszi a replika (másolás) kiszolgáló konfigurálását néhány lépésben. A mester verzióhoz képest ez a replikakiszolgáló valós időben frissül. 

Ezen a konfiguráción keresztül biztonsági mentési szolgáltatás nyújtható az olvasáshoz a fő szerver hibás működése esetén.

A másodlagos kiszolgálóhoz való csatlakozás után fejezze be a Redis telepítését a yum használatával:

$ sudo yum install redis

Az előző bekezdés biztonsági eljárásai alkalmazhatók ezen Redis példány biztosítására is. A következő példában az alapértelmezett paramétereket fogjuk használni.

A fő (mester) szerverrel történő szinkronizáláshoz a másodlagos gépnek helyesen kell kommunikálnia a mesterrel. Győződjön meg arról, hogy a nyilvános IP-cím jelen van-e a főgép konfigurációjában (bind paraméter), és ellenőrizze, hogy a kapcsolat működik-e, ha a parancsot a szolga gépről indítja:

$ redis-cli -h [MASTER_IP_ADDRESS] -a [PASSWORD_MASTER] ping

PONG

Ha a ping parancsra válasz érkezik, a másodlagos gép képes megfelelően kommunikálni.

Ezután folytassa a slave tényleges konfigurálását az alábbi paraméterek módosításával a /etc/redis.conf konfigurációs fájlban:

# If it is there, specify the master connection password too. 
masterauth password
                # The slaveof directory specifies the master connection parameters (ADDRESS_IP PORT) 
slaveof 195.231.4.71 6379

A befejezés után mentse el a konfigurációt, és indítsa el a Redis slave kiszolgálót:

$ sudo systemctl start redis

$ sudo systemctl enable redis

A szinkronizálás megfelelő aktiválásának ellenőrzéséhez a tail segítségével megtekintheti a szolgáltatási naplófájl utolsó sorait:

$ tail /var/log/redis/redis.log

6345:S 02 Jul 10:53:46.695 * MASTER <-> SLAVE sync: receiving 77 bytes from master

6345:S 02 Jul 10:53:46.695 * MASTER <-> SLAVE sync: Flushing old data

6345:S 02 Jul 10:53:46.695 * MASTER <-> SLAVE sync: Loading DB in memory

6345:S 02 Jul 10:53:46.695 * MASTER <-> SLAVE sync: Finished with success

Az utolsó néhány sor megerősíti, hogy a szinkronizálás aktív és megfelelően működik.

Ezután végezzen egy igazi tesztet, állítson be egy értéket az adatbázisban, és ellenőrizze, hogy a főkiszolgáló helyesen olvassa-e azt.

Állítsa be a tesztkulcsot a főkiszolgálón:

$ redis-cli -a password set test hello

OK

Ugyanazt az értéket olvassa be a slave szerverről:

$ redis-cli get test

"hello"

Mint láthatja, mind a master, mind a slave ugyanazt az értéket tárolta. Ez azt jelenti, hogy a replika helyesen működik!