로드 밸런서 뒤에 web_only 컨테이너가 있는 멀티 노드 환경에서 설정을 변경할 때 일부 설정이 단일 노드(변경 사항을 로드 밸런서를 통해 연결한 노드일 가능성이 높음)에만 적용되는 것을 확인했습니다. 특히 Global notice, Globally pinned posts, 그리고 최근 커스텀 테마를 업데이트하기 위해 테마를 변경할 때 이러한 문제가 발생했습니다.
결국 변경 사항은 사용자가 변경 사항이 이루어진 동일한 노드에 로드 밸런서를 통해 연결된 경우에만 표시됩니다. 이로 인해 일부 경우 페이지 로드가 혼재되고 사이트 렌더링이 엉망이 되기도 합니다.
질문이 있습니다. 이러한 변경 사항 이후에 rake를 통해 모든 노드에서 설정 재로드 명령을 실행해야 하는지, 아니면 컨테이너 실행 시 설정이 자동으로 재로드되고 클러스터 모드로 설정이 자매 노드에 자동으로 전파되도록 특정 환경 변수를 추가해야 하는지 궁금합니다.
감사합니다! 뭔가 빠뜨린 것 같은 느낌이 들었습니다. 어떤 설정 변경 후에 이러한 작업이 필요한지에 대해 언급된 문서가 있을까요? 문서들을 빠르게 살펴봤지만 해당 사항이나 HA 설정에 관한 내용은 찾지 못했습니다.
수정: cache:clear가 사용 불가능한 것 같습니다.
docker exec -it web_only bash
root@discourse-build-web-only:/# cd /var/www/discourse
root@discourse-build-web-only:/var/www/discourse# su discourse -c 'bundle exec rake cache:clear'
rake aborted!
Don't know how to build task 'cache:clear' (See the list of available tasks with `rake --tasks`)
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/rake-13.3.0/exe/rake:27:in `<top (required)>'
/usr/local/bin/bundle:25:in `load'
/usr/local/bin/bundle:25:in `<main>'
(See full trace by running task with --trace)
아, 결국 Global messages on xx timed out, message bus is no longer functioning correctly 메시지가 있었던 거군요. 하지만 실수로 실제 로그 디렉터리만 확인하고 있었습니다. 이제 웹 인터페이스의 로그 오류 섹션을 살펴보니 말씀하신 항목들이 실제로 보이네요. Discourse에서는 서로 다른 오류가 서로 다른 위치에 표시된다는 점에 익숙해져야 할 것 같습니다. 그래도 Discourse 웹 인터페이스에 이런 기능이 있는 것은 여전히 좋은 점입니다.