2 つの Redis サーバー バックプレーンがあり、1 つがマスター、もう 1 つがスレーブであるとします。
各 Web アプリケーションは SignalR を使用して、接続されたクライアントにコンテンツをプッシュし、Application_Start で使用しているバックプレーンにそれらを接続します。
GlobalHost.DependencyResolver.UseRedis(host, port, "", new[] {"signalr.key"});
RouteTable.Routes.MapHubs();
ここで、マスター Redis バックプレーンに障害が発生した場合に備えて、スレーブ Redis サーバーをマスターに昇格させ、既存のすべての接続を Web サーバーから新しいマスター Redis サーバーに切り替えたいと考えています。
スレーブ サーバーをマスターに昇格させるために、次のコードを使用しています。
using (var conn = new RedisConnection(host, port, allowAdmin: true))
{
if (conn.ServerType != ServerType.Master)
{
conn.Open();
var makeMaster = conn.Server.MakeMaster();
var info = conn.Wait(conn.GetInfo());
conn.Wait(makeMaster);
}
}
それは仕事をするようです。
接続されたクライアント間の通信を維持するために、バックプレーンが新しいバックプレーンへの接続方法を変更したことを Web アプリケーションに通知する方法を教えてください。