전체 문서

Getting Started

CICDoo란 시작하기: 온보딩 마법사 대시보드와 인프라 맵

Concepts

프로덕션, 스테이징, 개발 스테이지 도메인, 서브도메인, SSL Odoo 버전과 에디션 (Community와 Enterprise) 워크스페이스와 팀 협업

Servers

서버 추가하기 서버 도메인과 DNS 로드 밸런서 사용하기 서버 작업: 배포, 로그, 차트

Projects & Git

프로젝트 만들기 GitHub 연결하기 GitLab 연결하기 브랜치와 인스턴스 프로젝트에 태그 달기와 필터링 앱 노드를 이용한 고가용성

Instances & Console

인스턴스 만들기 인스턴스 재시작, 중지, 삭제 스테이지 간 브랜치 병합 웹 IDE와 원격 접속 인스턴스 설정 설명 배포와 작업 큐

Agent Tasks

에이전트 작업이란 에이전트 작업 설정하기 작업 실행과 결과 검토 에이전트 시간과 추가 구매

Monitoring & Backups

인스턴스 모니터링 백업과 복원 경고 알림 (이메일과 SMS)

Workspaces & Permissions

워크스페이스 멤버 초대하기 멤버 권한과 리소스 접근 멤버가 리소스를 보거나 사용할 수 없습니다

Account & Security

2단계 인증 (2FA) 프로필과 연동 설정 비밀번호와 계정 복구

Billing & Plans

요금제와 가격 업그레이드와 구독 관리 프로젝트 구독이 미납된 경우 채널 파트너 프로그램

Support & Tickets

지원 티켓 열기 CICDoo 팀에 도움 요청하기

Troubleshooting

문제 해결: 서버를 연결할 수 없습니다 문제 해결: 배포가 실패했습니다 문제 해결: 저장소를 옮긴 뒤 git push가 403으로 실패합니다 문제 해결: 인스턴스가 중단되거나 느립니다 문제 해결: 도메인 또는 SSL 문제

프로젝트 및 Git

앱 노드를 이용한 고가용성

데이터베이스를 실행하는 기본 프로젝트와 이를 서비스하는 앱 노드로, 하나의 프로덕션 Odoo 데이터베이스를 여러 서버에서 실행하는 방법을 설명합니다.

작동 방식

고가용성을 사용하면 하나의 Odoo 데이터베이스의 프로덕션을 여러 서버에서 동시에 실행할 수 있습니다. 한 서버가 응답하지 않으면 방문자는 다른 서버로 보내집니다.

클러스터는 같은 코드를 실행하는 프로젝트들로 구성됩니다:

  • 기본 프로젝트: 프로덕션 인스턴스가 Odoo와 데이터베이스를 실행하는 프로젝트입니다. 이 데이터베이스는 앱 노드에만 열려 있고 그 외에는 누구에게도 열려 있지 않습니다.
  • 앱 노드: 각각 다른 프로덕션 서버에 있는 다른 프로젝트로, 프로덕션 인스턴스가 Odoo만 실행하고 기본 프로젝트의 데이터베이스를 사용합니다.

방문자는 기본 프로젝트의 주소를 사용합니다. CICDoo는 그 주소가 기본 프로젝트와 응답 중인 모든 앱 노드를 가리키도록 하고, 몇 분마다 각 노드를 확인합니다. 응답하지 않는 노드는 회복될 때까지 주소에서 제외됩니다.

데이터베이스 자체는 여전히 하나의 서버, 즉 기본 프로젝트의 서버에서 실행됩니다. 앱 노드는 Odoo 쪽을 이중화합니다. 기본 프로젝트의 서버가 다운되면 사이트도 함께 다운됩니다.

시작하기 전에

  • 같은 코드: 클러스터의 모든 프로젝트는 같은 저장소, 기본 브랜치, Odoo 버전, 에디션을 사용해야 합니다. Time Machine이 켜져 있다면 고정된 커밋도 일치해야 합니다.
  • 서로 다른 서버: 각 앱 노드에는 기본 프로젝트 및 다른 노드의 서버와 다른, 자체 프로덕션 서버가 있어야 합니다.
  • Cloudflare 프록시: 현재 노드 간 트래픽 분산은 Cloudflare 프록시가 활성화된 서버에서 작동합니다. 앱 노드가 제공하는 모든 페이지가 기본 프로젝트의 데이터베이스와 통신하므로 같은 리전의 서버를 사용하세요.
  • 공유 파일스토어: 클러스터의 모든 서버는 Odoo 파일스토어용으로 같은 공유 스토리지를 마운트해야 합니다. 그렇지 않으면 한 노드를 통해 업로드한 첨부 파일이 다른 노드에는 없고, 다른 노드로 연결된 방문자는 로그아웃됩니다. 설정에 도움이 필요하면 지원팀에 문의하세요.
  • 데이터베이스 연결: 각 앱 노드는 기본 프로젝트의 데이터베이스에 자체 연결을 엽니다. 노드를 추가할수록 기본 프로젝트 프로덕션 인스턴스 콘솔의 설정 탭에 있는 PostgreSQL 설정에서 max_connections를 높이세요.

고가용성 설정은 프로젝트 설정의 고급 탭, 고가용성 카드에 있습니다. 프로젝트 설정을 변경할 권한이 필요합니다.

기본 프로젝트 설정하기

