Redis ist eine besonders schnelle Open-Source-Datenbank dank ihrer Daten, die sowohl im Arbeitsspeicher als auch auf der Festplatte gespeichert werden können. Es stellt eine der besten Lösungen für die Entwicklung von Anwendungen dar, die eine Datenverarbeitung in Echtzeit erfordern.
Dieses Tutorial bietet eine detaillierte Erklärung zur Installation und Konfiguration der Redis-Datenbank auf einem Server mit Linux CentOS 7-Distribution und zur Verbesserung Ihrer Datenbanksicherheit und zum Erstellen einer Replikatinstallation.
Verbinden Sie sich zunächst über eine SSH-Verbindung mit Ihrem Server. Wenn Sie dies noch nicht getan haben, wird empfohlen, unserer Anleitung zu folgen, um sich sicher mit dem SSH-Protokoll zu verbinden. Im Falle eines lokalen Servers gehen Sie zum nächsten Schritt und öffnen Sie das Terminal Ihres Servers.
Installation von Redis
Um Redis zu installieren, verwenden Sie einfach den Yum-Paketmanager:
$ sudo yum install redis
Sobald die Installation abgeschlossen ist, starten Sie den Dienst und installieren Sie ihn auf dem System:
$ sudo systemctl start redis
$ sudo systemctl enable redis
Prüfung der Installation
Um die korrekte Installation von Redis zu überprüfen, verwenden Sie den Befehlszeilenclient redis-cli und legen Sie einen Testwert in Ihrer Datenbank fest:
$ redis-cli set test 123456
OK
Wenn alles korrekt funktioniert, antwortet der Server mit "OK". Prüfen Sie daher, ob der Wert korrekt gespeichert wurde:
$ redis-cli get test
"123456"
Redis gibt den gerade gespeicherten Wert zurück (in diesem Fall den String "123456"). Löschen Sie dann diesen Testschlüssel:
$ redis-cli del test
(integer) 1
Verbesserung der Sicherheit Ihrer Installation
Die anfängliche Konfiguration von Redis ermöglicht es Ihnen, sich nur von einer lokalen Adresse aus mit der Datenbank zu verbinden, ohne dass ein Passwort oder eine Form der Authentifizierung erforderlich ist.
Alle Redis-Einstellungen werden von der Konfigurationsdatei in /etc/redis.conf gelesen und können jederzeit und in Echtzeit überschrieben werden, indem Sie eine beliebige Client-Software über die Befehle CONFIG SET / CONFIG GET verwenden. Beachten Sie jedoch, dass die vom Client geänderten Einstellungen nicht in der Konfigurationsdatei gespeichert werden und beim nächsten Start von Redis verloren gehen. .
Um Ihre Datenbanksicherheit zu verbessern, legen Sie ein Authentifizierungspasswort fest, indem Sie den requirepass-Eintrag in der Konfigurationsdatei ändern oder einfügen:
requirepass 5eMX822gZ0lCGdd81rSIrTvPCUfeEFYAUIgyJNs4
Das Passwort wird in der Klartext-Konfigurationsdatei gespeichert und muss lang genug sein, um Bruteforce-Angriffen standzuhalten, da Redis mehrere Verbindungen pro Sekunde verarbeiten kann.
Unter den wichtigsten Einstellungen finden wir auch den Bind, der festlegt, welche Adresse Redis haben muss, um den Empfang von Verbindungen zu ermöglichen:
bind 127.0.0.1
Nur die lokale Adresse 127.0.0.1 ist standardmäßig aktiviert. Wenn Sie den Redis-Server jedoch nach außen freigeben müssen, können zusätzliche Adressen hinzugefügt werden, z. B.:
bind 127.0.0.1 51.125.63.201
Ein weiterer häufiger Fehler besteht darin, den Standardport zum Abhören eingehender Verbindungen zu belassen. Dadurch kann jede Port-Scanning-Software den Redis-Server finden.
port 2589
Durch Ändern des Ports von 6379 auf 2589 kann der Redis-Dienst ausgeblendet und Ihrer Installation eine zusätzliche Sicherheitsstufe hinzugefügt werden.
Nachdem Sie alle Änderungen an der Konfigurationsdatei vorgenommen haben, starten Sie den Dienst neu:
$ sudo systemctl restart redis
Um die gerade angelegten Parameter zu überprüfen, verwenden Sie redis-cli, um beispielsweise die aktuellen Bindungsparameter zu erhalten, indem Sie den neu konfigurierten Port und das oben festgelegte Passwort verwenden:
$ redis-cli -a 5eMX822gZ0lCGdd81rSIrTvPCUfeEFYAUIgyJNs4 -p 2589 config get bind
Der Server sollte mit den erforderlichen Parametern antworten:
1) "bind"
2) "127.0.0.1"
Erstellen einer replizierten Installation
Mit Redis können Sie in wenigen Schritten einen Replikat-(Kopie-)Server konfigurieren. Im Vergleich zur Master-Version wird dieser Replica-Server in Echtzeit aktualisiert.
Durch diese Konfiguration kann ein Backup-Service zum Auslesen bei Ausfall des Hauptservers angeboten werden.
Nachdem Sie sich mit dem Slave-Sekundärserver verbunden haben, schließen Sie die Installation von Redis mit yum ab:
$ sudo yum install redis
Die gleichen Sicherheitsverfahren im vorherigen Absatz können auch angewendet werden, um diese Redis-Instanz zu sichern. Im folgenden Beispiel werden die Standardparameter verwendet.
Um mit dem Hauptserver (Master) synchronisiert zu werden, muss der Slave-Rechner korrekt mit dem Master-Rechner kommunizieren. Stellen Sie sicher, dass die öffentliche IP-Adresse in der Konfiguration des Master-Rechners vorhanden ist (Bind-Parameter) und überprüfen Sie, ob die Verbindung funktioniert, indem Sie den Befehl vom Slave-Rechner aus starten:
$ redis-cli -h [MASTER_IP_ADDRESS] -a [PASSWORD_MASTER] ping
PONG
Wenn eine Antwort auf den Ping-Befehl gegeben wird, kann der Slave korrekt kommunizieren.
Fahren Sie dann mit der eigentlichen Konfiguration des Slaves fort, indem Sie die folgenden Parameter in der Konfigurationsdatei /etc/redis.conf ändern:
# 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
Speichern Sie nach Abschluss die Konfiguration und starten Sie den Redis-Slave-Server, indem Sie Folgendes eingeben:
$ sudo systemctl start redis
$ sudo systemctl enable redis
Um zu überprüfen, ob die Synchronisation korrekt aktiviert wurde, verwenden Sie tail, um die letzten Zeilen der Dienstprotokolldatei anzuzeigen:
$ 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
Die letzten Zeilen bestätigen, dass die Synchronisierung aktiv ist und ordnungsgemäß funktioniert.
Führen Sie dann einen echten Test durch, indem Sie einen Wert in Ihrer Datenbank festlegen und überprüfen, ob er vom Masterserver korrekt gelesen wird.
Stellen Sie den Testschlüssel vom Masterserver ein:
$ redis-cli -a password set test hello
OK
derselbe Wert wird vom Slave-Server gelesen:
$ redis-cli get test
"hello"
Wie Sie sehen können, haben sowohl Master als auch Slave denselben Wert gespeichert. Das bedeutet, dass das Replikat korrekt funktioniert!