Heim  >  Artikel  >  Datenbank  >  So erstellen Sie einen Redis-Cluster in CentOS7

So erstellen Sie einen Redis-Cluster in CentOS7

WBOY
WBOYnach vorne
2023-05-26 13:34:061203Durchsuche

1. Manuelle Konstruktion ) Konfigurationsdateien vorbereiten

cluster
├── 9001
│   ├── data
│   │   ├── appendonly.aof
│   │   └── nodes-9001.conf
│   ├── redis-9001.conf
│   └── redis-9001.log
├── 9002
│   ├── data
│   │   ├── appendonly.aof
│   │   └── nodes-9002.conf
│   ├── redis-9002.conf
│   └── redis-9002.log
...

Kopieren und ersetzen: :%s/9001/9002/g

(3) Starten Sie den Dienst

cd cluster
mkdir -p 9001/data 9002/data 9003/data 9004/data 9005/data 9006/data
cp ../redis-6.0.9/redis.conf 9001/redis-9001.conf
vi 9001/redis-9001.conf
    port 9001
    daemonize yes
    bind 192.168.11.40
    dir /root/cluster/9001/data/
    pidfile /var/run/redis_9001.pid
    cluster-enabled yes  # 集群模式运行
    cluster-config-file nodes-9001.conf
    cluster-node-timeout 15000
    # appendonly yes
    logfile "/root/cluster/9001/redis-9001.log"

Nach dem Start wird automatisch eine

Cluster-Konfigurationsdatei erstellt Knoten im Datenverzeichnis -9001.conf. Wenn sich die Knoteninformationen im Cluster ändern, speichert der Knoten den Clusterstatus automatisch in dieser Konfigurationsdatei. Es ist am besten, ihn nicht manuell zu ändern. Wenn beim Start eine Cluster-Konfigurationsdatei vorhanden ist, verwendet der Knoten den Inhalt der Konfigurationsdatei, um die Cluster-Informationen zu initialisieren.

/usr/local/redis/bin/redis-server /root/cluster/9001/redis-9001.conf
...
tail 9001/redis-9001.log
kill `cat /var/run/redis_9001.pid`

Knoten-ID: eine 40-stellige hexadezimale Zeichenfolge, die zur eindeutigen Identifizierung eines Knotens im Cluster verwendet wird. Die Knoten-ID wird nur einmal erstellt und die laufende ID ändert sich bei jedem Neustart.

2 Knoten-Handshake
$ cat 9001/data/nodes-9001.conf
8ccdb0963411ebd05ce21952bdd4b7597825afdc :0@0 myself,master - 0 0 0 connected
vars currentEpoch 0 lastVoteEpoch 0
$ /usr/local/redis/bin/redis-cli -h 192.168.11.40 -p 9001
192.168.11.40:9001> cluster nodes
8ccdb0963411ebd05ce21952bdd4b7597825afdc :9001@19001 myself,master - 0 0 0 connected

cluster meet ist ein

Asynchroner:%s/9001/9002/g

(3) 启动服务

$ /usr/local/redis/bin/redis-cli -h 192.168.11.40 -p 9001
192.168.11.40:9001> cluster meet 192.168.11.40 9002
OK
192.168.11.40:9001> cluster nodes
8ccdb0963411ebd05ce21952bdd4b7597825afdc 192.168.11.40:9001@19001 myself,master - 0 0 0 connected
5786e3237c7fa413ed22465d15be721f95e72cfa 192.168.11.40:9002@19002 master - 0 1620703357871 1 connected

启动后会自动在 data 目录创建集群配置文件nodes-9001.confBefehl. Die Funktion besteht darin, dass Knoten Statusdateninformationen untereinander austauschen, unmittelbar nach der Ausführung zurückkehren und intern eine Handshake-Kommunikation mit dem Zielknoten durchführen:

Knoten 9001 erstellt den 9002-Knoten Informationsobjekt lokal und sendet die Meet-Nachricht

Knoten 9002 Speichern Sie nach dem Empfang der Meet-Nachricht die 9001-Knoteninformationen und antworten Sie auf die Pong-Nachricht

Danach kommunizieren die Knoten 9001 und 9002 regelmäßig über Ping/ Pong-Nachrichten

  • Im Cluster

    jeder
  • Knoten kann den Cluster-Meet-Befehl ausführen. Um einem neuen Knoten beizutreten, wird der Handshake-Status innerhalb des Clusters durch Nachrichten weitergegeben: Andere Knoten erkennen automatisch den neuen Knoten und initiieren den Handshake-Prozess
  • Nachdem der Knoten den Handshake hergestellt hat, kann der Cluster nicht normal arbeiten. Zu diesem Zeitpunkt befindet sich der Cluster im

    Offline-Zustand und das Lesen und Schreiben aller Daten war verboten. Da die Slots nicht den Knoten zugewiesen sind, kann der Cluster die Zuordnung der Slots zu den Knoten nicht abschließen. Erst wenn alle Slots
  • Knoten zugewiesen sind, geht der Cluster in den Online-Status über.
  • Slots zuweisen:

    192.168.11.40:9001> set hello world
    (error) CLUSTERDOWN Hash slot not served
    192.168.11.40:9001> cluster info
    cluster_state:fail
    cluster_slots_assigned:0
    cluster_slots_ok:0
    cluster_slots_pfail:0
    cluster_slots_fail:0
    cluster_known_nodes:6
    cluster_size:0
    ...
  • Cluster-Informationen anzeigen:
