2017-11-02 10 views
0

Azure Redis Cacheのチームメンバーからの回答であるthisによれば、Azure Redis Cacheは単一のエンドポイントを公開します。そのエンドポイントは、自動的にマスターノードまたはスレーブノードのいずれかにルーティングされます(フェイルオーバーしたと仮定します)。Azure Redis Cache - 複製されたインスタンスに対して正しく動作する方法

Azureの...は、クライアントが単一のエンドポイントを参照し、いつかチェックする必要がありますので、ノードが

実際にマスタまたはスレーブ

であることを保証するために、クライアント側のチェックが必要です。その答えはまた、と述べています

  1. Redisクライアントは、マスターノードまたはスレーブノードのどちらに通話するかを気にする必要がありますか。フェールオーバー時の矛盾を防ぐことのみが目的ですか、それとも他の問題がありますか?

  2. クライアントがマスターインスタンスに接続されているかスレーブインスタンスに接続されているかをクライアントが確認する必要がありますか? info replicationを実行していますか? docsから

答えて

1

:マスターノードを再起動すると

、AzureのRedisのキャッシュは、レプリカノードにフェイルオーバーし、マスターにそれを推進しています。このフェールオーバー中に、接続がキャッシュに失敗する可能性のある短い間隔が存在する可能性があります。

スレーブに接続することは決してありません。あなたには決して晒されないからです。マスターが出ると、スレーブはマスターに昇格し、それがあなたに再接続します。

+0

これは、クライアントがスレーブインスタンスに接続していることを知る手段がないことを意味します。さらに、スレーブが昇格される前にいくつかの書き込みを受け取っていない場合、フェールオーバーの間またはその後に一貫性の問題が発生することはありませんか? – Malt

+0

これも私自身の解釈ですが、これはおそらくすべてがまだ適用されています - https://redis.io/topics/replication。これは、マスター/スレーブが一貫性を達成するために最善を尽くしますが、保証されていないことを意味します結局データベースではない)。マイクロソフトがダンスを改善するために帽子から余分なウサギを引っ張っているならば、彼らだけがこれに答えることができる。 – evilSnobu

+0

ポート6379/6380を介してAzure Redisに接続すると、クラスタ化されていないキャッシュ内のマスターノードが常にポイントされます。フェールオーバーが発生すると、システムは自動的にすべての接続をフェールオーバー後の新しいマスターノードに再ルーティングします。レプリケーションは非同期であるため、スレーブにまだレプリケートされていない書き込みはすべて失われます。標準のRedisの動作であり、Azure Redisに固有の動作ではありません。クラスタ化されたキャッシュの場合は、動作が少し異なります。クラスタ構成は初期接続でダウンロードされ、クライアントはクラスタ内のすべてのノードに直接接続します。 – JonCole

関連する問題