<aside> 💡
요약
AWS ( Easticache ) Redis OSS Cluster Mode 마스터-슬레이브 구조의 복제 환경에서 발생하는 지연 ( Lag ) 문제 분석
</aside>
Redis 네트워크 송수신 지표가 비정상적으로 튀는 현상이 발견
Redis 구성
Cluster Mode 마스터-슬레이브 구조
샤드 : 1개 / 노드 : 3개 ( 1개의 마스터 노드 / 2개의 슬레이브 노드 ) 로 구성
AWS 콘솔에서 한글로 “마스터임” 이라고 표시되고 있음
repl-backlog-size
기본값은 1MB
메모리 사용량, CPU 사용량, 네트워크 송수신 정보를 차례대로 보면서 문제의 원인을 유추
지표 상으로 보면 마스터 ( 001 )
는 잔잔하다.
슬레이브 ( 002, 003 )
노드가 요동치고 있는데, 이런 상황을 만들어지게 된 계기가 무엇인지 생각해보면 마스터 데이터 동기화 과정에서 이슈가 있거나, 수 많은 요청이 슬레이브에 몰린다고 볼 수 있을거 같다.
ReplicationLag: 슬레이브 노드가 마스터와 얼마나 지연되어 있는지 보여주는 AWS CloudWatch 지표.
네트워크 송수신 지표: 일부 구간에서 복제 트래픽 증가 관찰.
Redis INFO replication 명령어 출력: INFO replication
repl-backlog-active
, repl-backlog-size
, state
, master-repl-offest
, second-repl-offset
, repl-backlog-histlen
repl-backlog-active
: 복제 백로그 활성 여부 ( 1 : 활성화 , 0 : 비활성화 )repl-backlog-size
: 복제 백로그 최대 크기 ( 바이트 단위 )state
: 마스터 또는 슬레이브 복제 상태 ( online : 동기화 완료 )master-repl-offest
: 마스터가 현재까지 처리한 데이터의 복제 오프셋 의미
슬레이브가 동기화 상태를 판단할 때 기준점으로 사용second-repl-offset
: 특정 슬레이브 노드가 복제된 데이터 스트림에서 처리한 마지막 오프셋을 나타냅니다. 단, 복제 과정에서 문제가 생긴 경우에 추적용으로 정상 처리 건에서는 활용 되지 않음repl-backlog-histlen
: 현재 복제 백로그에서 실제로 사용되고 있는 데이터의 크기(바이트 단위)repl-backlog-size
부족:
repl-backlog-histlen
> repl-backlog-size
약소하지만 크다