개발

certbot renew 과정 중 발생하는 random delay 문제

certbot renew 과정 중 발생하는 random delay 문제
목차
내가 운용중인 도커 서버는 월에 2번 certbot으로 발급받은 인증서를 갱신하는 자동화 프로세스가 짜여져있다.
다만 이게 최근에 문제가 발생해서 뭔일인가 싶어 뒤집어보니 아래와 같은 두가지 문제가 있었다.


1. 너무많은 컨테이너 down/up

슬슬 도커 컨테이너를 100개단위로 운용하다보니가 각각의 컨테이너간의 의존성 문제때문에 일부 컨테이너가 restart 무한루프에 빠져있다는걸 알게되었다.

이부분은 80포트를 담당하는 프록시 서버만 stop/start 해주는 방식으로 간단하게 보정했다.
이때까지만해도 왜 이런 문제가 발생했는지 전혀 파악을 하지 못하고있었다.


2. certbot renew Random Delay

이번 문제의 핵심요원이다.

랜덤딜레이, 말그대로 무작위 지연시간을 부여하는 코드이다.
나는 서버 자동화 작업을 새벽3시에 해놔서 지금까지 별로 자각하지 못했는데, 실제로는 갱신작업이 진행될때 아래와 같이 갱신 지연시간이 랜덤하게 설정되고 그 시간초 이후에 작업이 진행된다는걸 최근 조사로 알게되었다.

certbot renew 과정 중 발생하는 random delay 문제옛날버전 자료지만 현재와 플로우는 비슷하다

실제로 현재버전 certbot은 0~480초 사이의 랜덤 딜레이를 부여하게 설정이 되어있다.
근데 가끔 이런 딜레이와 서버상황이 맞물리면 타임아웃 문제가 발생할수도 있다는것이다.

그래서 certbot 2버전 이후부터는 이런 딜레이를 무효화할 수 있는 파라미터 코드가 있다고한다.

--no-random-sleep-on-renewCopy

그게바로 이것이다.
근데 나는 사용하고있는 certbot 버전이 1.3이라 위 파라미터를 인식하지 못한다.

이제와서 잘돌아가는 이미지 버전을 리스크있게 올리기도 뭐하고, 대기인증시간이 있다는것도 알았으니 그거에 관련되게 다시 프로세스를 보완하면 되는거니까 말이다.


본문 이미지갱신대상이 되는 인증서 단계가 오자 그냥 멈춰버린다

처음엔 왜 작동을 안하고 멈춰버리지하고 취소하고 다시 갱신하고를 반복하면서 문제를 찾아보았는데, 실제 관련 로그를 찍어보니까 아래와 같이 내용이 있었고, 이를 바탕으로 이제와서 랜덤 딜레이라는 내부 로직이 있다는걸 알게된 것이다.

...
2025-07-15 23:21:51,563:DEBUG:certbot._internal.storage:Should renew, less than 30 days before certificate expiry 2025-08-12 17:07:06 UTC.
2025-07-15 23:21:51,563:INFO:certbot._internal.renewal:Certificate is due for renewal, auto-renewing...
2025-07-15 23:21:51,563:INFO:certbot._internal.renewal:Non-interactive renewal: random delay of 280.64612243342765 secondsCopy

진짜 모르면 왜 갑자기 프로세스가 중지하는지 눈치도 못챌정도로 프로세스가 슬립이 되기때문에...
기록겸 관련이슈를 남겨보고자한다.



해결방법이라면 그냥 저 딜레이가 끝날때까지 기다리거나 2버전 이상쓴다면 랜덤 딜레이 무효 파라미터를 넣으면된다.

#Ubuntu #SSL #docker
0 개의 댓글
×