TIL

9장 센티널

고가용성 기능의 필요성

센티널이란?

센티널 기능

image

분산 시스템으로 동작하는 센티널

센티널 인스턴스 배치 방법

센티널 인스턴스 실행하기

센티널 프로세스 실행

REPLICAOF 192.168.0.11 6379
port 26379
sentinel monitor master-test 192.168.0.11 6379 2
# redis-sentinel을 이용하는 방법
redis-sentinel /path/to/sentinel.conf

# redis-server를 이용하는 방법
redis-server /path/to/sentinel.conf --sentinel
redis-cli -p 26379
SENTINEL master <master-name>

페일오버 테스트

센티널 운영하기

패스워드 인증

복제본 우선순위

운영 중 센티널 구성 정보 변경

센티널 초기화

센티널 노드의 추가/제거

센티널의 자동 페일오버 과정

  1. 마스터의 장애 상황 감지
    1. down-after-milliseconds 값 이상 동안 PING에 대해 유효 응답을 받지 못하면 다운됐다고 판단
  2. sdown, odown 실패 상태로 전환
    1. 우선 sdown 상태로 플래깅 (subjectly down, 주관적 다운 상태)
    2. 다른 센티널에게 장애 사실 전파
    3. 쿼럼 값 이상의 센티널 노드에서 장애를 인지하면 odown 상태로 변경 (objectly down, 객관적 다운 상태)
    4. 장애 전파는 마스터 노드에 대해서만 이뤄지기에 복제본은 sdown 상태만을 가진다.
  3. 에포크 증가
    1. 처음 odown으로 인지한 센티널 노드가 페일오버를 시작
    2. 페일오버를 시작하기 전 에포크 값을 증가시킨다. (첫 페일오버라면 1)
    3. 에포크 값을 이용해 여러 센티널 노드가 같은 작업을 시도하고 있다는 것을 보장할 수 있다.
  4. 센티널 리더 선출
    1. 에포크를 증가시킨 센티널은 다른 센티널 노드에게 리더 선출 투표 메시지를 에포크와 함께 보낸다.
    2. 메시지를 받은 노드는 받은 에포크 값이 자신의 값보다 큰 경우 에포크를 증가시킨 뒤 투표 응답을 보낸다.
    3. 만약 받은 에포크 값이 자신과 동일하다면 이미 투표한 센티널 id를 응답한다.
  5. 복제본 선정 후 마스터로 승격
    1. replica-priority가 낮고 마스터로부터 더 많은 데이터를 수신한 복제본을 마스터로 선출
    2. 위 두 값이 동일하다면 runID가 작은 복제본을 선택
    3. 선정한 복제본에서 slaveof no one 커맨드로 기존 마스터로부터의 복제를 끊난다.
  6. 복제 연결 변경
    1. 다른 복제본이 새로 승격된 마스터의 복제본이 될 수 있도록 북제 연결을 변경한다.
    2. 복제 그룹의 모든 센티널 노드에서도 레디스 구성 정보를 변경한다.
  7. 장애 조치 완료
    1. 모든 과정 완료 후 센티널은 새로운 마스터를 모니터링한다.

스플릿 브레인 현상

image