injae-kim/injae-kim.github.io

Redis sentinel

Opened this issue · 0 comments

센티널은 다음과 같은 기능을 합니다.
모니터링 Monitoring : 센티널은 레디스 마스터, 복제들을 제대로 동작하는지 지속적으로 감시합니다.
자동 장애조치 Automatic Failover : 센티널은 레디스 마스터가 예기치 않게 다운되었을 때 복제를 새로운 마스터로 승격시켜 줍니다. 그리고 복제가 여러 대 있을 경우 이 복제들이 새로운 마스터로 부터 데이터를 받을 수 있도록 재 구성하고, 다운된 마스터가 재 시작했을 때 복제로 전환되어 새로운 마스터를 바라볼 수 있도록 합니다.
알림 Notification : 센티널은 감시하고 있는 레디스 인스턴스들이 failover 되었을 때 Pub/Sub으로 Application(client)에게 알리거나 shell script로 관리자에게 이메일이나 SMS로 알릴 수 있습니다.

  1. 센티넬들이 각자 master down after period 로 subjectively down 판단

  2. 센티넬 리더가 SDOWN이면 전체 센티넬의 is-master-down-by-addr 호출, 마스터 다운 판단수와 쿼럼 수 비교

  3. failover 시작

  4. https://github1s.com/redis/redis/blob/7.0/src/sentinel.c#L4577-L4578

  5. https://github1s.com/redis/redis/blob/7.0/src/sentinel.c#L4609-L4610

  6. https://github1s.com/redis/redis/blob/7.0/src/sentinel.c#L4553-L4554

  7. https://github1s.com/redis/redis/blob/7.0/src/sentinel.c#L5227-L5228

  8. https://github1s.com/redis/redis/blob/7.0/src/sentinel.c#L4986-L4987

  9. https://github1s.com/redis/redis/blob/7.0/src/sentinel.c#L4906-L4909

  10. https://github1s.com/redis/redis/blob/7.0/src/sentinel.c#L4567-L4568