ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [Redis] Sentinel을 이용한 자동 장애조치
    DataBase/NoSQL 2023. 2. 19. 16:30

    1. master-replica-sentinel 구성을 위해 아래와 같이 docker-compose.yml 파일을 작성한다.

     

    docker-compose_master-replica-sentinel.yml
    0.00MB

     

    2. docker-compose yml파일을 build한다. 

     

    3. master, replica, sentinel 3대가  떠 있는 것을 확인한다. 

     

    4. sentinel1의 컨테이너에서 redis에 진입해서 바라보고 있는 master의 정보를 확인한다. 

    $ info sentinel

     

    다른 prompt에서 master의 ip주소를 확인한다. 

    $ docker inspect redis-master

     

    sentinel1에서 조회한 master의 ip가 실제 master ip와 일치하는 것을 확인할 수 있다.

     

    5. master를 stop한다. 

    sentinel1, sentinel2, sentinel3가 모두 sdown을 선언했다. 

     

    6. quorum을 3/2로 만족해 odown이 선언되고 master가 172.18.0.2에서 172.18.0.3으로 전환되었다. 

    172.18.0.3의 주인은 replica다. 

     

    7. replica가 master 모드로 전환되었음을 확인한다. 

     

    8. sentinel들이 기존 master를 찾지 못 해 계속해서 로깅을 하고 있다. 

     

    9. sentinel1로 들어가본다. sentinel1의 master ip 주소가 172.18.0.3으로 바뀌었다. 바로 replica의 주소다.

     

    10. 다시 기존의 master를 구동시킨다. 

    $ docker start redis-master

     

    11. 기존 master가 다시 들어왔어도 redis-master는 replica로 유지되고 있다. 

     

    12. sentinel1로 들어가서 master ip를 확인해봐도 여전히 replica가 master의 역할을 수행하고 있다. 

     

    13. master의 컨테이너에 들어가서 set을 해본다. 이런! slave로 바뀐 redis-master는 set을 할 수 없다. 

     

    14. Spring Boot를 이용한다면 client는 sentinel에만 붙으면 된다. 아래와 같이 application.yml 파일만 작성하면 master와 replica로의 접근은 spring boot가 알아서 해준다. 

    client가 sentinel에 붙기 위해 작성해야 할 application.yml (feat.Spring Boot)

     

     

    ※ fast campus의 "백엔드 개발자를 위한 한 번에 끝내는 대용량 데이터 & 트래픽 처리 초격차 패키지"를 수강하고 정리한 글입니다. 

    'DataBase > NoSQL' 카테고리의 다른 글

    [Redis] 백업을 통한 데이터 영속화  (0) 2023.03.12
    [Redis] 서비스 고가용성을 위한 Replica  (0) 2023.02.19

    댓글

Designed by Tistory.