IL-0067 BC Government · 2025-07-09kubernetes
bcgov GitHub 조직의 klamm 위키에 Klamm 팀이 남긴 Redis 캐시 장애 포스트모템이다. 포스트모템 양식을 일부만 채운 문서여서 장애 ID, 시작과 끝 시각, 시간순 기록, 교훈은 비어 있다. 심각도는 Critical 로 적혀 있다.
2025년 7월 9일 Klamm Laravel 워커 하나에서 I/O 작업이 크게 늘면서 Redis 캐시 요청이 급증했다. Redis 마스터의 영구 볼륨은 스토리지 요청값이 50Mi 로 잡혀 있어 급격히 커지는 AOF 를 감당하지 못했고 곧 가득 찼다. Redis 는 fsync 로 버퍼에 쌓인 쓰기를 디스크에 내려 데이터를 보존한다. 디스크가 차서 fsync 가 실패하자 Redis 는 복구할 수 없는 상태가 되어 프로세스가 종료됐고, OpenShift 에서 Redis 컨테이너가 크래시했다.
디스크가 가득 찬 상태에서 쓰기를 끝까지 마치지 못해 AOF 가 깨졌다. Redis 는 다시 시작할 때마다 이 AOF 를 읽어 데이터를 복구하려 했지만 "invalid byte sequence" 오류로 해석하지 못하고 다시 크래시했다. 파드는 크래시 루프에 빠져 준비 상태가 되지 못했다. 캐시가 오래 멈추자 큐 워커들이 타임아웃됐고, Redis 에 의존하는 서비스가 크게 영향을 받았다. 팀은 스테이트풀셋과 디플로이먼트를 멈추고, 깨진 PVC 를 지운 뒤 다시 만들고, 둘을 다시 시작해 복구했다. PVC 를 다시 만들면서 데이터를 잃었다. Klamm 운영 환경은 업무 시간 외에 약 30분 동안 완전히 멈췄다.
2025년 7월 9일 OpenShift 위의 Klamm 캐시 Redis 클러스터가 멈췄다. Redis 로그에는 "Fail to fsync the AOF file: No space left on device" 오류가 남았다. AOF 는 Redis 가 쓰기 명령을 차례로 덧붙여 저장하는 파일이다.
Redis 컨테이너는 크래시한 뒤 다시 시작하며 AOF 를 읽으려 했지만 "invalid byte sequence" 오류로 파일을 해석하지 못했다. 컨테이너가 계속 크래시해 파드가 준비 상태가 되지 못했고, Redis 에 닿지 못한 큐 워커들이 타임아웃됐다. Klamm 운영 환경은 업무 시간 외에 약 30분 동안 완전히 멈췄다.
원인 ? 용량 한계
–
–
같은 원인 · 공통 인메모리 캐시
같은 원인 · 공통 영구 볼륨과 스테이트풀셋
같은 원인 · 공통 인메모리 캐시