본문 바로가기

카테고리 없음

레디스 클러스터

레디스 클러스터

 1. 여러 노드에 자동으로 데이터 분산

 2. 일부 노드가 실패하더라도 가용성 제공

 3.  분산과 확장성 보정

 

특징

 1 .full mesh구조 (모든 노드가 연결됨)

  2. gossip protocol사용 

 3. hashslot을 사용한 키 관리

 

센티넬이랑 차이

 1. 클러스터는 데이트를 분산

 2 . 자동 장애 조치를 위해 모니터링 노드를 추가 배치할 필요 없음

 3. 클러스터는 multi key 오퍼레이션 제한 

 

클러스터 데이터 분산 기준

 - 단순 해싱은 문제가 있음 노드가 추가 되거나 재거되면 데이터를 재정렬 해줘야 함.

   -> hash("user:a") %2

 

Hash Slot을 이용해 데이터 분산

 - Redis는 16384개의 hash slot으로 key 공간을 나누어 관리

 - 각 키는 CRC16해싱 후 16384로 modulo연산을 해 각 해시 슬롯에 매핑

 - 해시슬롯은 각 노드들에게 나우어 분배

 - 컨텍스트 해싱 같음

 

노드가 추가되면 아래와 같이 되는것 같음

 - https://server-talk.tistory.com/509

 

Redis - Cluster Node Slot 분배하기

Redis - Cluster Node Slot 분배하기 이번 포스팅에서는 Redis Cluster reshard 명령을 통한 Master Node 추가 방법을 알아보도록 하겠습니다. Redis 이전글 https://server-talk.tistory.com/471 - Redis - In-Memory - 알아보기​

server-talk.tistory.com

 

 

클라이언트 해시

  - 클라이언트는 모든 클러스터에 붙어야 됨 6개라면 6개 모두 접속해야함

 -  클러스터 노드는 요청이 오면 자기 담당이 아니라면 무브드 에러를냄

  - 에러날때 어떤 노드에 있는지 알려줌

 - 클라이언트는 다시 올바른 노드로 재시도 함

 

클라이언트 재시도가 일어나는경우가 많지 않음

 - 클라이언트가 키값과 노드의 매핑 테이블을 캐싱하고 있음

 - 노드가 추가 삭제/ 장애 될때 캐싱을 업데이트 해줌

 - 평소에는 재시도가 일어나지 않음

 

클러스터 데이터 일관성

 - 레디스 클러스터는 스트롱 컨시스턴시(모든노드에서 모든 데이터를 복제) 제공 하지 않음

 - 성능 문제 때문에 비동기 복제를 함