데이터베이스를 실행할 프로젝트를 열고 프로젝트 설정 > 고급으로 이동한 다음, 고가용성에서 역할을 기본 (앱 + 데이터베이스)로 설정합니다. 적용을 클릭하고 확인합니다.

프로덕션 인스턴스가 재시작됩니다. 다시 올라오면 그 데이터베이스는 클러스터의 앱 노드로부터 연결을 받습니다. 서버들이 사설 네트워크를 공유하지 않는 한 서버 간 연결은 암호화됩니다.

프로덕션 인스턴스는 자체 번들 데이터베이스를 사용해야 합니다. 프로덕션 인스턴스가 외부 데이터베이스를 가리키는 프로젝트는 기본 프로젝트가 될 수 없습니다.

앱 노드 추가하기

평소처럼 노드용 프로젝트를 만듭니다. 같은 저장소와 기본 브랜치, 같은 버전과 에디션, 그리고 자체 프로덕션 서버를 사용합니다. 그 프로젝트에 있는 스테이징 및 개발 인스턴스는 모두 제거하세요. 앱 노드는 프로덕션만 실행하며, 스테이징과 개발 브랜치는 기본 프로젝트에 둡니다.

그런 다음 노드의 프로젝트 설정 > 고급을 열고, 역할을 앱 노드 (기본 프로젝트의 데이터베이스 사용)로 설정한 뒤 데이터베이스 원본에서 기본 프로젝트를 선택하고, 적용을 클릭해 확인합니다. 같은 워크스페이스에서 같은 코드를 실행하는 기본 프로젝트만 선택지에 나타납니다.

노드는 바로 시작되지 않습니다. 먼저 기본 프로젝트의 서버가 노드를 허용해야 하며, 이는 다음 확인 때 이루어지고 보통 5분 이내입니다. 그때까지 카드에는 "기본 프로젝트가 이 노드를 허용하기를 기다리는 중입니다"가 표시되고, 허용되는 즉시 노드가 자동으로 시작됩니다. 노드가 응답하기 시작하고 몇 분 뒤부터 방문자를 받기 시작합니다.

기본 프로젝트에서는 고가용성 카드에 앱 노드 목록과 데이터베이스 서버가 현재 접근 목록을 적용했는지 여부가 표시됩니다.

앱 노드에서 달라지는 점

  • 프로덕션 인스턴스에 자체 데이터베이스가 없습니다. 데이터베이스 설정은 CICDoo가 관리하며 인스턴스의 Odoo 구성에서 변경할 수 없습니다.
  • 예약 작업(Odoo cron)은 기본 프로젝트에서만 실행됩니다.
  • 백업은 기본 프로젝트에서 수행됩니다. 클러스터 데이터베이스의 백업과 복원은 기본 프로젝트에서 하세요.
  • 앱 노드의 브랜치에 푸시하는 것만으로는 아무 일도 일어나지 않습니다. 클러스터는 기본 프로젝트에서 업데이트됩니다.

업데이트 배포하기

평소처럼 기본 프로젝트의 브랜치에 푸시합니다. 그러면 CICDoo가 클러스터 전체를 순서대로 업데이트합니다:

  1. 각 앱 노드를 중지합니다.
  2. 다른 서버가 데이터베이스를 사용하지 않는 동안 모듈 업그레이드를 포함해 기본 프로젝트를 업데이트합니다.
  3. 각 앱 노드를 새 코드로 다시 시작합니다.

각 단계는 그 단계가 실행되는 인스턴스의 큐 탭에서 확인할 수 있습니다. 기본 프로젝트의 업데이트가 실패하면 앱 노드는 다시 시작되지 않으며, 해당 큐 항목에 이유가 표시됩니다. 문제를 해결하고 다시 배포하세요.

모듈 업그레이드는 데이터베이스를 단독으로 사용해야 하므로, 단일 인스턴스와 마찬가지로 기본 프로젝트가 업데이트되는 동안 사이트를 사용할 수 없습니다.

클러스터에서 나가기

앱 노드를 제거하려면 역할을 다시 독립 (자체 데이터베이스)으로 설정하고 적용을 클릭합니다. 노드 자체의 데이터베이스에는 클러스터의 데이터가 없으므로 프로덕션 인스턴스가 중지됩니다. 다시 시작하기 전에 백업을 복원하세요.

기본 프로젝트는 앱 노드가 남아 있는 동안에는 변경할 수 없습니다. 먼저 노드를 제거하세요.

문제 해결

  • 노드가 계속 허용을 기다립니다: 기본 프로젝트의 프로덕션 인스턴스가 실행 중이고 그 서버가 온라인인지 확인하세요. 기본 프로젝트가 된 뒤 한 번 재시작해야 어떤 노드든 허용됩니다.
  • 노드는 시작되지만 Odoo가 올라오지 않습니다: 노드의 로그를 여세요. 기본 프로젝트의 데이터베이스가 초기화되지 않았다는 메시지가 있다면 기본 프로젝트가 첫 시작을 아직 마치지 않은 것입니다.
  • 업로드나 로그인이 노드 간에 방문자를 따라가지 않습니다: 서버들이 파일스토어를 공유하지 않고 있습니다. 위의 "시작하기 전에"를 참고하세요.

인스턴스가 브랜치에 어떻게 대응되는지는 브랜치와 인스턴스를, 별개 기능인 서버 수준의 로드 밸런서 설정은 로드 밸런서 사용하기를 참고하세요.

여전히 해결되지 않나요? 앱에서 티켓을 열거나 엔지니어와 상담하세요.