필자는 예상대로 3 개의 슬레이브와 3 개의 마스터로 6 개의 노드 Redis 클러스터를 가동했습니다.
Redis 서버 관점에서 볼 때 모든 것이 늠름한 것 같아서 서버에서 cluster failover
또는 debug segfault
이라고 부를 수 있으며 적절한 슬레이브가 마스터가됩니다.ConnectionMultiplexer를 사용하여 Redis 클러스터에서 장애 조치를 처리하는 방법은 무엇입니까?
.net 측에서는 StackExchange Redis 설명서를 따르므로 이 있고 여기에서 IDatabase
을 가져오고 값을 저장하고 검색 할 수 있습니다. 너무 좋아, 지금까지 srv1:7001,srv2:7001,srv3:7001,srv1:7002,srv2:7002,srv3:7002
:
내가 좋아하는 연결 문자열을 사용하고 있습니다.
그러나 연결 멀티플렉서를 사용할 때 클러스터의 마스터 오류를 처리하는 방법을 파악하려고합니다. 현재 내가 생각해 낼 수있는 가장 좋은 점은 예외를 잡아 내고 현재의 연결 멀티플렉서를 버리고 전혀 새로운 느낌을주는 새로운 멀티플렉서를 만드는 것입니다.
내가 연결할 때 멀티플렉서에게 모든 잠재적 종단점을 말하면서, 나는 이것과 같은 것에 주목하고 새로운 마스터와 자동으로 대화하기를 기대하고 있었다. the documentation 중 일부는 너무 말을이을 암시 : 구성 (특히 마스터/슬레이브 구성) 변경 될 때 연결된 인스턴스가 새로운 상황을 스스로 인식하게하는
마찬가지로는,이 정보를 통해 (중요하다, CONFIG 등 - 사용 가능한 경우). 내가
srv1:7001
을 죽이고 아무것도하지 않고, 다음 연결이 결코 회복하지 않으며, 모든 호출은 새로운 값이RedisConnectionException
던졌습니다 설정하는 경우 StackExchange.Redis는
...에 의해 자동으로이 작업을 수행합니다.
나는 이벤트가 ConfigurationChanged
, ConfigurationChangedBroadcast
, ConnectionFailed
에 붙으려고 시도하고 마스터가 다운되었을 때 방송을보기 위해 다양한 채널에 가입하려고했습니다. 내가 마스터에서 클러스터를 변경하게 만들면 이들 중 아무 것도 트리거되지 않는 것 같습니다.
그래서 내가 놓친 것이 있는지 궁금합니다.
건배,
크레이그.