Powinieneś dostarczać hosta serwera Redis Sentinel tylko do RedisSentinel
ponieważ pobiera aktywną listę innych serwerów redis master/slave z hosta Sentinel.
Niektóre zmiany w RedisSentinel
zostały niedawno dodane w najnowszej v4.0.37 to jest teraz dostępne w MyGet, które obejmuje dodatkowe rejestrowanie i wywołania zwrotne zdarzeń Redis Sentinel. Nowa v4.0.37 API wygląda tak:
var sentinel = new RedisSentinel(sentinelHost, masterName);
Uruchomienie RedisSentinel spowoduje nawiązanie połączenia z Sentinel Host i zwrócenie wstępnie skonfigurowanego RedisClientManager (tj. puli połączeń redis) z aktywnym
var redisManager = sentinel.Start();
Które następnie możesz zarejestrować w MKOl za pomocą:
container.Register<IRedisClientsManager>(redisManager);
RedisSentinel
powinien następnie nasłuchiwać zmian master/slave z hostów Sentinel i przełączać awaryjnie redisManager odpowiednio. Istniejące połączenia w puli są następnie usuwane i zastępowane nową pulą dla nowo skonfigurowanych hostów. Wszystkie aktywne połączenia poza pulą będą zgłaszać wyjątki połączenia, jeśli zostaną ponownie użyte, następnym razem, gdy RedisClient zostanie pobrany z puli, zostanie skonfigurowany z nowymi hostami.
Oddzwonienia i rejestrowanie
Oto przykład wykorzystania nowych wywołań zwrotnych do introspekcji zdarzeń RedisServer:
var sentinel = new RedisSentinel(sentinelHost, masterName)
{
OnFailover = manager =>
{
"Redis Managers were Failed Over to new hosts".Print();
},
OnWorkerError = ex =>
{
"Worker error: {0}".Print(ex);
},
OnSentinelMessageReceived = (channel, msg) =>
{
"Received '{0}' on channel '{1}' from Sentinel".Print(channel, msg);
},
};
Rejestrowanie tych zdarzeń można również włączyć, konfigurując Logowanie w ServiceStack:
LogManager.LogFactory = new ConsoleLogFactory(debugEnabled:false);
Istnieje również dodatkowa jawna funkcja FailoverToSentinelHosts()
które mogą być użyte do wymuszenia RedisSentinel
do ponownego wyszukiwania i przełączania awaryjnego do najnowszych hostów master/slave, np.:
var sentinelInfo = sentinel.FailoverToSentinelHosts();
Nowe hosty są dostępne w zwróconym sentinelInfo:
"Failed over to read/write: {0}, read-only: {1}".Print(
sentinelInfo.RedisMasters, sentinelInfo.RedisSlaves);