Redis高可用性ソリューション--Redis + Sentinel(プロジェクトの実際の戦闘)
序文
この環境は、Redis学習環境を構築するためのCentos 7.8システムに基づいています。
具体的な構築については、Redis-5.0.9環境の展開を参照してください。
1.センチネルアーキテクチャの設計
2.環境への備え
役割 | ホスト | ip | Redisバージョン |
---|---|---|---|
主人 | node01 | 192.168.5.11 | Redis-5.0.9 |
slave1 | node02 | 192.168.5.12 | Redis-5.0.9 |
slave2 | node03 | 192.168.5.13 | Redis-5.0.9 |
注:この環境はredis-yumに基づいてインストールされます
3つ目は、マスター/スレーブ同期を構成することです。
主人
[root@node01 ~]# vim /etc/redis.conf
bind 192.168.5.11
daemonize yes
appendonly yes
[root@node01 ~]# systemctl enable --now redis
slave1
[root@node02 ~]# vim /etc/redis.conf
bind 192.168.5.12
daemonize yes
appendonly yes
replicaof 192.168.5.11 6379
[root@node02 ~]# systemctl enable --now redis
slave2
[root@node03 ~]# vim /etc/redis.conf
bind 192.168.5.13
daemonize yes
appendonly yes
replicaof 192.168.5.11 6379
[root@node03 ~]# systemctl enable --now redis
マスタースレーブの同期状態を確認する
マスター
スレーブ1の
スレーブ2
マスター・スレーブ同期設定に成功!!!
第四に、歩哨サービスを構成します
l構成ファイルマスターを変更する
[root@node01 ~]# vim /etc/redis-sentinel.conf
daemonize yes
sentinel monitor mymaster 192.168.5.11 6379 2
[root@node01 ~]# systemctl enable --now redis-sentinel.service
Created symlink from /etc/systemd/system/multi-user.target.wants/redis-sentinel.service to /usr/lib/systemd/system/redis-sentinel.service.
[root@node01 ~]# netstat -lnutp | grep 6379
tcp 0 0 192.168.5.11:26379 0.0.0.0:* LISTEN 11911/redis-sentine
tcp 0 0 192.168.5.11:6379 0.0.0.0:* LISTEN 1698/redis-server 1
slave1
[root@node02 ~]# vim /etc/redis-sentinel.conf
bind 192.168.5.11
daemonize yes
sentinel monitor mymaster 192.168.5.11 6379 2
[root@node02 ~]# systemctl enable --now redis-sentinel.service
Created symlink from /etc/systemd/system/multi-user.target.wants/redis-sentinel.service to /usr/lib/systemd/system/redis-sentinel.service.
[root@node02 ~]# netstat -lnutp | grep 6379
tcp 0 0 192.168.5.12:26379 0.0.0.0:* LISTEN 11884/redis-sentine
tcp 0 0 192.168.5.12:6379 0.0.0.0:* LISTEN 1717/redis-server 1
slave2
[root@node03 ~]# vim /etc/redis-sentinel.conf
bind 192.168.5.13
daemonize yes
sentinel monitor mymaster 192.168.5.11 6379 2
[root@node03 ~]# systemctl enable --now redis-sentinel.service
Created symlink from /etc/systemd/system/multi-user.target.wants/redis-sentinel.service to /usr/lib/systemd/system/redis-sentinel.service.
[root@node03 ~]# netstat -lnutp | grep 6379
tcp 0 0 192.168.5.13:26379 0.0.0.0:* LISTEN 11791/redis-sentine
tcp 0 0 192.168.5.13:6379 0.0.0.0:* LISTEN 1648/redis-server 1
歩哨ステータスを表示
歩哨ログファイルの追跡歩哨
情報の表示
マスターセンチネル情報を表示する
軟膏センチネル情報を見る
5、センチネルフェイルオーバーをシミュレートします
マスターredisサービスを停止します
[root@node01 ~]# systemctl stop redis
[root@node01 ~]# netstat -lnutp | grep redis
tcp 0 0 192.168.5.11:26379 0.0.0.0:* LISTEN 11911/redis-sentine
3分後のステータスマスタースレーブステータスを表示する
node02へのマスタースイッチ
トレースログ
マスタースレーブステータスを表示する
マスターはデータの書き込みと削除を行い、
フェイルオーバーは成功します。!!
node01redisサービスを開始します
[root@node01 ~]# systemctl start redis
[root@node01 ~]# netstat -lnutp | grep redis
tcp 0 0 192.168.5.11:6379 0.0.0.0:* LISTEN 12031/redis-server
tcp 0 0 192.168.5.11:26379 0.0.0.0:* LISTEN 11911/redis-sentine
マスタースレーブステータスを表示する
マスターがデータを書き込み、サルブが同期ステータスをチェックします
マスターはデータを書き込みます
node01ビュー
node03ビュー
フェイルオーバーとフェイルオーバー機能が実現!!!
障害回復の成功(非プリエンプティブ選挙の役割)
注:マスターが障害を送信した後、sentinelは、フェイルオーバーとフェイルオーバーの要件を満たすために、ノード構成ファイルを変更することによってカラーキャリブレーションを切り替えます
Redis歩哨が正常に構成されました!!!