sql >> データベース >  >> NoSQL >> Redis

Redisセンチネルとクラスタリング

    まず、歩哨について話しましょう。

    Sentinelはフェイルオーバーを管理し、HA用にRedisを構成しません。これは重要な違いです。次に、投稿した図は実際には不適切な設定です。管理しているRedisノードと同じノードでSentinelを実行する必要はありません。そのホストを失うと、両方を失います。

    「資源の無駄ですか?」についてユースケースによって異なります。そのセットアップでは3つのRedisノードは必要ありません。必要なのは2つだけです。 3つは冗長性を高めますが、必須ではありません。追加の冗長性が必要な場合は、リソースの無駄ではありません。冗長性が必要ない場合は、単一のRedisインスタンスを実行して、それを適切と呼びます。これ以上実行すると「無駄」になるためです。

    2つのスレーブを実行するもう1つの理由は、読み取りを分割することです。繰り返しますが、必要な場合は無駄にはなりません。

    「利用可能なリソースを最大限に活用するためのより良い方法はありますか?」について特定のシナリオとコードに大きく依存しているため、これに答えることはできません。とはいえ、保存するデータの量が「少なく」、コマンドレートがそれほど高くない場合は、ホストをRedis専用にする必要がないことを忘れないでください。

    ここで、「RedisクラスタリングはRedisセンチネルの代替手段ですか?」について説明します。これは、実際には完全にユースケースに依存します。 RedisクラスターはHAソリューションではありません-マルチライター/ラムよりも大きいソリューションです。あなたの目標がHAだけである場合、それはおそらくあなたに適していないでしょう。 Redis Clusterには、特にマルチキー操作に関する制限があります。そのため、必ずしも単純な「クラスターを使用する」操作ではありません。

    3つのホストでRedisを実行する(および3つのセンチネルを実行する)のが無駄だと思う場合は、より多くのリソースを必要とするため、クラスターをさらに多く保持する可能性があります。

    あなたが尋ねた質問は、おそらく広すぎて意見に基づいているため、書かれたとおりに生き残ることはできません。解決している特定のケース/問題がある場合は、それを更新してください。特定の支援と情報を提供できます。

    詳細の更新:

    シナリオで適切なフェイルオーバー管理を行うために、3つのセンチネルを使用します。1つはJBossサーバーで実行されます。 3つのJBossノードがある場合は、それぞれに1つずつ使用します。別々のノードにRedisポッド(マスター+スレーブ)を配置し、監視員にフェイルオーバーを管理させます。

    そこから、情報と接続の管理にSentinelを使用するようにJBoss/Jedisを接続する必要があります。私はそれらを使用しないので、ジェダイがそれをサポートしていることがわかります。あなたはそれを正しく設定する必要があります。私が見つけたいくつかの例は、JedisSentinelPoolについて話しているSentinelとhttps://github.com/xetorthio/jedis/issues/725を使用したJedisの例を探しています。 プールを使用するためのルートです。

    Sentinelがフェイルオーバーを実行すると、クライアントは切断され、Jedisは現在のマスターが誰であるかをSentinelに尋ねることによって再接続を処理します(すべきですか?)。



    1. MongoDB-ファイルサイズは巨大で大きくなっています

    2. MongoDBシェル出力をファイルに「きれいに」印刷する方法はありますか?

    3. ノード-マングース3.6-入力されたフィールドでクエリを並べ替える

    4. ハッシュの配列をredisに保存する方法