카테고리 없음

Redis에서 Keepalived란?

idea9329 2024. 12. 3. 13:12
반응형

 

Keepalived는 Redis의 기능이 아니라, Linux 기반의 고가용성(High Availability, HA) 솔루션으로, Redis 서버의 가용성을 높이기 위해 사용되는 외부 도구입니다.

Keepalived는 VIP(Virtual IP Address)를 사용하여 장애 발생 시 마스터-슬레이브 전환 또는 장애 조치(Failover)를 자동으로 수행할 수 있도록 돕습니다.


Redis와 Keepalived의 관계

  • Redis는 기본적으로 Sentinel이라는 내장 도구를 사용하여 클러스터의 고가용성을 관리합니다.
  • 그러나 Sentinel 대신 또는 함께 Keepalived를 사용하면 보다 안정적이고 간단한 장애 조치 구성을 제공할 수 있습니다.
  • Keepalived는 VIP를 기반으로 장애 시 슬레이브를 마스터로 승격시키고, 클라이언트가 서비스 중단 없이 새로운 마스터에 접근할 수 있도록 지원합니다.

Keepalived의 주요 역할

  1. 장애 조치(Failover)
    • Redis 마스터가 다운되면 Keepalived가 VIP를 슬레이브 노드로 이전하여 자동 장애 복구.
  2. 로드 밸런싱
    • 여러 Redis 노드가 있을 경우 VIP를 통해 클라이언트 요청을 분산.
  3. 고가용성 유지
    • Redis 서비스가 항상 접근 가능하도록 장애 노드 복구 시까지 대체 노드로 트래픽을 전환.

Redis에서 Keepalived 동작 방식

1. 구성 요소

  • Master Node: Redis 마스터 역할을 수행하며 VIP를 소유.
  • Slave Node: Redis 복제본(슬레이브)으로 설정됨.
  • VIP(Virtual IP Address): 클라이언트가 접근하는 공통 IP 주소.

2. 동작 과정

  1. 클라이언트는 Redis에 VIP를 통해 접속.
  2. VIP는 Keepalived를 통해 현재 마스터 노드에 연결.
  3. 마스터 노드에 장애가 발생하면:
    • Keepalived가 슬레이브 노드 중 하나를 새로운 마스터로 승격.
    • VIP를 새 마스터 노드로 이전.
  4. 클라이언트는 VIP를 통해 계속 Redis에 접속, 중단 없이 서비스를 사용.

Keepalived를 사용한 Redis 구성 예시

1. 기본 설정 파일

  • Keepalived 설정 파일 예제 (/etc/keepalived/keepalived.conf):
vrrp_instance VI_1 {
    state MASTER
    interface eth0
    virtual_router_id 51
    priority 100
    advert_int 1

    authentication {
        auth_type PASS
        auth_pass 1234
    }

    virtual_ipaddress {
        192.168.1.100
    }

    track_script {
        chk_redis
    }
}

2. Redis 상태 체크 스크립트

  • Redis 상태를 감지하기 위한 스크립트 (/etc/keepalived/scripts/chk_redis):
#!/bin/bash

REDIS_CLI="/usr/bin/redis-cli"
REDIS_HOST="127.0.0.1"
REDIS_PORT="6379"

$REDIS_CLI -h $REDIS_HOST -p $REDIS_PORT ping | grep -q "PONG"
if [ $? -eq 0 ]; then
    exit 0
else
    exit 1
fi
  • 스크립트에 실행 권한 부여:
    chmod +x /etc/keepalived/scripts/chk_redis

Keepalived vs Redis Sentinel

기능KeepalivedRedis Sentinel

역할 VIP를 활용한 간단한 장애 조치. Redis의 내장 HA 솔루션으로 마스터-슬레이브 관리.
구성 방식 Redis 외부 도구로 VIP 관리. Redis 클러스터 내부에서 장애 복구 수행.
장애 조치 속도 빠름 (VIP 전환만 필요). 다소 느림 (Sentinel 노드 간의 협의 필요).
복잡성 간단함. 구성 및 설정이 더 복잡함.
확장성 단순한 구조로 대규모 확장은 어려움. 클러스터 확장에 적합.

Redis에서 Keepalived 사용의 장점

  1. 간단한 구성:
    • 복잡한 클러스터 구성 없이 고가용성을 구현.
  2. 빠른 장애 복구:
    • VIP를 이동시키는 방식으로 장애 시 서비스 중단을 최소화.
  3. 비용 효율성:
    • 추가적인 Redis Sentinel 노드 없이 고가용성을 구현.

Keepalived는 Redis와 함께 사용하면 간단하고 신속한 장애 조치 환경을 구축할 수 있어, 특히 단일 마스터-슬레이브 구성에서 고가용성을 필요로 하는 환경에 적합합니다. 😊

반응형