andy212
(Andy)
1
Discourse가 스탠드얼론 로드 밸런서 뒤에 여러 대의 머신(각각 단일 Docker 컨테이너를 실행)을 지원하는가?
서버 장애에 대비할 수 있는 Discourse 구성이 필요하므로, 표준적인 대응책으로 로드 밸런서 뒤에 3대의 서버를 구성하는 방식을 취합니다. (SSL 인증서는 로드 밸런서가 처리합니다.)
Discourse를 위해 스탠드얼론 외부 Postgres와 Redis 서버를 구성했습니다. (모든 구성은 Google Cloud Platform에서 이루어집니다.) Web 전용 Docker 컨테이너를 구성하기 위해 Discourse launcher를 사용하고 있습니다.
- 각 컨테이너가 서로 다른 머신에 있는 경우, Discourse는 여러 컨테이너를 실행하는 것을 지원하는가?
- 첫 번째 머신에서 생성된 Docker 컨테이너를 다른 머신으로 그대로 복사하면 되는가?
- 업로드된 로고는 어떻게 처리되는가?
- 업로드된 로고, 파비콘 등이 데이터베이스에 저장되는가?
도움 주셔서 감사합니다.
Falco
(Falco)
2
네, 저희 호스팅 서비스에서 그렇게 운영하고 있습니다.
- 네
- 네
- 업로드용 오브젝트 스토리지 사용 (S3 & Clones)을 구성해야 합니다.
- 아니요, 3번에서 언급했듯이 오브젝트 스토리지로 저장됩니다.
andy212
(Andy)
3
라파엘, 감사합니다. 정말 감사드립니다.
로드 밸런서에서 SSL이 종료되는 환경에서 문제를 겪고 있습니다. Discourse는 모든 링크를 HTTP로 지정하고 있습니다.
Discourse가 링크를 HTTPS로 사용하도록 설정하는 방법이 있을까요?
Falco
(Falco)
4
네, rails 콘솔로 진입하여 다음과 같이 https로 설정하세요:
cd /var/discourse
./launcher enter app
rails c
SiteSetting.force_https = true
andy212
(Andy)
5
훌륭합니다. 다시 한번 감사합니다.
app.yml에 다음을 추가할 수 있을 것 같습니다:
- exec: rails c "SiteSetting.force_https = true"
저는 rails에 대해 전혀 알지 못합니다. 위의 명령어에서 'rails c’를 사용해야 하는지, 아니면 'rails r’를 사용해야 하는지 궁금합니다.
Falco
(Falco)
6
Bootstrap에서 사이트 설정을 변경하는 예제가 샘플 파일에 있습니다:
andy212
(Andy)
7
네, 제가 그 명령어를 복사한 곳이 바로 거기입니다.
마지막으로 한 가지 질문이 있습니다. Docker 컨테이너가 모니터링되고 있나요? Docker 컨테이너가 어떤 이유로든 중단되면, launcher가 재시작을 위해 무언가를 설정해 두었나요?
riking
(Kane York)
8
네, launcher가 Docker에 컨테이너를 자동 재시작하도록 요청합니다.
andy212
(Andy)
11
네. 이제 단일 머신에서 정상적으로 작동하는 Discourse를 구축했습니다. 다른 머신 두 대가 더 있습니다. Docker 게스트의 /shared 볼륨을 NFS 디렉토리로 지정하여 모든 머신이 업로드 파일(특히 로고 등)에 접근할 수 있도록 했습니다.
Docker 이미지를 머신 2와 3에 복사했습니다(docker save -o app-image local_discourse/app 실행 후 docker load -i app-image 실행).
단순히 ./launcher start app만 실행하면 작동할 줄 알았는데, containers/app.yml을 확인하려고 합니다.
머신 2와 3에서 app.yml을 확인(및 변경)하도록 허용하고 이를 DB에 반영하면 문제가 발생합니까?
세 대의 머신에서 단일 설정을 실행하는 더 나은 방법이 있을까요?
pfaffman
(Jay Pfaffman)
14
ENV에 DISCOURSE_FORCE_HTTPS: true를 설정하겠습니다.