ホームページ  >  記事  >  バックエンド開発  >  PHP 開発: Redis と Sentinel を使用した HA モードとフェイルオーバーの実装

PHP 開発: Redis と Sentinel を使用した HA モードとフェイルオーバーの実装

王林
王林オリジナル
2023-06-17 11:11:591260ブラウズ

従来の単一ノード アーキテクチャでは、アプリケーションに対するすべてのリクエストが同じサーバーに送信されます。このアーキテクチャは比較的単純ですが、単一障害点のリスクがあります。アプリケーションが配置されているサーバーがダウンしている場合、すべてのリクエストは失敗します。

この問題を解決するには、アプリケーションを複数のサーバーにデプロイして、高可用性 (HA) モードとフェイルオーバーを実現する必要があります。この記事では、Redis と Sentinel を使用して高可用性とフェイルオーバーを実装する方法について説明します。

Redis は、キャッシュ、キューイング、リアルタイム分析、メッセージングに一般的に使用される高速インメモリ データ ストレージ システムです。 Redis はシングルスレッド設計を特徴とし、メモリをストレージとして使用します。これにより、Redis に優れたパフォーマンスとスケーラビリティが与えられます。

Sentinel は、Redis の高可用性ソリューションです。 Redis インスタンスを監視し、プライマリ ノードに障害が発生した場合は自動的にバックアップ ノードに切り替えることができます。この自動フェイルオーバーにより、Redis インスタンスが常に利用可能になります。

ここでは、Redis と Sentinel を使用して高可用性とフェイルオーバーを実現する手順を示します。

最初のステップ、Redis と Sentinel のインストール

CentOS では、次のコマンドを使用して Redis と Sentinel をインストールできます。

yum install redis sentinel

Ubuntu では、次のコマンドを使用できます。 Redis と Sentinel をインストールするには:

apt-get install redis sentinel

2 番目のステップは、Redis 構成ファイルを変更することです

プライマリ ノードとバックアップ ノードで、Redis 構成ファイルを変更する必要があります。 CentOS では、構成ファイルは /etc/redis.conf にあり、Ubuntu では、構成ファイルは /etc/redis/redis.conf にあります。

構成ファイルでは、bind パラメータをノードの IP アドレスに設定する必要があります。任意の IP からのクライアントが Redis に接続できるようにするには、bind パラメーターを 0.0.0.0 に設定します。

承認されたユーザーのみが Redis にアクセスできるようにするには、requirepass パラメーターをパスワードに設定する必要もあります。

最後に、daemonize パラメータを yes に設定して、Redis がバックグラウンドで実行されていることを確認します。

bind 192.168.0.1
requirepass mypassword
daemonize yes

バックアップ ノードの場合は、slaveof パラメータをプライマリ ノードの IP アドレスとポート番号に設定する必要もあります。

slaveof 192.168.0.1 6379

3 番目のステップ、Sentinel 構成ファイルの変更

CentOS では、Sentinel 構成ファイルは /etc/redis-sentinel.conf にあり、Ubuntu では、 Sentinel の設定 ファイルは /etc/redis/sentinel.conf にあります。

Sentinel 設定ファイルでは、bind パラメータを設定して、Sentinel がクライアントからリクエストを確実に受信できるようにする必要があります。任意の IP アドレスのクライアントが Sentinel に接続できるようにしたい場合は、bind パラメータを 0.0.0.0 に設定します。

Redis インスタンスを監視するには、sentinel Monitor パラメーターを設定する必要もあります。このパラメータには、Redis インスタンスの名前、IP アドレス、ポート番号、フェイルオーバーしきい値が含まれます。

bind 192.168.0.2
sentinel monitor mymaster 192.168.0.1 6379 2

この例では、Sentinel は mymaster という名前の Redis インスタンスを監視します。プライマリ ノードに障害が発生した場合、Sentinel はバックアップ ノード上で新しい Redis インスタンスを自動的に起動し、それをプライマリ ノードに昇格させます。

4 番目のステップ、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 をポート 26379 の 192.168.0.2 に接続し、mymaster という名前の Redis インスタンスのバックアップ ノードを確認します。

概要

この記事では、Redis と Sentinel を使用して高可用性とフェイルオーバーを実現する方法を紹介しました。アプリケーションを複数のサーバーにデプロイし、自動フェイルオーバーを使用することにより、プライマリ ノードに障害が発生した場合でもアプリケーションが適切に動作し続けることを保証できます。

これにより、アプリケーションの可用性が向上し、単一障害点のリスクが軽減されます。この記事がお役に立てば幸いです。Redis と Sentinel の使用の幸運をお祈りします。

以上がPHP 開発: Redis と Sentinel を使用した HA モードとフェイルオーバーの実装の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。