S3 자동 백업이 작동하지 않음 - 백업은 실행되지만 관리자 UI에서 수동으로 실행하지 않으면 업로드되지 않음

안녕하세요,

저는 EKS 클러스터에 Discourse를 배포하고 있으며, IAM Roles for Service Accounts를 사용하여 두 개의 S3 버킷(자산용과 백업용)에 접근하도록 설정했습니다. s3_use_iam_profile 플래그는 true로 설정되어 있습니다.

백업 설정은 매일 실행되도록 되어 있으며, S3 백업 버킷에 업로드되어야 합니다. 하지만 로그에서 백업이 실행되는 것은 확인되는데, 완료 후 S3에 업로드해야 할 단계가 마치 설정되지 않은 것처럼 건너뛰어집니다.

IRSA나 IAM 프로필이 작동하지 않는다는 오래된 게시글(Discourse does not support service account and IAM role for S3 backup)을 찾았습니다. 그런데 관리 UI를 통해 백업을 수동으로 실행하면 완료되고 S3에 업로드가 정상적으로 이루어집니다. 이 문제를 자동으로 해결하려면 추가로 설정해야 할 부분이 있을까요?

감사합니다.

Steve

잘 모르겠어요. 다음으로 확인할 내용을 제안해 드릴게요.

EKS가 백업이 압축되어 S3로 전송되기 전에 종료되고 있는 건 아닌가요? 디스크 공간 부족 같은 문제 때문일 수도 있어요.

Jay님,

모든 것이 정상적으로 보입니다. Pod 로그를 확인해 보니 자동 백업이 성공적으로 완료되고 정상 종료되고 있습니다. 원격(remote)이 활성화되어 있는지 확인하는 체크가 옳지 않게 false를 반환하는 것 같습니다.

현재 v3.0.1 버전을 사용 중이며, 이 버전은 해당 커밋(Commits · discourse/discourse · GitHub)에서 빌드되었습니다.

코드를 살펴보면, false를 반환하는 부분은 이 줄입니다 - discourse/lib/backup_restore/backuper.rb at 4571b10ee5a3c46249271b2870d6eaf37994460f · discourse/discourse · GitHub

흥미로운 두 가지 사항을 발견했습니다:

  1. 관리자 UI에서 수동으로 백업을 실행하면 성공적으로 완료되며 압축된 gzip 파일이 S3에 업로드됩니다.
  2. v3.0.1 이후 위의 코드 줄이 변경된 것으로 보입니다. 해당 줄은 return unless @store.remote?에서 return unless store.remote?로 바뀌었습니다. 제 Ruby 실력은 그리 좋지 않지만, 구글 검색 결과 @변수는 self의 인스턴스 변수라고 합니다. 그렇다면 v3.0.1에서 이 기능이 작동하도록 하기 위해 추가로 설정해야 하는 것이 있는지, 아니면 v3.0.2로 업그레이드해야 하는지 알려 주실 수 있을까요?

다시 한번 감사합니다.

다시 말씀드리지만, 저도 정확히는 모르지만, 일반적으로 이상한 동작이 발생하면 업그레이드하는 것이 좋은 방법입니다.

아래 코드가 호출되어야 할 것 같습니다:

왜 실패하는지는 모르겠습니다.

네, 제이님 감사합니다.

업그레이드를 시도해서 도움이 되는지 확인해 보겠습니다. 결과를 알려드리겠습니다.

스티브 드림