DB

[Redis] Redis Cluster

Raconer 2024. 3. 12. 23:31
728x90

확장성이란?

  • 소프트웨어나 서비스의 요구사항 수준이 증가할 때 대응할 수 있는 능력
  • 주로 규모에 대한 확장성을 뜻함(데이터 크기, 요청 트래픽 등)
  • 수직 확장(Scale-up)과 수평 확장(Scale-out)이 사용됨

수평 확장(Scale-Out)

  • 처리 요소(ex: 서버)를 여러개 두어서 작업을 분산
  • 무중단 확장이 가능
  • 이론적으로는 무한대로 확장이 가능 

분산 시스템에 따라오는 문제

  • 부분 장애
  • 네트워크 실패
  • 데이터 동기화
  • 로드밸런싱(또는 Discovery)
  • 개발 및 관리의 복잡성

분산 시스템의 적용

  • 분산 시스템으로 인한 trade-off 를 판단해서 적합하다면 사용
  • 서비스 복잡도와 규모의 증가로 분산은 피할수 없는 선택
  • 분산 시스템의 구현체들은 세부적인 부분에서 튜닝이 가능하게 옵션이 제공됨
    • 즉. 분산 시스템의 장단점을 세부적으로 조절 가능

Redis Cluster란?

  • 여러 노드에 자동적인 데이터 분산
  • 일부 노드의 실패나 통신 단절에도 계속 작동하는 가용성
  • 고성능을 보장하면서 선형 확장성을 제공

Redis Cluster 특징

  • full-mesh 구조로 통신
    • 모든 노드가 모든 노드와 연결되어 있다.
  • cluster bus라는 추가 채널(port) 사용
    • 16379 port를 cluster bus로 사용한다.
  • gossip protocol사용
    •  많은 노드가 통신을 할때 근처 노드끼리 통신하여 데이터를 공유한다.
      • 소문이 퍼지는것처럼 퍼트린다.
  • hash slot을 사용한 키 관리
  • DB0만 사용가능
  • multi key명령어가 제한됨
  • 클라이언트는 모든 노드에 접속

 Sentinel과의 차이점

  • 클러스터는 데이터 분산(샤딩)을 제공함
  • 클러스터는 자동 장애조치를 위한 모니터링 노드(Sentinel)를 추가 배치할 필요가 없음
  • 클러스터에서는 multi key 오퍼레이션이 제한됨
  • Sentinel을 비교적 단순하고 소규모의 시스템에서 HA(고 가용성)가 필요할 때 채
728x90