Implementierung der Clusterkonstruktion im Docker Redis5.0-Cluster

Implementierung der Clusterkonstruktion im Docker Redis5.0-Cluster

Systemumgebung: Ubuntu 16.04LTS

In diesem Artikel werden 6 Docker-Container verwendet, um einen Clustertest für eine einzelne Maschine zu erstellen. Wenn die tatsächliche Umgebung mehrere Maschinen umfasst, können Sie die Anzahl der Container, Portnummern und Cluster-IP-Adressen entsprechend ändern. Für jede Maschine können die gleichen Schritte wie unten beschrieben ausgeführt werden.

Rufen Sie das offizielle Redis-Image ab

Docker-Pull Redis: 5.0

Erstellen von Konfigurationsdateien und Datenverzeichnissen

Erstellen Sie ein Verzeichnis

mkdir ~/redis_cluster
cd ~/redis_cluster

Erstellen Sie eine neue Vorlagendatei sudo vim redis_cluster.tmpl und füllen Sie den folgenden Inhalt aus:

# Redis-Port ${PORT}

# Schutzmodus deaktivieren protected-mode no

# Cluster aktivieren cluster-enabled yes

# Clusterknotenkonfiguration Clusterkonfigurationsdatei nodes.conf

#Timeout Cluster-Knoten-Timeout 5000

# Der IP-Hostmodus des Clusterknotens ist die IP des Hostcomputers
Cluster-Ankündigungs-IP 10.10.100.197

# Cluster-Knoten-Ports 7000 - 7005
Cluster-Ankündigungs-Port ${PORT}
Cluster-Ankündigungsbus-Port 1${PORT}

# Aktivieren Sie den Appendonly-Sicherungsmodus appendonly yes

# Backup jede Sekunde appendfsync everysec

#Ob beim Komprimieren von AOF-Dateien eine Synchronisierung durchgeführt werden soll no-appendfsync-on-rewrite no

# Wenn die aktuelle aof-Dateigröße 100 % der zuletzt umgeschriebenen aof-Dateigröße überschreitet, wird sie erneut umgeschrieben auto-aof-rewrite-percentage 100

# Die Mindestgröße der AOF-Datei vor dem Neuschreiben beträgt standardmäßig 64 MB
Auto-Aof-Rewrite – Mindestgröße 5120 MB

# Deaktivieren Sie das Speichern von Snapshot-Backups ""

Um Konfigurationsdateien und Datenverzeichnisse stapelweise zu erstellen, führen Sie den folgenden Befehl im Terminal aus:

für Port in `seq 7000 7005`; mache \
 mkdir -p ./${port}/conf \
 && PORT=${port} envsubst < ./redis_cluster.tmpl > ./${port}/conf/redis.conf \
 && mkdir -p ./${port}/data; \
Erledigt

Redis-Container stapelweise starten

Die IP-Adresse des Containers verwendet den Hostmodus:

für Port in `seq 7000 7005`; mache \
 docker run -d -it --memory=1G \
 -v ~/redis_cluster/${port}/conf/redis.conf:/usr/local/etc/redis/redis.conf \
 -v ~/redis_cluster/${port}/data:/data \
 --restart immer --name redis-${port} --net host \
 --sysctl net.core.somaxconn=1024 redis:5.0 redis-server /usr/local/etc/redis/redis.conf; \
Erledigt

Dabei begrenzt --memeory=1G die Speichergröße eines einzelnen Docker-Containers auf 1 GB. Wenn diese Grenze überschritten wird, wird der Prozess beendet. Während der Laufzeit kann die Warnung „Speicher ohne Swap begrenzt …“ erscheinen, die ignoriert werden kann. Wenn Sie den Speicher nicht begrenzen müssen, können Sie den Parameter --memeory entfernen.

Erstellen eines Clusters

Geben Sie einen der Container ein:

Docker Exec -it Redis-7000 Bash

Führen Sie nach der Eingabe den folgenden Befehl aus, um einen Cluster zu erstellen:

redis-cli --cluster erstellen 10.10.100.197:7000 10.10.100.197:7001 10.10.100.197:7002 10.10.100.197:7003 10.10.100.197:7004 10.10.100.197:7005 --cluster-replicas 1

Installieren Sie den Befehl „redis-cli“ (überspringen Sie diesen Schritt, wenn Sie ihn bereits haben):

sudo apt installiere Redis-Tools

Nach der Eingabe von „yes“ wird der Cluster erstellt. Beenden Sie Docker und melden Sie sich bei einem der Knoten an, um die Verfügbarkeit des Clusters zu überprüfen:

redis-cli -c -p 7000

Geben Sie Clusterknoten ein, um den Clusterstatus anzuzeigen

127.0.0.1:7000> Clusterknoten
06851aa134d50096d82a434eced9194233b5204e 10.10.100.197:7003@17003 Slave 8b33f273386c9504ef8bd10b005e24825b3b9596 0 1567671901000 4 verbunden
a42297b65f7101fc9e4941ef8a0e65080d1b6338 10.10.100.197:7005@17005 Slave 0aa20378d14e3ef0859815196cbafa67e1001d0e 0 1567671901581 6 verbunden
e7b6a35b1e92f94c225c507ea19f7f0318f0d1c3 10.10.100.197:7002@17002 Master - 0 1567671902582 3 verbunden 10923-16383
0aa20378d14e3ef0859815196cbafa67e1001d0e 10.10.100.197:7000@17000 ich selbst, Meister - 0 1567671901000 1 verbunden 0-5460
8b33f273386c9504ef8bd10b005e24825b3b9596 10.10.100.197:7001@17001 Master - 0 1567671902383 2 verbunden 5461-10922
fe355eed99100197f43d1216d1de82643dd496a5 10.10.100.197:7004@17004 Slave e7b6a35b1e92f94c225c507ea19f7f0318f0d1c3 0 1567671901380 5 verbunden

