이야기박스

Redis High Availability; Sentinel vs Cluster 본문

Computer & Data/Big Data

Redis High Availability; Sentinel vs Cluster

박스님 2022. 8. 20. 16:29
반응형

Overview

지난 포스팅에서 Redis가 무엇인지 가볍게 살펴보는 시간을 가졌었습니다. 이번 포스팅에서는 Redis의 HA 구성을 주제로 Sentinel과 Cluster 두 방식을 비교해보도록 하겠습니다.

 

What is Redis; Remote Dictionary Server

Airflow의 CeleryExecutor를 사용할 때, Redis가 Queue로써 동작하는 것을 알고 있었지만, 지금까지 이를 제대로 알아보고자 한 적이 없었습니다. 이번 기회에 Redis가 무엇인지, 어떠한 구조로 이루어져 있

box0830.tistory.com

 

Sentinel

Sentinel이라는 이름이 처음에는 낯설었지만, 어느 순간부터 zookeeper를 생각하면서 읽다 보니 괜스레 친숙하게 느껴지더라고요.

Sentinel의 주요 역할은 다음과 같습니다.

  • Monitoring: Master / Slave에 이상이 없는지 체크
  • Notification: 문제가 발생한 경우, 다른 프로그램 혹은 프로그램 관리자에게 알림 제공
  • Automatic Failover: Master에 문제가 발생한 경우, 새로운 Master를 선출하게 됩니다.

# Failover

과반수 이상의 Sentinel 인스턴스에서 Master 장애를 감지하여야 Failover를 동작하게 됩니다. 

Failover 탐지는 아래 두 방식으로 이루어지게 됩니다.

  • SDOWN(Subjectively Down)
    • Sentinel -> Master로 주기적으로 보내는 Ping이 응답하지 않는 경우
  • ODOWN(Objectively Down)
    • 설정 값의 quorum 이상의 Setinel SDOWN 인지되면, Redis 장애로 인지
    • Note. quorum: 얼마나 많은 Sentinel이 장애로 인지해야 Redis의 장애로 인지할지 판별하는 기준 값

 

# Zookeeper와의 차이점

Client가 서비스의 주소를 알기 위해 Zookeeper에 직접 요청을 보내는 일은 흔치 않습니다. 반면에 Sentinel에서는 Client가 Master의 주소를 알기 위하여 Sentinel에 우선 호출을 진행해야 합니다.

 

Cluster

대규모 클러스터 환경이 많아진 요즘 시대에 걸맞는, 어떻게 보자면 Sentinel에서 진화된 형태로도 보입니다.

Redis Cluster는 Sentinel에서처럼 Automatic Failover를 지원하고 더 나아가 Data Sharding까지 지원하게 됩니다.

# Data sharding

Multi-Master / Multi-Slave 구조를 가지게 됩니다. 여기서 Data sharding은 Master 단위로 진행되게 되고, 그렇기에 Master당 최소 하나의 Slave가 존재하지 않는다면 데이터 유실이 발생할 수 있습니다. 

 

Sharding은 CRC16 해시 함수 및 모듈로 연산을 활용하여 Hash slot으로 나누게 됩니다. 

 

# Failover

Master가 죽는 경우, 기존 Slave 중 하나가 Master로 승격되게 됩니다. 그리고 기존 Master가 다시 살아나게 되면 새로운 Master의 Slave가 됩니다.

 

Sentinel vs Cluster 비교

개인적으로 소규모 환경에서는 Sentinel, 대규모 환경에서는 Cluster 구성을 하는 게 맞다고 봅니다.

 

예를 들어 Airflow의 Celery Executor는 요청량 자체가 많지 않은데, 다중 Master에 Sharding까지 지원하는 Cluster 구성은 요구사항에 비해 과하지 않나 싶습니다.

 

반면에, 트래픽이 큰 서비스의 경우 저장되는 데이터도 많을 것이기 때문에 Sentinel보다는 Cluster 구성을 하는 게 좋지 않을까 생각됩니다.

 

후기

Redis 문서들은 작년 이맘때, Airflow helm 구성할 때 봤었습니다. 근데 1년이 지나고 잘 사용하지 않는 기술이다 보니 기억이 잘 안나더라고요. 더 오래 지나 완전히 잊히기 전에 글을 남겨야겠다는 생각이 들어 이렇게 포스팅을 정리해봅니다.

 

Reference

https://cloudinfrastructureservices.co.uk/redis-sentinel-vs-cluster/

 

Redis Sentinel vs Cluster - Which is Better? (Pros and Cons)

Redis Sentinel vs Cluster - Which is Better?.  In this article we will discuss the differences between Redis Sentinel vs Cluster with their pros and

cloudinfrastructureservices.co.uk

반응형