ホームページ  >  記事  >  データベース  >  Redis セントリー モードでの高可用性の分析例

Redis セントリー モードでの高可用性の分析例

WBOY
WBOY転載
2023-06-02 22:38:04844ブラウズ

    1. はじめに

    Redis の高可用性には、Sentinel モード クラスターの 2 つのモードがあります。モード、この記事では、1 つのマスター、2 つのスレーブ、3 つのセンチネルセンチネル モードに基づいた Redis 高可用性サービスを構築します。

    1. 目標と利点

    1 つのマスター、2 つのスレーブ、および 3 つのセンチネルRedis サービスは、基本的に中小規模のプロジェクトの高可用性要件を満たすことができます。 Redis インスタンスを監視および管理します。この記事を通じて、次の目標が達成されます。

    • Sentinel モード サービスの計画と構築

    Sentinel モード サービスバージョン サービスは単一マシンと比較され、信頼性が高く、読み取りと書き込みが分離され、データ量が大きくなく、信頼性と安定性が必要なシナリオに適しています。

    • クライアントの統合と読み取り/書き込みの分離

    Spring フレームワークを介してセンチネル モードに接続し、運用を完了します。環境共通の操作。

    2. ポート計画

    ポート計画は、このソリューションを完成させるための最初のステップです。

    Redis セントリー モードでの高可用性の分析例

    2. 単一マシン シミュレーション

    単一マシン シミュレーションとは、物理マシンまたは仮想マシン上で動作をシミュレーションし、元の中間プロセスを復元することです。通常、学習または開発段階で使用されます。

    操作を簡素化するために、Redis サービスは次の規則を設けています: データはディスクに永続化されません。サービス インスタンスはフォアグラウンド プロセスとして実行されます。ノード構成ファイルはデフォルトの構成ファイルをテンプレートとして使用します。パスワードの確認。

    (1) サービス計画

    1. Redis インスタンス

    サービスを初めて開始するとき、どのノードがマスター ノードであるかが明確にわかります。が長時間実行されており、マスター/スレーブの切り替えが発生した場合、どのノードがマスター ノードであるかを表示することはできないため、コマンド ラインを介して間接的にクエリする必要があります。

    #ノードホストポートロール追加の構成node01127.0.0.16380初回起動時のマスター サービスとしてnode02127.0.0.16381初回起動時のスレーブ サービスとして127.0 のレプリカ。 0.1 6380node03127.0.0.16382初回起動時のスレーブ サービスとしてreplicaof 127.0. 0.1 6380
    追加構成とは、Redis サービス インスタンスが初めて起動されるときのノード構成ファイル内の新しい構成を指します。

    2. Sentinel サービス
    Sentinel サービス ノード間にマスターとスレーブの区別はなく、すべてのノードは平等な立場にあります。メイン サービスで例外が発生すると、センチネル サービスは投票戦略をトリガーし、Redis インスタンスのスレーブ ノードから候補を新しいメイン サービスとして選択します。

    #ノード node01node02node03

    (2) サービス設定

    1. Redis インスタンス

    ノードの初期設定ファイルは、デフォルトの設定ファイルをテンプレートとして使用します。

    node01 と node02 が設定ファイルを初期化すると、ノード間のマスター/スレーブ関係が表示され、次の設定が追加されます:

    replicaof 127.0.0.1 6380
    2. Sentinel サービス

    初期設定ノードの設定ファイルは次のとおりです。 デフォルトの設定ファイルはテンプレートです。

    node01、node02、node03 が設定ファイルを初期化した後、次の設定を追加します。

    sentinel monitor mymaster 127.0.0.1 6381 2

    (3) サービス管理

    テストまたは学習する場合は、次の設定を追加することをお勧めします。フォアグラウンド プロセスを使用してサービスを管理すると、単一障害点をシミュレートしたり、ログを表示したり、マスター/スレーブの切り替えを観察したりするのに便利です。

    本番環境では、スーパーバイザーを使用してサービスを管理することをお勧めします。これは、管理が簡単なだけでなく、異常終了後にサービスを自動的に再起動できます。高可用性シナリオでは 3 台の物理マシンが使用されます。

    1. Redis インスタンス
    /usr/local/redis/bin/redis-server /usr/local/redis/conf/ms/redis80.conf --port 6380 --save '' --daemonize no 
    /usr/local/redis/bin/redis-server /usr/local/redis/conf/ms/redis81.conf --port 6381 --save '' --daemonize no
    /usr/local/redis/bin/redis-server /usr/local/redis/conf/ms/redis82.conf --port 6382 --save '' --daemonize no
    2. Sentinel サービス
    /usr/local/redis/bin/redis-sentinel /usr/local/redis/conf/ms/sentinel280.conf --port 26380 --daemonize no
    /usr/local/redis/bin/redis-sentinel /usr/local/redis/conf/ms/sentinel281.conf --port 26381 --daemonize no
    /usr/local/redis/bin/redis-sentinel /usr/local/redis/conf/ms/sentinel282.conf --port 26382 --daemonize no

    3. クライアント統合

    クライアント実装とは、SpringBoot に基づく統合を指します。実装ステップ: まず、基礎としての統合を完了し、次に、運用ニーズに基づいて新しい機能を追加します。

    (1) 基本統合

    基本統合の内容は、Java クライアントを使用して高可用性センチネル モード Redis サービスに接続し、単一ノード障害の通常動作の要件を達成することです。サービス。

    1. グローバル設定ファイル

    グローバル設定ファイルに追加される設定情報は次のとおりです: masterパラメータはセンチネル サービス名で、これがデフォルト値です。nodesパラメータはセンチネル サービス リスト (Redis インスタンス サービス リストではありません); databaseパラメータはデータベースです。

    spring:
      redis:
        database: 0
        sentinel:
          nodes: 192.168.181.171:26380,192.168.181.171:26381,192.168.181.171:26382
          master: mymaster
    2. 統合構成

    は SpringBoot システムに統合されています。中心となるのは、LettuceConnectionFactory 接続ファクトリを作成することです。Redis 接続ファクトリを通じて、スムーズに接続ファクトリを作成できます。スプリング システムの他の部分に継承されます。

    @Configuration
    public class RedisSentinelConfig {
        @Autowired
        private RedisProperties redisProperties;
        
        @Bean
        public RedisConnectionFactory lettuceConnectionFactory() {
            RedisProperties.Sentinel sentinel = redisProperties.getSentinel();
            HashSet<String> nodes = new HashSet<>(sentinel.getNodes());
            String master = sentinel.getMaster();
            RedisSentinelConfiguration config = new RedisSentinelConfiguration(master, nodes);
            config.setDatabase(redisProperties.getDatabase());
            return new LettuceConnectionFactory(config);
        }
    }

    (2) 読み取りと書き込みの分離

    基本的な統合は、高可用性 Redis サービスのプロセスのみを実装します。運用環境では、他の構成を追加する必要があります: カスタム接続の変更データベースのシリアル番号、接続の承認、接続プールの構成、読み取りと書き込みの分離。

    高可用性を前提として、メインライブラリが書き込みリクエストを完了し、スレーブライブラリが読み出しリクエストを完了する(スレーブライブラリは書き込みを許可しない)という、読み出しと書き込みの分離という特徴が生まれます。

    rree
    ホスト ポート 追加構成
    127.0.0.1 26380 センチネル モニター mymaster 127.0.0.1 6380 2
    127.0.0.1 26381 センチネル モニター mymaster 127.0.0.1 6380 2
    127.0.0.1 26382 センチネル モニター mymaster 127.0.0.1 6380 2

    以上がRedis セントリー モードでの高可用性の分析例の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

    声明:
    この記事はyisu.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。