6

git commit メッセージによると、ServiceStack は最近フェイルオーバー サポートを追加しました。私は当初、これは自分の Redis インスタンスの 1 つをプルダウンできることを意味すると考えていました。プールされたクライアント マネージャーはフェイルオーバーをエレガントに処理し、別の Redis インスタンスの 1 つに接続しようとします。残念ながら、私のコードはバグアウトし、最初の Redis インスタンスに接続できないと表示されます。

現在、Windows で Redis 2.6.12 のインスタンスを実行しています。マスターはポート 6379、スレーブは 6380 で、マスターがダウンした場合にスレーブを自動的にマスターに昇格させるようにセンチネルを設定しています。現在、クライアント マネージャーを次のようにインスタンス化しています。

PooledRedisClientManager pooledClientManager =
    new PooledRedisClientManager(new string[1] { "localhost:6379"},
        new string[1] {"localhost:6380"});

ここで、最初の配列は読み取り/書き込みホスト (マスター用) で、2 番目の配列は読み取り専用ホスト (スレーブ用) です。

ポート 6379 でマスターを終了すると、センチネルがスレーブをマスターに昇格させます。ここで、C# コードを実行しようとすると、ポート 6380 にフェールオーバーする代わりに、単純に中断し、「localhost:6379 の redis インスタンスに接続できませんでした」というエラーが返されます。

これを回避する方法はありますか、それともフェイルオーバーが思い通りに機能しないのでしょうか?

4

1 に答える 1

4

PooledRedisClientManager.FailoverTo読み取り/書き込みホストと読み取り専用ホストをリセットし、工場を再起動できます。これにより、クライアントを再作成する必要なく、迅速な移行が可能になります。

于 2013-09-03T21:45:18.217 に答える