Skip to content

Redis Master‐Slave‐Sentinel

권성준 edited this page Sep 19, 2023 · 1 revision

Redis 아키텍처

  1. 원인 : Board_Member의 많은 사람들이 서비스를 사용하고 있다면 Scale OUT으로 대용량 트래픽을 감당하게 됩니다.

  2. 문제 : 대부분의 웹 서비스는 stateful한 서비스 입니다.
    서버에 저장된 사용자의 세션 정보를 기반으로 사용자 맞춤 서비스를 제공할수 있기 때문입니다.
    그러나 분산 서버 환경(Scale OUT) 에서 이를 구현하기란 쉽지 않습니다.
    각 서버마다 있는 세션 저장소에 저장되어 있는 세션 정보들이 다른 서버와 공유되지 않기 때문입니다.

  3. 결과 : 사용자는 로그인을 하였지만 세션이 하나의 서버에만 저장되어 다른 서버에서 서비스 이용이 불가능하게 됩니다.

  • 따라서, 다수의 서버의 세션을 관리할 수 있는 Redis 서버를 따로 구현하였습니다.
    또한, 장애대응 및 Redis의 단점인 세션유실 방지를 위하여 Redis Replication을 사용하여
    Master - Slave 환경을 구축했습니다.

How to Manage

  • Redis는 휘발성을 가지고있는 메모리상의 데이터 저장소이기 때문에 항상 데이터가 유실될 문제를 안고 있습니다.
    그래서 데이터 복사 기능을 제공하는데 데이터를 복사해서 Slave용 레디스 서버 혹은 디스크로 전송하여
    저장하는 방식을 선택합니다.
  • Board_Member 의 Redis에는 인기있는 서비스의 세션을 저장하게 되는데
    세션 유실방지를 위하여 Master - Slave구조를 택하였습니다.
Clone this wiki locally