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

異なるマシンでのRedisレプリケーションの使用(マルチマスター)

    あなたはアクティブ-アクティブ、別名マルチマスター、ソリューションを求めていますが、あなたの質問はあなたがそれを必要としないかもしれないことを示唆しています。

    データベースの1つだけを書き込みに使用できるようにする必要がある場合、つまり、すべての書き込みが常にそれを実行する場合は、Redisの標準のマスタースレーブレプリケーションを使用してそれを実現できます。書き込みにマスターを使用するようにアプリケーションに指示し、(場合によっては)スレーブに読み取りの一部も提供させる。マスターに障害が発生した場合は、2次DCのスレーブを新しいマスターに昇格させ、アプリケーション/クライアントをリダイレクトして使用します。監視と宣伝は、RedisのSentinelを使用して実現できます。

    このタイプのセットアップを実装する際に考慮しなければならないことがいくつかあります。まず、Redisのレプリケーションは非同期であるため、マスターの負荷、書き込みの量、レプリケーションのネットワークリンクの品質によっては、フェイルオーバーの場合に最近の更新の一部が失われる可能性があることに注意してください。次に、同じトピックで、DC間ネットワークリンクは帯域幅が制限され、遅延が増加する傾向がある可能性があります-これを処理するようにRedisを構成し、おそらくそのトラフィックに圧縮を使用する必要があります(SSHトンネル経由など)。最後に、障害を正確に検出するには、異なる場所に少なくとも3つのセンチネルを配置する必要があります。しかし、これらの課題にもかかわらず、それはすべて実行可能です。

    とはいえ、任意のデータベースに対して任意に書き込みを実行できるマルチマスターセットアップはそうではありません 現在、Redisによってサポートされています。それが実際に必要なものである場合は、別のソリューションの使用を検討してください。

    注:正確な要件に応じて、異なるDCへの書き込みが相互に排他的であることを保証できる場合(つまり、各DCは、他のDCによって共有されていないキーの個別のサブセットへの書き込みのみを取得します)、マスターで2つのデータベースを使用できます各DCで、他のDCでスレーブ。




    1. MongoDB + nodejs:ISODateフィールドをクエリする方法は?

    2. 複数のフィールドで同時にMongodb集計(カウント)

    3. MongoDBでのマルチドキュメントACIDトランザクションの概要とその使用方法

    4. ASP.NETCoreControllerでのStackExchange.Redisの使用