Heim Datenbank Redis Detaillierte grafische Erläuterung der Redis-Hochverfügbarkeitslösung

Detaillierte grafische Erläuterung der Redis-Hochverfügbarkeitslösung

Dec 17, 2019 pm 04:42 PM
redis

Detaillierte grafische Erläuterung der Redis-Hochverfügbarkeitslösung

Verstehen und erstellen Sie einen Redis-Cluster von Grund auf

Einige Entwickler verwenden Redis nur in ihren Anwendungen, z. B. zum Zwischenspeichern von Datenergebnissen. Und jetzt gibt es viele gute Redis-Client-Tools (Redisson), die grundsätzlich eine beträchtliche Anzahl von Funktionen ausführen können, ohne auf den Redis-Befehl zu achten. Daher wird den folgenden Themen möglicherweise nicht genügend Aufmerksamkeit geschenkt:

Wie kann man sich von einer Katastrophe erholen? Das heißt, wenn es ein Problem mit einem bestimmten Redis-Knoten gibt, wie kann die hohe Verfügbarkeit des Dienstes sichergestellt werden?

Wie kann man ihn horizontal erweitern? Wie kann das Leistungsproblem eines einzelnen Redis gelöst werden, wenn die Datenmenge besonders groß ist?

Wie viele Maschinen werden mindestens im Cluster benötigt? Oder mit welchen Technologien und Tools werden Cluster aus mehreren Redis-Knoten aufgebaut

?

Wie erholt man sich von einer Katastrophe?

Redis bietet einen Master-Slave-Hot-Standby-Mechanismus. Die Daten des Master-Servers werden mit dem Slave-Server synchronisiert. Der Status des Master-Servers wird in Echtzeit über Sentinel überwacht und ist für die Auswahl des Master-Servers verantwortlich . Wenn eine Anomalie beim Hauptserver festgestellt wird, wird der Hauptserver gemäß einem bestimmten Algorithmus neu gewählt, der Problemserver aus der verfügbaren Liste entfernt und der Client schließlich benachrichtigt. Der Master-Slave ist eine Eins-zu-Viele-Baumstruktur, wie unten gezeigt:

Detaillierte grafische Erläuterung der Redis-Hochverfügbarkeitslösung

Sentinel

Sentinel ist der Chinese Name von Sentinel: Ein von Redis erstelltes Hochverfügbarkeits-Architekturtool ist selbst ein unabhängiger Prozess und kann mehr als einen Redis-Cluster gleichzeitig überwachen.

Sentinel-Cluster

Aus Gründen der Hochverfügbarkeit muss Sentinel selbst auch Clustering unterstützen. Wenn es nur einen Sentinel gibt, gibt es einen einzigen Problempunkt.

Sentinel-Entscheidung

Sentinels verfügen über eine Mengenkonfiguration, die nur durchgeführt wird, wenn wie viele Sentinels der Meinung sind, dass ein bestimmter Master-Dienst gleichzeitig nicht verfügbar ist. Beispielsweise gibt es insgesamt 5 Sentinels. Wenn die drei Sentinels glauben, dass der Dienst nicht verfügbar ist, entscheiden sie sich für einen Master-Slave-Wechsel. Dadurch können fehlerhafte Wechsel vermieden und die Wechselkosten gesenkt werden, z. B. bei plötzlichen Netzwerkanomalien.

Wie kann man horizontal expandieren?

Ob Redis oder andere Datenbankprodukte: Wenn die Datenkapazität eines einzelnen Knotens eine bestimmte Obergrenze erreicht, wird die Fähigkeit, Dienste für die Außenwelt bereitzustellen, immer schwächer. Redis stellt in höheren Versionen redis-trib.rb zur Implementierung von Clusterfunktionen zur Verfügung. Sie können auch das Drittanbieter-Tool twemproxy verwenden.

Dezentralisierung, jeder Knoten ist gleich

Der Redis-Cluster ist nicht auf Zentralisierung ausgelegt, wodurch Probleme wie ein einzelner Punkt im zentralen Knoten vermieden werden können. Jeder Knoten kann den Status des gesamten Clusters erfassen, und jeder mit ihm verbundene Knoten kann auf alle Schlüssel zugreifen, genau wie Redis mit einem einzelnen Knoten.

Cluster-Schemadiagramm

Ich habe es nach meinem eigenen Verständnis gezeichnet. Bitte weisen Sie darauf hin, wenn es ein Missverständnis gibt.

Detaillierte grafische Erläuterung der Redis-Hochverfügbarkeitslösung

Die Beziehung zwischen Schlüssel und Redis-Knoten

Hasy Solt wird vorgestellt, was auf Chinesisch als Hash-Slot verstanden wird. Insgesamt sind es 16384. Der von uns betriebene Schlüssel verwendet den Modulo-Algorithmus, um zu bestätigen, auf welchen Steckplatz der Schlüssel fällt.

HASH_SLOT = CRC16(key) mod 16384

Es besteht eine bestimmte Beziehung zwischen dem Hash-Slot und dem Knoten, sodass wir den Schlüssel einem bestimmten Redis-Knoten zuweisen können.

Die detaillierte Beziehung kann erneut untersucht werden. Beispielsweise ist Knoten A für Hash-Slots mit den Nummern 0-5000 verantwortlich, Knoten B ist für 5001-1000 verantwortlich.

Erstellen Sie Schritt für Schritt

Beginnen Sie mit dem Aufbau eines Clusters mit drei Mastern und drei Slaves. Das System ist Ubuntu und es wird das von Redis bereitgestellte Cluster-Tool redis-trib.rb verwendet.

Installieren Sie das neueste Redis

Erstellen Sie das Verzeichnis redis_cluster und erstellen Sie 6 Verzeichnisse von 7000 bis 7005

Kopieren Sie redis.conf im Redis-Verzeichnis in die 6 über Medium erstellten Verzeichnisse

分别修改redis.conf文件,对6个文件做类似的修改。

port  7000                                       //端口7000       
bind  127.0.0.1                                  //默认ip为127.0.0.1 需要改为其他节点机器可访问的ip
daemonize    yes                                 //后台运行
pidfile  /var/run/redis_7000.pid                 //pidfile文件对应7000
cluster-enabled  yes                             //开启集群
cluster-config-file  nodes_7000.conf             //集群的配置
cluster-node-timeout  15000                      //请求超时  默认15秒,可自行设置

bind需要注意的就是需要配置为其它机器可以访问的ip,否则无论是创建集群还是客户端连接都会有问题。

启动6个redis

redis-server redis_cluster/7000/redis.conf
redis-server redis_cluster/7001/redis.conf
redis-server redis_cluster/7002/redis.conf
redis-server redis_cluster/7003/redis.conf
redis-server redis_cluster/7004/redis.conf
redis-server redis_cluster/7005/redis.conf

创建集群
redis的src目录下有个redis-trib.rb,将它复制到/usr/local/bin中,然后执行如下脚本:

redis-trib.rb  create  --replicas  1  127.0.0.1:7000 127.0.0.1:7001  127.0.0.1:7002 127.0.0.1:7003  127.0.0.1:7004  127.0.0.1:7005

--replicas后面的1代表从服务器的个数,上面可以理解为前面3个为主服务器,后面三个分别做为从服务器,即三对主从。

执行过程中会遇到提示需要安装ruby,安装完成之后又会提示安装 gem redis。

安装gem redis,折腾了好久,最终发现是因为在国内访问不了某些网站导致通过apt-get install安装不成功,最后通过下载源码的方式安装成功。

Detaillierte grafische Erläuterung der Redis-Hochverfügbarkeitslösung再次执行创建集群的脚本,出现如下提示:

Detaillierte grafische Erläuterung der Redis-Hochverfügbarkeitslösung

输入yes,继续

Detaillierte grafische Erläuterung der Redis-Hochverfügbarkeitslösung

最少需要多少个主服务器?

可能是基于某些约定,集群约定只有当可用节点数大于半数以上时才具备对外提供服务的能力。首先数量一定是奇数,其实必须大于1,所以最少的主服务器数量为3。

测试集群
连接客户端,由于我的所有节点都是在本地,所以不需要输入ip,但需要加-c的参数。redis-cli -c -p 7000

连接成功后,增加一个key

set mykey 123

有一行提示语,指向到端口7002,这说明虽然我们连接的是7000的实例,但通过hash算法最终会将key分配到7002的实例上。

Detaillierte grafische Erläuterung der Redis-Hochverfügbarkeitslösung

再连接7005端口查询下key,测试下是否任意一个实例都可以查询到key

get mykey

显示指向到端口7002

Detaillierte grafische Erläuterung der Redis-Hochverfügbarkeitslösung

更多redis知识请关注redis数据库教程栏目。

Das obige ist der detaillierte Inhalt vonDetaillierte grafische Erläuterung der Redis-Hochverfügbarkeitslösung. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße KI -Werkzeuge

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Clothoff.io

Clothoff.io

KI-Kleiderentferner

Video Face Swap

Video Face Swap

Tauschen Sie Gesichter in jedem Video mühelos mit unserem völlig kostenlosen KI-Gesichtstausch-Tool aus!

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen

PHP-Tutorial
1535
276
Wie begrenzte ich Benutzerressourcen in Linux? Wie konfiguriere ich Ulimit? Wie begrenzte ich Benutzerressourcen in Linux? Wie konfiguriere ich Ulimit? May 29, 2025 pm 11:09 PM

Linux -System beschränkt die Benutzerressourcen durch den Befehl ulimit, um eine übermäßige Verwendung von Ressourcen zu verhindern. 1.ulimit ist ein integrierter Shell-Befehl, mit dem die Anzahl der Dateideskriptoren (-n), die Speichergröße (-V), die Threadzahl (-U) usw. begrenzt werden kann, die in Soft Limit (aktueller effektiver Wert) und hartem Grenze (maximale Obergrenze) unterteilt sind. 2. Verwenden Sie den Befehl ulimit direkt zur vorübergehenden Änderung, wie z. B. Ulimit-N2048, ist jedoch nur für die aktuelle Sitzung gültig. 3. Für den dauerhaften Effekt müssen Sie /etc/security/limits.conf- und PAM -Konfigurationsdateien ändern und SessionRequiredpam_Limits.so hinzufügen. 4. Der SystemD -Dienst muss Lim in der Einheitsdatei einstellen

Laravel Page Cache -Richtlinie Laravel Page Cache -Richtlinie May 29, 2025 pm 09:15 PM

Die Seiten -Caching -Strategie von Laravel kann die Leistung der Website erheblich verbessern. 1) Verwenden Sie Cache -Helferfunktionen, um das Seiten zwischen Seiten zu implementieren, wie z. 2) Wählen Sie das entsprechende Cache -Backend wie Redis aus. 3) Achten Sie auf Probleme mit der Datenkonsistenz und Sie können feinkörnige Caches oder Event-Hörer verwenden, um den Cache zu löschen. 4) Die weitere Optimierung wird mit Routing -Cache-, Ansichts -Cache- und Cache -Tags kombiniert. Durch die rationale Anwendung dieser Strategien kann die Leistung der Website effektiv verbessert werden.

Redis Master-Slave-Replikationsfehler Fehlerbehebungsprozess Redis Master-Slave-Replikationsfehler Fehlerbehebungsprozess Jun 04, 2025 pm 08:51 PM

Zu den Schritten zur Fehlerbehebung und Reparatur von Redis-Master-Slave-Replikationsfehlern gehören: 1. Überprüfen Sie die Netzwerkverbindung und verwenden Sie Ping oder Telnet, um die Konnektivität zu testen; 2. Überprüfen Sie die Redis-Konfigurationsdatei, um sicherzustellen, dass die Replikation und die Wiederholungs-Timeout korrekt eingestellt sind. 3. Überprüfen Sie die Redis -Protokolldatei und finden Sie Fehlerinformationen. 4. Wenn es sich um ein Netzwerkproblem handelt, starten Sie das Netzwerkgerät neu oder wechseln Sie den alternativen Pfad. 5. Wenn es sich um ein Konfigurationsproblem handelt, ändern Sie die Konfigurationsdatei. 6. Wenn es sich um ein Problem mit der Datensynchronisierung handelt, verwenden Sie den Befehl slaveof, um die Daten neu zu synchronisieren.

Was ist Redis und wie unterscheidet es sich von herkömmlichen SQL -Datenbanken? Was ist Redis und wie unterscheidet es sich von herkömmlichen SQL -Datenbanken? May 24, 2025 am 12:13 AM

RediSISunique-komparedTotraditionalsqldatabaseSInseveralways: 1) ItoperatePliminalinmemory, EnablingFasterReadandWriteoperations.2) ituSeSaflexibleKey-valedatamodel, unterstützend variousDatatypeslikestringsandsets Sets.3) RedissisSsets

Schnelle Lage und Handhabung von Redis -Cluster -Knotenfehlern Schnelle Lage und Handhabung von Redis -Cluster -Knotenfehlern Jun 04, 2025 pm 08:54 PM

Die Schnellpositions- und Verarbeitungsschritte für den Fehler mit Redis -Cluster -Knoten sind wie folgt: 1. Bestätigen Sie den Fehler: Verwenden Sie den Befehl cluSernodes, um den Knotenstatus anzuzeigen. Wenn der Fehler angezeigt wird, fällt der Knoten aus. 2. Ermitteln Sie die Ursache: Überprüfen Sie das Netzwerk, die Hardware und die Konfiguration. Zu den häufigen Problemen gehören Gedächtnisgrenzen, die überschritten werden. 3. Reparatur und Wiederherstellung: Treffen Sie Maßnahmen, die auf den Gründen basieren, z. B. das Neustart des Dienstes, das Ersetzen der Hardware oder das Ändern der Konfiguration. 4. Hinweise: Stellen Sie die Datenkonsistenz sicher, wählen Sie geeignete Failover -Richtlinien und stellen Sie die Überwachungs- und Alarmsysteme fest.

Leistungsvergleich und gemeinsame Anwendungsszenarien zwischen Redis und Rabbitmq Leistungsvergleich und gemeinsame Anwendungsszenarien zwischen Redis und Rabbitmq Jun 04, 2025 pm 08:45 PM

Redis und Rabbitmq haben jeweils ihre eigenen Vorteile in Bezug auf Leistung und gemeinsame Anwendungsszenarien. 1.Redis tritt hervorragend im Datenlesen und Schreiben von Daten mit einer Latenz von bis zu Mikrosekunden aus, die für hohe Parallelitätsszenarien geeignet sind. 2.Rabbitmq konzentriert sich auf Messaging, Latenz in Millisekunden und unterstützt Multi-Queue- und Verbrauchermodelle. 3. In gemeinsamen Anwendungen kann Redis für die Datenspeicherung verwendet werden. Rabbitmq erledigt asynchrone Aufgaben und verbessert die Geschwindigkeit und Zuverlässigkeit der Systeme.

Methoden und Strategien zur Lösung des Problems des geteilten Gehirns in Redis -Cluster Methoden und Strategien zur Lösung des Problems des geteilten Gehirns in Redis -Cluster Jun 04, 2025 pm 08:42 PM

Wirksame Lösungen für das Problem von Split Brain in Redis -Cluster umfassen: 1) Optimierung der Netzwerkkonfiguration, um die Verbindungsstabilität sicherzustellen; 2) Knotenüberwachung und Fehlererkennung, Echtzeitüberwachung mit Tools; 3) Failover -Mechanismus und hohe Schwellenwerte, um mehrere Masterknoten zu vermeiden; 4) Datenkonsistenzgarantie unter Verwendung der Replikationsfunktion zum Synchronisieren von Daten; 5) Manuelle Intervention und Wiederherstellung sowie die manuelle Verarbeitung bei Bedarf.

Konfigurationsvorschläge zur Verbesserung der Leistung der Wiedererlangung Konfigurationsvorschläge zur Verbesserung der Leistung der Wiedererlangung Jun 04, 2025 pm 08:48 PM

Zu den Methoden zur Verbesserung der Wiederherstellung der Persistenzleistung durch Konfiguration gehören: 1. Passen Sie die Speicherparameter von RDB an, um die Frequenz der Snapshot -Erzeugung zu verringern; 2. Setzen Sie den Appendfsync -Parameter von AOF auf alle; 3. Verwenden Sie AOF und RDB in Kombination; 4. Verwenden Sie die Parameter no-appendfsync-on-brewrite, um die AOF-Umschreiben-Leistung zu optimieren. 5. Aktivieren Sie den Hybrid -Persistenzmodus. Diese Konfigurationen können die Leistung verbessern und gleichzeitig die Datensicherheit gewährleisten.

See all articles