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 インスタンスに接続できませんでした」というエラーが返されます。
これを回避する方法はありますか、それともフェイルオーバーが思い通りに機能しないのでしょうか?