Festlegen des Clusterkennworts

Warum schreiben Sie das Kennwort nicht in die obigen Schritte, wenn Sie die Vorlagendatei zum stapelweisen Erstellen von Konfigurationsdateien verwenden?

Unabhängig davon, ob in Redis 5.x oder früheren Redis-Versionen Ruby zum Erstellen eines Clusters verwendet wird, gibt es im Prozess zum Erstellen eines Clusters „redis-cli --cluster create“ keine Konfiguration der Kennwortparameter. Daher müssen wir das Kennwort nach dem Erstellen des Clusters festlegen.

Wir verwenden die Config-Set-Methode, um für jeden Knoten dasselbe Kennwort festzulegen (Redis muss nicht neu gestartet werden, es ist nach dem Neustart weiterhin gültig). Fügen Sie vorher allen Redis-Konfigurationsdateien W-Berechtigungen hinzu, da das Kennwort sonst nicht in der Datei gespeichert werden kann.

Beachten Sie, dass der aktuelle Pfad immer noch ~/redis_cluster/ ist:

für Port in `seq 7000 7005`; mache \
 chmod a+w ./${port}/conf/redis.conf; \
Erledigt

Nehmen wir eines als Beispiel:

Melden Sie sich bei einem Knoten an:

redis-cli -c -p 7000

Passwort festlegen:

127.0.0.1:7000> Konfigurationssatz Masterauth 123456
OK
127.0.0.1:7000> Konfigurationssatz requirepass 123456
OK
127.0.0.1:7000>Auth. 123456
OK
127.0.0.1:7000> Konfiguration neu schreiben
OK

Führen Sie den gleichen Vorgang auf den folgenden Geräten durch.

Einfacher Test des Clusters beim Schreiben von Daten

Melden Sie sich bei einem beliebigen Clusterknoten an:

redis-cli -c -p 7003 -a 123456

Daten schreiben:

127.0.0.1:7003> setze va 1
-> Umgeleitet zum Steckplatz [7800] bei 10.10.100.197:7001
OK
10.10.100.197:7001> hol dir va
"1"
10.10.100.197:7001> weiterlesen
(Ganzzahl) 1

Es ist ersichtlich, dass Daten, die von jedem Knoten im Cluster geschrieben werden, von jedem anderen Knoten gelesen werden können.

An diesem Punkt ist der Redis-Cluster erstellt.

Weitere Überlegungen

  • Um vom externen Netzwerk auf Redis zuzugreifen, müssen Sie möglicherweise den entsprechenden Port in der Firewall öffnen.
  • Wenn Sie Container löschen müssen, können Sie dies stapelweise tun:
für Port in `seq 7000 7005`; mache \
 Docker stoppe Redis-${Port};
 Docker rm redis-${port};
Erledigt

Das Obige ist der vollständige Inhalt dieses Artikels. Ich hoffe, er wird für jedermanns Studium hilfreich sein. Ich hoffe auch, dass jeder 123WORDPRESS.COM unterstützen wird.

Das könnte Sie auch interessieren:
  • So erstellen Sie einen Redis-Cluster mit Docker
  • Implementierung eines Redis Master-Slave-Clusters basierend auf Docker
  • Erstellen eines Redis-Clusters auf Docker
  • So stellen Sie eigenständigen Pulsar und geclustertes Redis mit Docker bereit (Entwicklungsartefakt)
  • Verwenden Sie Docker, um einen Redis-Master-Slave-Replikationscluster zu erstellen
  • Beispiel für den schnellen Aufbau eines Redis-Clusters mit Docker
  • So konfigurieren Sie den Redis-Sentinel-Modus in Docker (auf mehreren Servern)
  • Implementierung von Redis mit einem Master, zwei Slaves und drei Sentinels basierend auf Docker
  • Bringen Sie Ihnen bei, wie Sie in 5 Minuten den Redis-Clustermodus und den Sentinelmodus mit Docker erstellen

<<:  Acht gängige SQL-Verwendungsbeispiele in MySQL

>>:  Ajax löst domänenübergreifende Probleme durch Festlegen eines CORS-Antwortheaders, um eine domänenübergreifende Fallstudie zu erreichen

Artikel empfehlen

Kostenloses Tutorial zur Installationskonfiguration der Version MySQL 5.7.18

MySQL wird in eine Installationsversion und eine ...

Einige gängige CSS-Layouts (Zusammenfassung)

Zusammenfassung In diesem Artikel werden die folg...

Der Ansichtsbereich im Meta-Tag steuert das Gerätebildschirm-CSS

Code kopieren Der Code lautet wie folgt: <meta...

Beispielcode zum Bereitstellen eines Spring-Boot-Projekts mit Docker

1. Grundlegender Spring-Boot-Schnellstart 1.1 Sch...

So implementieren Sie Zeilenumbrüche im Texteingabebereich von Textarea

Wenn Sie den Text im Textarea-Eingabebereich umbre...

So installieren und konfigurieren Sie Docker nginx

Laden Sie das Nginx-Image in Docker herunter Dock...

So verwenden Sie den Fuser-Befehl im Linux-System

Was ist Fuser Command? Der Befehl fuser ist ein s...

MySql 5.7.20 Installation und Konfiguration von Daten- und my.ini-Dateien

1. Erster Download von der offiziellen Website vo...