본문 바로가기
BackEnd/Project

[BigData] Ch04. 가격비교 API에 사용될 Redis 설정(2)

by 개발 Blog 2024. 9. 15.

공부 내용을 정리하고 앞으로의 학습에 이해를 돕기 위해 작성합니다.

 

직전 포스트에 이어서 Redis sentinel을 설치하고 구성하는 과정을 진행한다. sentinel은 고가용성을 위해 홀수 개수로 설치하는 것이 좋다.

 

Sentinel 설치

Ubuntu 서버에 Redis sentinel을 설치한다.

sudo su
apt-get update
apt-get install redis-sentinel

 

설치 확인

설치가 제대로 되었는지 확인한다.

ps -ef | grep sentinel

 

설정 파일 수정

/etc/redis/sentinel.conf 파일을 수정하여 sentinel이 모니터링할 master 노드를 설정한다.

cd /etc/redis/
vi sentinel.conf
sentinel monitor mymaster <master-ip> 6379 2
protected-mode no

 

새로운 서버 준비

두 VM에 Sentinel 설치가 완료되었다. Sentinel은 홀수 개 있어야 하며, 아직 서비스를 개발하지 않았으나 VM을 하나 더 만들어 Sentinel부터 설치한다.

 

인스턴스 생성

새로운 서버 인스턴스를 생성한다. 보안 그룹 설정은 기존과 동일하게 진행한다.

 

my_price_service 인스턴스에 접속하여 sentinel을 설치한다.

sudo su
apt-get update
apt-get install redis-sentinel

 

설치 후 각 서버에서 Sentinel 서비스를 중지한다.

service sentinel stop

 

설정 파일 수정

각 VM에서 /etc/redis/sentinel.conf 파일을 열어 sentinel monitor mymaster가 첫 번째 Redis 서버의 주소로 설정되어 있는지 확인한다. 여기서 '2'는 장애 판단을 위한 최소 Sentinel 수를 의미한다.

 

보안 그룹 설정

AWS 관리 콘솔을 통해 각 Sentinel 인스턴스의 통신을 위해 26379 포트를 열어준다.

Sentinel 서비스 시작

설정이 끝났으니 모든 VM에서 Sentinel 서비스를 다시 시작한다.

 service sentinel start

 

로그를 통해 Sentinel이 제대로 모니터링 중인지 확인한다.

tail -f /var/log/redis/redis-sentinel.log

 

페일오버 테스트

my_first_redis

 

my_second_redis

 

마스터 서버를 중단하여 페일오버를 유도한다.

service redis stop

 

페일오버 과정(my_price_service)

1. 문제 발생

  • 기존 마스터 서버(172.31.15.62)가 다운된다.
  • Sentinel이 마스터 다운을 감지한다. (+sdown, +odown)

2. 페일오버 준비

  • Sentinel이 새로운 설정을 저장한다. (+new-epoch)
  • 리더 선출을 위한 투표를 진행한다. (+vote-for-leader)
  • 페일오버 딜레이로 인해 즉시 페일오버를 수행하지 않고 일정 시간(약 6분) 대기한다.

3. 페일오버 실행

  • Sentinel이 새로운 마스터(172.31.5.157)로 전환된다. (+switch-master)
  • 이전 마스터(172.31.15.62)는 슬레이브로 변경된다.

결과 확인

새로운 마스터와 슬레이브의 역할을 확인한다.

 

my_first_service

 

my_second_service

새로운 마스터가 되었던 서버(157)는 role:master로, 이전 마스터는 role:slave로 변경된 것을 확인할 수 있다.

Redis Sentinel을 활용한 자동 페일오버 설정 과정을 마쳤다. 이 설정을 통해 Redis 클러스터의 고가용성을 보장하고 장애 대응력을 강화할 수 있다. 페일오버 테스트를 통해 시스템의 견고함을 확인하였으며, 이 과정을 통해 데이터의 안정성과 서비스의 연속성을 유지할 수 있다.