저희 Discourse 설치 환경은 공식 저장소를 기반으로 한 표준 설치 방식이며, 로그인 시스템으로 SSO 통합만을 사용하고 있습니다. 수년간 대규모 사용자 기반을 서비스해 왔으며, 몇 가지 다른 애플리케이션이 실행 중인 Ubuntu 기반 전용 서버에서 운영되고 있었는데, 다행히도 큰 문제 없이 잘 작동해 왔습니다.
불행히도 최근 자발적인 장애가 발생하여 더 이상 전혀 작동하지 않는 상태입니다.
초기 보고에 따르면 사이트가 seemingly random한 500 에러를 많이 발생시키고 알림이 전달되지 않았지만, 그 외에는 여전히 기능이 작동했습니다. 당시 컨텍스트는 설치가 1~2개월 전에 마지막으로 업데이트되었고, 설치 환경이나 서버 환경에 변경 사항이 없었기 때문에 이러한 상황은 의외였습니다.
500 에러가 발생하고 있음을 확인한 후, 처음에는 서버와 컨테이너를 재시작해 보았지만 효과가 없었습니다. 또한 모든 패키지를 최신 상태로 업데이트하기 위해 "apt-get update"도 실행했습니다. 백엔드를 통해 Discourse를 업데이트하려고 시도했지만, 관리자 링크로 로그인할 때 이메일로 로그인 링크가 전송되지 않았고, 컨테이너 재시작 후 관리자 로그인 페이지에서는 500 에러만 발생했습니다.
저도 하드웨어, OS 또는 기타 서버 환경에 이상 징후가 있는지 확인해 보았지만, 아무런 문제가 발견되지 않았습니다.
그다음 CLI를 통한 전체 재빌드와 “git pull” 업데이트를 시도했습니다. 그러나 업그레이드 중 데이터베이스 마이그레이션 단계에서 다음과 같은 오류로 실패했습니다:
I, [2022-08-09T23:15:21.229857 #1] INFO -- : > cd /var/www/discourse && su discourse -c 'LOAD_PLUGINS=0 bundle exec rake plugin:pull_compatible_all'
I, [2022-08-09T23:15:23.938876 #1] INFO -- : docker_manager is already at latest compatible version
I, [2022-08-09T23:15:23.939220 #1] INFO -- : > cd /var/www/discourse && su discourse -c 'bundle exec rake db:migrate'
2022-08-09 23:15:28.956 UTC [835] discourse@discourse ERROR: duplicate key value violates unique constraint "idx_bookmarks_user_polymorphic_unique"
2022-08-09 23:15:28.956 UTC [835] discourse@discourse DETAIL: Key (user_id, bookmarkable_type, bookmarkable_id)=(4115, Post, 103355) already exists.
2022-08-09 23:15:28.956 UTC [835] discourse@discourse STATEMENT: UPDATE bookmarks
SET bookmarkable_id = post_id, bookmarkable_type = 'Post'
WHERE NOT bookmarks.for_topic AND bookmarkable_id IS NULL
rake aborted!
StandardError: An error has occurred, this and all later migrations canceled:
ERROR: duplicate key value violates unique constraint "idx_bookmarks_user_polymorphic_unique"
DETAIL: Key (user_id, bookmarkable_type, bookmarkable_id)=(4115, Post, 103355) already exists.
데이터베이스 불일치가 있다면 어떻게 발생했는지 전혀 모르겠습니다… 필요하면 콘솔 히스토리의 나머지 부분을 제공할 수 있습니다.
"./discourse-doctor"를 실행하면 표면적인 문제 없이 완료되었지만, 메일 서버 설정에 대한 경고 - “certificate verify failed (self signed certificate)” - 가 있었습니다. 이는 이메일이 전송되지 않은 이유를 설명할 수 있을지도 모릅니다. 이전에는 현재와 같은 설정으로 이메일이 정상적으로 전송되었었고, 메일 서버는 그 외에는 문제없이 작동하는 것으로 보이므로 이 부분에 대해서는 확신이 서지 않습니다.
현재 사이트는 완전히 다운된 상태입니다(실패한 업데이트 후 500 에러만 반환됨). 외부 지원을 구하는 것 외에 어떻게 진행해야 할지 전혀 감이 잡히지 않습니다. 어떤 지침이든 매우 감사하겠습니다!