git commit 메시지에 따르면 ServiceStack에서 최근에 장애 조치 지원을 추가했습니다. 처음에는 이것이 나의 Redis 인스턴스 중 하나를 끌어낼 수 있다는 것을 가정하고, 풀링 된 클라이언트 관리자가 장애 복구를 우아하게 처리하고 대체 Redis 인스턴스 중 하나와 연결을 시도합니다. 불행히도, 내 코드는 버그가 나고 초기 Redis 인스턴스와 연결할 수 없다고 말합니다.ServiceStack PooledRedisClientManager 페일 오버는 어떻게 작동합니까?
현재 Windows에서 Redis 2.6.12의 인스턴스를 실행 중입니다. 포트 6379의 마스터와 6380의 슬레이브가 있으며, 마스터가 다운되면 자동으로 슬레이브를 마스터로 승격하도록 설정됩니다. 나는 현재이처럼 내 클라이언트 관리자를 인스턴스화하고 (슬레이브 용)
PooledRedisClientManager pooledClientManager =
new PooledRedisClientManager(new string[1] { "localhost:6379"},
new string[1] {"localhost:6380"});
첫 번째 배열은 읽기 - 쓰기 (마스터 용) 호스트, 두 번째 배열은 읽기 전용 호스트.
포트 6379에서 마스터를 종료하면 감시 모니터가 슬레이브를 마스터로 승격합니다. 이제 6380 포트로 장애 조치하는 대신 C# 코드를 실행하려고하면 "localhost : 6379에서 redis 인스턴스에 연결할 수 없습니다"라는 오류가 발생하고 중단됩니다.
이 문제를 해결할 수있는 방법이 있습니까? 아니면 장애 조치 (failover)가 원하는대로 작동하지 않을까요?
길을 찾았습니까? Vliu – jaxxbo
아니요, 대부분의 연구에서 대부분의 사람들은 장애 조치를 처리하기 위해 코드에 의존하지 않습니다. 그들은 HAProxy @jaxxbo와 같은 redis 데이터베이스를 통해 (linux) 프록시 레이어를 사용합니다. – Vliu