/usr/local/redis/bin/redis-cli -h 192.168.11.40 -p 9001 cluster addslots {0..5461}
/usr/local/redis/bin/redis-cli -h 192.168.11.40 -p 9002 cluster addslots {5462..10922}
/usr/local/redis/bin/redis-cli -h 192.168.11.40 -p 9003 cluster addslots {10923..16383}

Jeder Knoten, der für die Verarbeitung von Slots verantwortlich ist, sollte einen Slave-Knoten haben, um sicherzustellen, dass er wiederhergestellt werden kann, wenn Es schlägt fehl. Automatisches Failover. Der zum ersten Mal gestartete Knoten und der dem Slot zugewiesene Knoten sind beide Master-Knoten. Der Slave-Knoten ist für das Kopieren der Master-Knoten-Slot-Informationen und der zugehörigen Daten verantwortlich. 2. Verwenden Sie redis-trib.rb um einen Cluster zu erstellen (veraltet)

【Verwenden Sie redis-cli, um einen Cluster nach Redis5.0 zu erstellen】

redis-trib.rb ist ein in Ruby implementiertes Redis-Clusterverwaltungstool. Clusterbezogene Befehle werden intern verwendet, um allgemeine Betriebs- und Wartungsvorgänge wie Clustererstellung, Inspektion, Slot-Migration und Balancing zu vereinfachen.

Ruby-Umgebung installieren
192.168.11.40:9001> cluster info
cluster_state:ok
cluster_slots_assigned:16384
cluster_slots_ok:16384
cluster_slots_pfail:0
cluster_slots_fail:0
cluster_known_nodes:6
cluster_size:3
...
192.168.11.40:9001> cluster nodes
cebb7ed63d469748d4015ede6b4a0f5ff59c9322 192.168.11.40:9006@19006 master - 0 1620704406746 0 connected
1b7785f80c4712c6ba4abd71cc93027fa85a02f8 192.168.11.40:9005@19005 master - 0 1620704406000 4 connected
8ccdb0963411ebd05ce21952bdd4b7597825afdc 192.168.11.40:9001@19001 myself,master - 0 1620704404000 2 connected 0-5461
9408059de8b2dd712f0a9381a3b7aad561aef206 192.168.11.40:9004@19004 master - 0 1620704407753 5 connected
85ceb9826e8aa003169c46fb4ba115c72002d4f9 192.168.11.40:9003@19003 master - 0 1620704407000 3 connected 10923-16383
5786e3237c7fa413ed22465d15be721f95e72cfa 192.168.11.40:9002@19002 master - 0 1620704408763 1 connected 5462-10922

Lösen Sie es ( openssl (ähnlich zu openssl)

192.168.11.40:9004> cluster replicate 8ccdb0963411ebd05ce21952bdd4b7597825afdc
OK
192.168.11.40:9005> cluster replicate 5786e3237c7fa413ed22465d15be721f95e72cfa
OK
192.168.11.40:9006> cluster replicate 85ceb9826e8aa003169c46fb4ba115c72002d4f9
OK
Installieren Sie redis-trib.rb
192.168.11.40:9001> cluster nodes
cebb7ed63d469748d4015ede6b4a0f5ff59c9322 192.168.11.40:9006@19006 slave 85ceb9826e8aa003169c46fb4ba115c72002d4f9 0 1620704825926 3 connected
1b7785f80c4712c6ba4abd71cc93027fa85a02f8 192.168.11.40:9005@19005 slave 5786e3237c7fa413ed22465d15be721f95e72cfa 0 1620704825000 1 connected
8ccdb0963411ebd05ce21952bdd4b7597825afdc 192.168.11.40:9001@19001 myself,master - 0 1620704824000 2 connected 0-5461
9408059de8b2dd712f0a9381a3b7aad561aef206 192.168.11.40:9004@19004 slave 8ccdb0963411ebd05ce21952bdd4b7597825afdc 0 1620704824921 2 connected
85ceb9826e8aa003169c46fb4ba115c72002d4f9 192.168.11.40:9003@19003 master - 0 1620704824000 3 connected 10923-16383
5786e3237c7fa413ed22465d15be721f95e72cfa 192.168.11.40:9002@19002 master - 0 1620704823914 1 connected 5462-10922
2. Erstellen Sie einen Cluster
wget https://cache.ruby-lang.org/pub/ruby/2.7/ruby-2.7.3.tar.gz
tar -zxvf ruby-2.7.3.tar.gz
cd ruby-2.7.3
./configure --prefix=/usr/local/ruby
make
make install
cd /usr/local/ruby
cp bin/ruby /usr/local/bin
cp bin/gem /usr/local/bin

schließt automatisch den Knoten-Handshake und den Slot-Zuweisungsprozess ab

wird es versuchen Stellen Sie am besten sicher, dass die Master- und Slave-Knoten nicht auf demselben Computer zugewiesen sind. Die Reihenfolge der Knotenliste wird verwendet, um die Master-Slave-Rolle zu bestimmen. Der Master-Knoten ist zuerst und dann der Slave-Knoten Knoten, der keine Slots/Daten enthält, andernfalls wird die Erstellung des Clusters abgelehnt. 3. Verwenden Sie redis-cli, um einen Cluster zu erstellen

Das obige ist der detaillierte Inhalt vonSo erstellen Sie einen Redis-Cluster in CentOS7. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:yisu.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen