Heim > Artikel > Backend-Entwicklung > PHP-Entwicklung: Implementierung des HA-Modus und Failover mit Redis und Sentinel
Unter der traditionellen Single-Node-Architektur werden alle Anfragen für eine Anwendung an denselben Server gesendet. Obwohl diese Architektur relativ einfach ist, birgt sie das Risiko eines Single Point of Failure. Wenn der Server, auf dem sich die Anwendung befindet, ausgefallen ist, schlagen alle Anfragen fehl.
Um dieses Problem zu lösen, müssen wir die Anwendung auf mehreren Servern bereitstellen, um den Hochverfügbarkeitsmodus (HA) und Failover zu erreichen. In diesem Artikel erfahren Sie, wie Sie Hochverfügbarkeit und Failover mithilfe von Redis und Sentinel implementieren.
Redis ist ein schnelles In-Memory-Datenspeichersystem, das häufig für Caching, Warteschlangen, Echtzeitanalysen und Messaging verwendet wird. Redis verfügt über ein Single-Threaded-Design und nutzt Arbeitsspeicher als Speicher. Dies verleiht Redis eine hervorragende Leistung und Skalierbarkeit.
Sentinel ist eine Hochverfügbarkeitslösung für Redis. Es kann Redis-Instanzen überwachen und automatisch zu Backup-Knoten wechseln, wenn der Primärknoten ausfällt. Dieses automatische Failover stellt sicher, dass Ihre Redis-Instanz immer verfügbar ist.
Hier sind die Schritte zur Implementierung von Hochverfügbarkeit und Failover mit Redis und Sentinel.
Erster Schritt: Installieren Sie Redis und Sentinel
Auf CentOS können Sie den folgenden Befehl verwenden, um Redis und Sentinel zu installieren:
yum install redis sentinel
Auf Ubuntu können Sie den folgenden Befehl verwenden, um Redis und Sentinel zu installieren:
apt-get install redis sentinel
Zweiter Schritt: Redis-Konfigurationsdatei ändern
Auf dem Primärknoten und dem Sicherungsknoten muss die Redis-Konfigurationsdatei geändert werden. Unter CentOS befindet sich die Konfigurationsdatei unter /etc/redis.conf
und unter Ubuntu befindet sich die Konfigurationsdatei unter /etc/redis/redis.conf
. /etc/redis.conf
,在 Ubuntu 上,配置文件位于 /etc/redis/redis.conf
。
在配置文件中,需要将 bind
参数设置为节点的 IP 地址。如果您想允许来自任何 IP 的客户端连接到 Redis,可以将 bind
参数设置为 0.0.0.0。
您还需要将 requirepass
参数设置为密码,以确保只有授权用户才能访问 Redis。
最后,将 daemonize
参数设置为 yes,以确保 Redis 在后台运行。
bind 192.168.0.1 requirepass mypassword daemonize yes
对于备份节点,还需要将 slaveof
参数设置为主节点的 IP 地址和端口号。
slaveof 192.168.0.1 6379
第三步,修改 Sentinel 配置文件
在 CentOS 上,Sentinel 配置文件位于 /etc/redis-sentinel.conf
,在 Ubuntu 上,Sentinel 配置文件位于 /etc/redis/sentinel.conf
。
在 Sentinel 配置文件中,需要设置 bind
参数,以确保 Sentinel 接收来自客户端的请求。如果您想允许来自任何 IP 地址的客户端连接到 Sentinel,可以将 bind
参数设置为 0.0.0.0。
您还需要设置 sentinel monitor
参数,用于监视 Redis 实例。该参数包含了 Redis 实例的名称、IP 地址、端口号和故障转移阈值。
bind 192.168.0.2 sentinel monitor mymaster 192.168.0.1 6379 2
这个例子中,Sentinel 将监视名为 mymaster
的 Redis 实例。如果主节点失效了,Sentinel 将在备份节点上自动启动新的 Redis 实例并将其升级为主节点。
第四步,启动 Redis 和 Sentinel
在每个节点上,启动 Redis 和 Sentinel:
systemctl start redis systemctl start redis-sentinel
在主节点启动后,Sentinel 将开始监视 Redis 实例。如果主节点失效,Sentinel 将在备份节点上自动启动新的 Redis 实例并将其升级为主节点。在这个过程中,客户端将自动切换到新的主节点,应用程序将继续正常工作。
您可以使用以下命令检查 Redis 实例的状态:
redis-cli -h 192.168.0.1 -p 6379 ping
您可以使用以下命令检查 Sentinel 的状态:
redis-cli -h 192.168.0.2 -p 26379 sentinel slaves mymaster
这个例子中,我们将 Sentinel 连接到 192.168.0.2 的端口 26379,并检查名为 mymaster
bind
auf die IP-Adresse des Knotens gesetzt werden. Wenn Sie Clients von jeder IP aus eine Verbindung zu Redis herstellen möchten, können Sie den Parameter bind
auf 0.0.0.0 setzen. Sie müssen außerdem den Parameter requirepass
auf ein Passwort setzen, um sicherzustellen, dass nur autorisierte Benutzer auf Redis zugreifen können. Setzen Sie abschließend den Parameter daemonize
auf „Ja“, um sicherzustellen, dass Redis im Hintergrund ausgeführt wird. rrreee
Für den Backup-Knoten müssen Sie außerdem den Parameterslaveof
auf die IP-Adresse und Portnummer des Primärknotens setzen. 🎜rrreee🎜Der dritte Schritt besteht darin, die Sentinel-Konfigurationsdatei zu ändern. 🎜🎜 Unter CentOS befindet sich die Sentinel-Konfigurationsdatei unter /etc/redis-sentinel.conf
. Unter Ubuntu befindet sich die Sentinel-Konfigurationsdatei unter /etc /redis/sentinel.conf
. 🎜🎜In der Sentinel-Konfigurationsdatei muss der Parameter bind
gesetzt werden, um sicherzustellen, dass Sentinel Anfragen vom Client empfängt. Wenn Sie zulassen möchten, dass Clients von jeder IP-Adresse eine Verbindung zu Sentinel herstellen, können Sie den Parameter bind
auf 0.0.0.0 setzen. 🎜🎜Sie müssen außerdem den Parameter sentinel monitor
festlegen, um die Redis-Instanz zu überwachen. Dieser Parameter enthält den Namen, die IP-Adresse, die Portnummer und den Failover-Schwellenwert der Redis-Instanz. 🎜rrreee🎜In diesem Beispiel überwacht Sentinel die Redis-Instanz mit dem Namen mymaster
. Wenn der Primärknoten ausfällt, startet Sentinel automatisch eine neue Redis-Instanz auf dem Backup-Knoten und stuft sie zum Primärknoten hoch. 🎜🎜Schritt 4: Starten Sie Redis und Sentinel. Wenn der Primärknoten ausfällt, startet Sentinel automatisch eine neue Redis-Instanz auf dem Backup-Knoten und stuft sie zum Primärknoten hoch. Während dieses Vorgangs wechselt der Client automatisch zum neuen Masterknoten und die Anwendung funktioniert normal weiter. 🎜🎜Sie können den Status Ihrer Redis-Instanz mit dem folgenden Befehl überprüfen: 🎜rrreee🎜 Sie können den Status von Sentinel mit dem folgenden Befehl überprüfen: 🎜rrreee🎜In diesem Beispiel verbinden wir Sentinel mit Port 26379 von 192.168.0.2 und prüfen der Name mymaster. 🎜🎜Zusammenfassung🎜🎜In diesem Artikel haben wir erläutert, wie Sie mit Redis und Sentinel Hochverfügbarkeit und Failover erreichen. Durch die Bereitstellung der Anwendung auf mehreren Servern und die Verwendung eines automatischen Failovers können Sie sicherstellen, dass die Anwendung weiterhin ordnungsgemäß funktioniert, wenn der Primärknoten ausfällt. 🎜🎜So erhöhen Sie die Verfügbarkeit Ihrer Anwendung und reduzieren das Risiko von Single Points of Failure. Wir hoffen, dass Sie diesen Artikel hilfreich fanden und wünschen Ihnen viel Glück bei der Verwendung von Redis und Sentinel. 🎜Das obige ist der detaillierte Inhalt vonPHP-Entwicklung: Implementierung des HA-Modus und Failover mit Redis und Sentinel. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!