서버 운영
혼자 서버 운영하면서 반복했던 실수들
팀 없이 서버를 관리하면 같은 실수를 반복하기 쉽다. 내가 실제로 여러 번 당했던 것들을 정리했다.
팀 없이 서버를 혼자 관리하면 실수를 봐줄 사람이 없다. 그래서 같은 실수를 반복하는 경우가 생각보다 많다. 내가 여러 번 겪은 것들을 정리해봤다.
문제가 생기면 여러 곳을 동시에 고친다
가장 흔한 실수다. 서비스가 안 되면 급해져서 nginx 설정도 바꾸고, 포트도 열고, 서비스도 재시작하고, 환경변수도 수정한다 — 동시에.
그러면 결국 뭐가 문제였는지 알 수 없다. 하나씩 바꾸고 확인하는 게 느려 보여도 실제로는 더 빠르다.
로그를 보기 전에 설정 파일을 고친다
로그를 확인하기 전에 "아마 이게 문제겠지" 하고 설정을 바꾸는 건 추측으로 수리하는 것이다.
sudo journalctl -u nginx -n 50 --no-pager
sudo journalctl -f # 실시간 확인
대부분의 경우 로그에 원인이 있다. 먼저 읽는 습관만 들여도 삽질 시간이 절반은 준다.
디스크 용량을 확인하지 않는다
서비스가 갑자기 죽거나 로그가 안 쌓이면 디스크 용량을 먼저 의심해야 한다. 실제로 겪어보면 생각보다 자주 원인이 여기 있다.
df -h
du -sh /var/log/* | sort -rh | head -10
특히 /var/log가 조용히 쌓이는 경우가 많다. Docker를 쓰면 /var/lib/docker도 주범이 되곤 한다.
방화벽과 프로세스를 동시에 안 본다
포트가 열려 있어도 프로세스가 안 듣고 있으면 접속이 안 된다. 반대로 프로세스가 듣고 있어도 방화벽이 막으면 마찬가지다. 두 가지를 함께 봐야 한다.
sudo ss -lntp | grep LISTEN
sudo ufw status
변경 전 상태를 기록하지 않는다
설정 파일을 고치기 전에 백업을 안 해두면, 나중에 뭘 바꿨는지 알기 어렵다. 간단하게라도 이렇게 해두는 게 낫다.
cp /etc/nginx/nginx.conf /etc/nginx/nginx.conf.bak.$(date +%Y%m%d)
복잡한 도구가 아니어도 된다. 날짜 붙인 복사본 하나가 수십 분을 아껴준다.
하나씩 보면 당연한 얘기처럼 들리지만, 실제로 장애 상황에서는 이 당연한 것들을 안 지키게 된다. 메모해두고 다음에는 덜 반복하는 게 목표다.