Redis

로컬 환경에서 Redis Cluster 구성하기

leeheefull 2024. 6. 13. 23:13

서론

API 서버에서 데이터를 더 빠르게 읽을 수 있도록 Batch 서버에서 캐시를 적재하는데, 해당 로직에 새로운 기능을 추가하는 업무를 맡게 되었습니다. 이 과정에서 애플리케이션의 로컬 환경에서 캐시 데이터를 즉각적으로 적재, 수정, 삭제하며 개발을 진행하기 위해 Redis 로컬 환경을 구성하고 연동하는 것이 필요하다고 판단했습니다.

특히, Batch 서버에서 사용되는 Redis가 클러스터 구조로 되어 있어 이를 로컬 환경에서 재현하고 테스트하는 데 어려움이 있었습니다. 이러한 문제를 해결하면서, 로컬 환경에서 Redis 클러스터를 설정하고 이를 서버에 연동하는 방법을 공유하고자 합니다.

본론 1: Redis Cluster 구조

Redis Standalone 구조

기본적으로 Redis를 설치하고 실행하면 standalone 구조로 실행됩니다. Standalone 구조란 단일 Redis 서버 인스턴스가 모든 데이터를 관리하고 처리하는 구조를 의미합니다. 일반적으로 이 인스턴스는 6379 포트에서 실행됩니다.

Redis Cluster 구조

Redis cluster 구조

반면, 클러스터 구조는 여러 개의 Redis 인스턴스가 협력하여 데이터를 분산 저장하고 처리하는 구조를 말합니다. 이를 통해 데이터의 가용성과 확장성을 높일 수 있습니다. 클러스터 구조에서는 데이터를 여러 노드에 분산시켜 저장하므로, 하나의 노드에 장애가 발생해도 다른 노드가 이를 보완할 수 있습니다. 또한, 수평적 확장이 가능하여 대규모 데이터 처리에 유리합니다.

본론 2: Redis 설치 및 실행

Mac 환경에서 Redis 설치

Mac 환경에서 Redis를 설치하는 방법은 매우 간단합니다. 터미널을 열고 다음 명령어를 실행하면 됩니다.

brew install redis

Redis 설정 파일

Redis는 redis.conf 설정 파일을 기반으로 실행됩니다. 제 redis.conf 파일의 위치는 다음과 같습니다.

redis.conf

Redis 실행

redis.conf 파일이 존재하는 디렉토리에서 다음 명령어를 입력하여 Redis를 실행하면 됩니다.

redis-server redis.conf

이 명령어를 실행하면 기본적으로 단일 인스턴스로 실행되는 standalone 구조로 Redis가 실행됩니다. 이제 다음 단계로, Redis 클러스터 구조를 구성해 보겠습니다.

본론 3: 로컬 환경에서 Redis Cluster 구성하기

디렉토리 및 설정 파일 생성

Redis를 클러스터 구조로 구성하려면 각 노드마다 별도의 Redis 인스턴스를 실행해야 합니다. 먼저, 다음과 같이 포트별로 6개의 디렉토리를 생성합니다.

포트 별 디렉토리 생성

각 디렉토리에는 별도의 redis.conf 파일을 생성해야 합니다. 간단한 클러스터 구성을 위해 다음과 같은 최소 설정을 사용할 수 있습니다.

redis.conf 최소 설정

위와 같은 설정 파일을 6개의 디렉토리에 각각 생성합니다. 포트 번호를 각 디렉토리에 맞게 변경해야 합니다.

포트 별 redis.conf 생성

Redis 인스턴스 실행

각 디렉토리로 이동하여 해당 포트에 대한 Redis 인스턴스를 실행합니다. 이를 위해 터미널을 6개 열고 각각 다음 명령어를 입력합니다.

Redis 6개 인스턴스 각각 실행

이제 6개의 노드 Redis 서버가 실행 중입니다.

클러스터 노드 조인

클러스터에 노드를 조인하기 위해 다음 명령어를 실행합니다.

redis-cli --cluster create 127.0.0.1:7001 127.0.0.1:7002 \
127.0.0.1:7003 127.0.0.1:7004 127.0.0.1:7005 127.0.0.1:7006 \
--cluster-replicas 1

명령어 실행 중에 ‘yes’를 입력하여 계속해서 진행합니다.

Redis cluster node join

클러스터 확인

이제 클러스터가 설정되었습니다. IntelliJ Database 등을 사용하여 간편하게 확인할 수 있도록 URL을 설정합니다.

jdbc:redis:cluster://127.0.0.1:7001,127.0.0.1:7002,127.0.0.1:7003,127.0.0.1:7004,127.0.0.1:7005,127.0.0.1:7006/0
IntelliJ Database에서 redis cluster 연결
이제 애플리케이션에 redis cluster node들을 연동하여 local 환경에서 실행해볼 수 있게 되었습니다.

결론

이번 글에서는 로컬 환경에서 Redis 클러스터를 구성하는 방법을 살펴보았습니다. 단일 인스턴스의 Redis 설치부터 시작해, 각 노드에 대한 설정 파일 작성, 인스턴스 실행, 클러스터 조인 명령어 실행까지 단계별로 진행했습니다.

아쉽게도, redis.conf 설정 파일에 있는 설정 값들에 대해서 설명하지 않았지만, 해당 내용은 참조 링크를 통해 참고해 주시기 바랍니다.

이 과정을 통해 Redis 클러스터의 기본 개념과 설정 방법을 실제로 경험해 볼 수 있었습니다. 특히, 로컬 환경에서 클러스터를 구성하고 테스트하면서 Redis의 가용성과 확장성에 대해 깊이 이해할 수 있는 기회가 되었습니다. 또한, 예상치 못한 문제들을 해결하는 과정에서 많은 것을 배울 수 있었습니다.

앞으로도 Redis와 같은 분산 시스템을 적극적으로 활용해 보고, 이를 통해 데이터 처리 성능을 극대화할 수 있는 다양한 방법을 탐구할 계획입니다.

이상입니다. 감사합니다.

Reference