여러 인스턴스의 Discourse 동기화

마스터 서버를 하나 보유하고 있으며, 100~200개 이상의 슬레이브 인스턴스를 운영할 계획입니다. 슬레이브 인스턴스는 온라인/오프라인 상태가 될 수 있지만 사용자들이 계속 사용할 것입니다. 오프라인 상태였던 인스턴스가 다시 온라인으로 전환되면, 충돌 없이 마스터 서버와 동기화되어 최신 데이터를 모두 가져와야 합니다. Discourse가 자주 업데이트되므로, 코드 변경으로 인해 인스턴스가 깨지는 것을 원하지 않기 때문에 코드 관련 변경 사항은 전혀 만들고 싶지 않습니다.

PostgreSQL을 어느 정도 조정하는 방안을 고려하고 있습니다. 데이터와 관련된 기타 파일은 Syncthing을 통해 동기화할 수 있습니다. 하지만 PostgreSQL 데이터를 업데이트하는 부분이 걱정됩니다. 마스터 데이터를 그대로 동기화하면 오프라인 상태였던 동안 사용자가 수행한 작업이 동기화 후 사라질 수 있기 때문입니다.

데이터베이스의 모든 테이블에서 자동 증가(aut-increment) 시퀀스를 UUID로 변경하는 것을 시도해 볼 생각입니다.

이 문제를 해결할 수 있는 간단하고 가능한 솔루션이 있을까요?

Discourse는 이러한 유형의 애플리케이션을 위해 설계되지 않았습니다. Discourse를 깨뜨리지 않는 방식으로 양방향 postgres 동기화를 구현하는 것은 매우 불가능에 가깝습니다.

이러한 변경을 하려면 Discourse 코드에 상당한 수정이 필요합니다.

슬레이브를 읽기 전용으로 설정하고 postgres를 일방향으로 동기화한다면 작동할 가능성이 있습니다… 하지만 어려울 것입니다

안녕하세요, 저도 여러분과 비슷한 용도로 사용할 계획입니다. 두 개의 Discourse 사이트를 병합하는 방법에 대한 글을 찾았습니다. 병합 단계를 자동화할 수 있다면, 크론 작업을 설정하여 마스터 서버와 슬레이브 인스턴스 간 데이터베이스를 지속적으로 병합할 수 있지 않을까요?