반응형
Keepalived는 Redis의 기능이 아니라, Linux 기반의 고가용성(High Availability, HA) 솔루션으로, Redis 서버의 가용성을 높이기 위해 사용되는 외부 도구입니다.
Keepalived는 VIP(Virtual IP Address)를 사용하여 장애 발생 시 마스터-슬레이브 전환 또는 장애 조치(Failover)를 자동으로 수행할 수 있도록 돕습니다.
Redis와 Keepalived의 관계
- Redis는 기본적으로 Sentinel이라는 내장 도구를 사용하여 클러스터의 고가용성을 관리합니다.
- 그러나 Sentinel 대신 또는 함께 Keepalived를 사용하면 보다 안정적이고 간단한 장애 조치 구성을 제공할 수 있습니다.
- Keepalived는 VIP를 기반으로 장애 시 슬레이브를 마스터로 승격시키고, 클라이언트가 서비스 중단 없이 새로운 마스터에 접근할 수 있도록 지원합니다.
Keepalived의 주요 역할
- 장애 조치(Failover)
- Redis 마스터가 다운되면 Keepalived가 VIP를 슬레이브 노드로 이전하여 자동 장애 복구.
- 로드 밸런싱
- 여러 Redis 노드가 있을 경우 VIP를 통해 클라이언트 요청을 분산.
- 고가용성 유지
- Redis 서비스가 항상 접근 가능하도록 장애 노드 복구 시까지 대체 노드로 트래픽을 전환.
Redis에서 Keepalived 동작 방식
1. 구성 요소
- Master Node: Redis 마스터 역할을 수행하며 VIP를 소유.
- Slave Node: Redis 복제본(슬레이브)으로 설정됨.
- VIP(Virtual IP Address): 클라이언트가 접근하는 공통 IP 주소.
2. 동작 과정
- 클라이언트는 Redis에 VIP를 통해 접속.
- VIP는 Keepalived를 통해 현재 마스터 노드에 연결.
- 마스터 노드에 장애가 발생하면:
- Keepalived가 슬레이브 노드 중 하나를 새로운 마스터로 승격.
- VIP를 새 마스터 노드로 이전.
- 클라이언트는 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 사용의 장점
- 간단한 구성:
- 복잡한 클러스터 구성 없이 고가용성을 구현.
- 빠른 장애 복구:
- VIP를 이동시키는 방식으로 장애 시 서비스 중단을 최소화.
- 비용 효율성:
- 추가적인 Redis Sentinel 노드 없이 고가용성을 구현.
Keepalived는 Redis와 함께 사용하면 간단하고 신속한 장애 조치 환경을 구축할 수 있어, 특히 단일 마스터-슬레이브 구성에서 고가용성을 필요로 하는 환경에 적합합니다. 😊
반응형