장애접수
6시쯤 퇴근하려는 찰나 특정 엘라스틱서치에서 로그인이 안된다는 접수가 들어왔습니다. 처음에는 단순한 에러라고 생각했는데 시간이 지나갈수록 아니라는 것을 느꼈습니다.
증상
엘라스틱서치과 키바나는 쿠버네티스로 실행되고 있었습니다. probe검사를 통과하고 있어서 겉보기에 정상이었습니다. 신기하게도 엘라스틱서치는 로그인이 되는데 키바나는 로그인이 실패하는 것입니다. 🤔🤔🤔
같은 계정/비밀번호를 사용하는데 키바나만 실패하는 것이 너무 신기한 상황이었죠.
1차 장애복구 시도
계정/비밀번호 불일치 때문에 생긴 에러가 아니라는 것은 금방 알게되었습니다. 계정/비밀번호가 틀리면 invalid username/password라는 에러가 발생하는데, 에러 메세지는 "Oops. Error" 였습니다.
처음에는 단순하게 키바나, 엘라스틱서치 로그를 조회했습니다. 눈에 보이는 에러가 없다고 판단하여 키바나를 재부팅하기로 했습니다.(재부팅 하는 순간 .security index오류이지 않을까라는 생각이 스쳐가듯..)
키바나를 재부팅해도 로그인 되지 않은 에러는 사라지지 않았습니다.
2차 장애복구 시도
키바나는 로그인되지 않았지만, 이전에 안보이던 유의미한 로그가 생겼습니다. "index allocation is failed"❗️
에러 메세지를 보자마자 바로 엘라스틱서치 pod 쉘로 접속했습니다. 그리고 shard상태를 살펴보니 unassigned된 shard가 있었습니다.
curl http://localhost:9200/_cat/shards
엘라스틱서치 troubleshooting경험이 없다보니 헤매고 있었습니다. 그러던 와중에 관리자가 제자리에 찾아오고 열심히 같이 디버깅을 시적했습니다. 관리자님의 탁월한 눈썰미로 allocation failed메세지를 볼 수 있는 엘라스틱서치API를 사용하기로 했습니다.
curl -X GET _cluster/allocation/explain
API를 사용하니 에러상세내용이 나왔습니다. 엘라스틱서치가 뻗지 않도록 저장장치 85%만 사용하도록 용량을 제한했는데, 그 제한이 걸린 겁니다. 즉, 엘라스틱서치에 할당한 용량 85%이상을 사용해서 더 이상 shard가 할당이 안되는 상황이었죠.
# 에러 메세지
the low watermark cluster.setting cluster.routing.allocation.disk.watermark.low=85%
엘라스틱서치에 더 이상 저장장치 크기를 늘리는 것은 안되는 상황이었습니다. 그래서 내일 엘라스틱서치 사용자에게 용량을 줄여달라는 부탁을하고 가이드를 드리는 걸로 결론을 냈습니다. 다행히 엘라스틱서치API는 실행이 되는 상황이었으니까요.
재현방지
떠오른건 2가지가 있었습니다.
1. 특정 기준치가 넘으면 알림 메세지 전달
2. 현재 저장장치 사용현황 표기
'회고모음' 카테고리의 다른 글
SAA-C03 자격증 취득 후기와 공부 방법 (0) | 2023.09.18 |
---|---|
t102 스터디 count vs for_each 영상 제작 회고 (0) | 2023.07.14 |
부분 폐쇄망에서 누군가 chatgpt API쓰다가 ... (0) | 2023.03.10 |
클래스 상속을 이용하여 if~else문 리팩토링 (0) | 2023.02.14 |
주말에 오픈소스 업그레이드 지원을 가면서 ... (1) | 2023.02.12 |