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:
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:
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.
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:
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:
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!