본문 바로가기
IT Knowledge/기타

레디스(Redis) 고가용성(HA-High Availability)

by Seok. 2020. 12. 11.
반응형

Redis 고가용성(HA)

 

Redis 고가용성(HA) 위해 Replication(Master-Slave) 구조를 지원하며,

추가적으로 Sentinel or Cluster 구성 방법을 제공한다.

 

In-Memory DB 장애시 위험성

Redis 마스터노드가 다운이 되면, 메모리내에 저장되었던 데이터는 유실이 됩니다.

다행히, 리플리카 노드가 구성되어 있다면, 다행히 리플리카 노드에 데이터가 남아있을것입니다.

 

장애 상황이 단순하여 금방 마스터노드를 살릴 수 있는 상황이면 다행이지만,

장애가 단시간에 처리가 어려운 장애라면, 기간동안 데이터가 유실될 수도 있습니다.

이러한 장애를 피하기 위해서 존재하는것이 Sentinel 노드를 모니터링하고 있다가, 리플리카 노드를 마스터 노드로 승격시키는 Failover 지원합니다.

 

  • Replication : 실시간 복제구성
  • Sentinel : Auto Failover
  • Redis Cluster
    • 샤딩(Sharding)

 

[Replication]

'마스터 노드' 데이터를 실시간으로 '리플리카 노드' 복사된다.

따라서, 서비스하던 '마스터 노드' 죽더라도, '리플리카 노드' 재연결해주면 서비스를 계속 있다.

 

Master-Replica 제공 형태

마스터 노드는 1개만 존재

 Master Slave 사이의 Replication Async 방식

1 개의 마스터에 N개의 리플리카
리플리카 노드에 추가 리플리카 노드 연결

 

장애상황

  1. Master 장애시, Slave 주기적으로 Master Connection 요청하여 복구될 때까지 대기
  2. Master 복구되면, Slave Replication 수행하여 Master 동기화
  3. Master 복구가 어려운 상황이면? Slave중에 하나를 Master 승격.
    • 나머지 Slave 변경한 Master 통해 Replication 받도록 수정.

 

 

[Sentinel]

장애 상황에서 마스터와 리플리카 사이에 수동으로 전환해줘야 하는 작업의 가용성 저하를 해결하기 위해 사용한다.

Sentinel 마스터 노드와 리플리카 노드를 계속 모니터링하면서, 장애 상황이 발생하면, 리플리카 노드를 마스터로 승격시키기 위해 Auto Failover 진행.

 

  • 모니터링 , 담당자에게 알림설정도 가능.
  • 정상적인 기능을 위해서 적어도 3개의 Sentinel 인스턴스가 필요.
  • 3대의 Sentinel 모든 노드를 감시하고 있다가, 장애 발생시 3대의 Sentinel중에 과반수 이상 동의를 하면 Auto Failover 진행된다.

 

이를위해서 어플리케이션은 마스터나 복제 노드에 직접 연결하지 않고, Sentinel 노드와 연결.

Sentinel 노드는 어플리케이션에게 현재 마스터 노드의 IP,Port 알려줍니다.

 

[Cluster]

  • 확장 : 노드를 추가할 있음.(최소 3개의 마스터 노드 필요)
  • Failover 위해 Master N대의 Slave 필요
  • 데이터세트을 여러 노드로 자동분할 하는 기능(샤딩) - 최대 1000
  • 일부 노드가 다운되어도 계속 작업을 있는 기능(고가용성)
  • Cluster 구성하는 Redis 간에 Gossip Protocol 통해 통신한다.

장애발생 FailOver

마스터 노드에 장애가 발생할 경우, 해당 Master Slave Gossip Protocol 통해 장애를 파악한다.

이후 스스로 Master 승격하여 Master 대신한다.

장애가 발생한 Master 복구될경우, 스스로 Slave 강등

 

샤딩(Sharding)

파티셔닝이라고도 불리는데, 데이터를 특정 조건에 따라 분할 저장하는 방법이다. (쓰기분산)

Ex) 15개의 값이 있으면, 노드 A : 0~5 / 노드 B : 6~10 / 노드 C : 11~15

 

  • 장점 : 여러 데이터를 분할 저장하므로, 많은 데이터 저장이 가능, 많은 쓰기 연산 처리 가능
  • 단점 : 어플리케이션 복잡도 증가 / 1개로 요청이 몰리는경우, 성능확장을 위해 서비스 수정 or 중단이 불가피하다.

 

 

참고 : https://meetup.toast.com/posts/226

반응형

'IT Knowledge > 기타' 카테고리의 다른 글

Disk 파티션(GPT vs MBR)  (0) 2021.03.10
Helm 설치하기(Helm 3 Windows Linux)  (0) 2021.01.18
Helm 개념과 구조 기술조사  (0) 2021.01.14
레디스(Redis)란 무엇인가? 기본정리  (1) 2020.12.11
공유기 vs 허브 차이점  (0) 2020.12.03

댓글