- 레플리카 세트로 구성된 MongoDB 8(트랜잭션을 사용함). 세 노드에 분산된 세 멤버는 노드 하나를 잃어도 유지되며, 멤버 하나로도 동작합니다.
- AOF 지속성을 갖춘 Redis 7 서버 하나. Redis에는 아직 MongoDB에 기록되지 않은 편집 내용, 세션, Overleaf 서비스 간 메시지가 저장됩니다. Overleaf는 단일 Redis 서버에 연결하며, Sentinel과 Redis Cluster는 지원되지 않습니다.
MongoDB Atlas나 클라우드의 Redis 같은 관리형 서비스를 대신 사용할 수 있습니다. 이 페이지를 건너뛰고 4단계에서
OVERLEAF_MONGO_URL과 OVERLEAF_REDIS_HOST를 해당 서비스로 설정하세요.1
MongoDB
10-mongo.yaml
PRIMARY, 나머지는 SECONDARY가 되어야 합니다. Job은 모든 멤버가 응답할 때까지 재시도하므로, 실패한 Job 파드가 몇 개 있는 것은 정상입니다.- 헤드리스 Service에는
publishNotReadyAddresses: true가 필요합니다. 레플리카 세트가 생성되기 전에 멤버들이 이름으로 서로를 찾을 수 있어야 하기 때문입니다. - 멤버는 재시작할 때마다 바뀌는 파드 IP가 아니라 고정된 이름(
mongo-0.mongo.overleaf.svc.cluster.local)으로 추가됩니다. - 멤버를 하나만 사용하려면
replicas: 1로 설정하고 Job에는mongo-0만 남기세요.
2
Redis
20-redis.yaml
Q&A
최신 커널에서 MongoDB 8이 시작 시 충돌합니다. 왜 그런가요?
최신 커널에서 MongoDB 8이 시작 시 충돌합니다. 왜 그런가요?
답변: MongoDB 8은 Linux 커널 6.19 이상에서 실패합니다(SERVER-121912).
10-mongo.yaml에서 GLIBC_TUNABLES 환경 변수의 주석을 해제하세요.MongoDB에는 메모리가 얼마나 필요한가요?
MongoDB에는 메모리가 얼마나 필요한가요?
답변: 기본적으로 MongoDB는 노드 메모리의 절반에서 1 GB를 뺀 만큼을 캐시로 사용하며, 파드의 제한이 아닌 노드의 메모리를 기준으로 합니다. 노드에 맞게
--wiredTigerCacheSizeGB를 설정하세요. 4 GB 테스트 노드에서는 0.25로 각 멤버를 약 200~260 MiB로 유지했습니다.
