외부 Postgres와 Redis를 사용하여 자체 ‘stable’ 버전의 Discourse를 설치했습니다.
아키텍처에 대해 정확히 말씀드리면: Azure 환경에서 1개의 LoadBalancer, NFS 공유를 통한 백업 및 이미지 저장을 위한 Discourse 컨테이너를 호스팅하는 1개의 VM, 1개의 Postgres, 1개의 Redis로 구성되어 있습니다.
자체 로고, discourse-calendar 및 discourse-news 플러그인(그 외 여기서는 관련 없는 다른 사항들 포함)으로 커스터마이징을 했습니다.
무작위로 약 30분 정도의 기간 동안 일부 UI 오류가 발생합니다:
메인 로고가 기본 로고로 되돌아옵니다.
파비콘이 기본 파비콘으로 되돌아옵니다.
discourse-calendar가 생성한 “upcoming-events” 페이지가 사라집니다(링크가 없고 URL로 직접 접속 시 404 응답이 반환됩니다).
discourse-news에 지정된 커스텀 로고(URL 지정)가 사라집니다.
이후 다시 정상으로 돌아옵니다.
로그에는 이에 대한 정보가 전혀 없습니다.
브라우저 콘솔에도 아무것도 표시되지 않습니다.
알 수 있는 한 가지는 이 기간 동안 Redis 캐시 미스(cache misses)가 증가한다는 점입니다.
이 문제를 해결하는 데 도움을 주실 수 있는 분이 있을까요? 관련 로그를 어디서 찾아야 할지조차 모르겠습니다…
알겠습니다. 그렇게 하면 작동할 것 같네요. 제 추측으로는 가상 머신을 0개로 축소(scale down)하는 과정에서 브라우저에 캐시된 사이트가 표시되고 있는 것 같습니다. 아니면 로드 밸런서가 호스트에 연결되지 못하는 다른 문제가 있을 수도 있고요. 또는 Discourse가 실제 IP를 받지 못해 레이트 리미팅이 적용되는 경우일 수도 있지만, 보통은 그 경우 에러가 표시되죠.
하지만 현재 고가용성 기능이 오히려 낮은 가용성을 제공하고 있습니다. 대부분의 시간 동안 수십 명의 사용자가 접속하다가 가끔 수천 명으로 급증하는 경우(스포츠 사이트처럼)가 아니라면, 오토스케일링은 해결보다는 더 많은 문제를 일으킬 가능성이 큽니다.
따라서 제가 먼저 할 일은 로드 밸런서를 제거해 보며 문제가 해결되는지 확인하는 것입니다. 그 다음에 어떻게 할지 결정하면 됩니다. 한 달에 한 번 정도 발생하는 문제라면 원인을 파악하기가 쉽지 않을 겁니다.