Condition
- 회사에서 신규프로젝트 개발에 있어서 Mongo를 DB로 채택하였습니다.
- Local과 Dev에서 테스트 환경에서 Mongo를 Single Pod로 구성하였습니다.
- 4.0 버전부터 지원하는 Multi-Document Transaction을 적용하기 위해서 ReplicaSet 구성의 필요성을 느꼈습니다.
- Single Mongo Instance는 Transaction을 사용할 수 없습니다.
- 최소 3개의 ReplicaSet을 구성해야 합니다.
- 트랜잭션은 WiredTiger 스토리지 엔진에서만 지원됩니다. 그리고 MongoDB 4.0 이후의 버전에서는 WiredTiger가 기본 스토리지 엔진으로 사용됩니다.
Authentication Failed.
Issue
- Single Pod로 운영되던 Mongo를 3개의 Pod로 구성되도록 변경하였습니다.
- 이때, Mongo DB Authentication Failed 에러가 발생.
- 지속적으로 발생하는 것을 보고, Pod 갯수 증가 3개가 된 부분이 영향이 있을것으로 판단.
- AuthSource와 AuthMechanism을 지정하여 Root로 지정하여서 해결된 줄 알았다.
mongodb://root:root@mongodb-service:27017/test?authSource=admin&authMechanism=SCRAM-SHA-256
- 하지만 바로 동일한 문제가 발생하였습니다.
Solution
- 원인은 ReplicaSet입니다.
- 문제가 발생하던 As-Is가 k8s 환경에서 Command로 3개의 Pod가 생성되도록 설정하였습니다.
- 이런 방법은 ReplicaSet을 생성하는게 아닌 개별적으로 Pod를 3개 띄우는 것과 동일한 방법이었습니다.
- To-Be로 MongoDB Operator를 적용하여, ReplicaSet을 설정해주고 접근 uri를 수정하였더니 Authentication Failed를 해결하였습니다.
Cluster description not yet available. Waiting for 30000 ms before timing out
Issue
- DB 접근 시 Cluster Time Out이 발생하는 상황.
- DB Uri를 제대로 찾지 못한다고 판단을 내렸습니다.
Solution
- Mongo에서 Uri를 등록할 때, ReplicaSet을 잘 지정해주어야 합니다.
//To-Be
mongodb://root:root@mongodb-dev-0.mongodb-dev-svc:27017,mongodb-dev-1.mongodb-dev-svc:27017,mongodb-dev-2.mongodb-dev-svc:27017/gpt-agent?replicaSet=mongodb-dev&&readPreference=nearest
728x90
반응형
'Computer Science > DataBase' 카테고리의 다른 글
[MySQL] Datetime 기준으로 조회하기 (0) | 2021.11.19 |
---|---|
[DataBase] 무결성 (0) | 2021.10.28 |
[DataBase] 데이터베이스란? (0) | 2021.09.04 |
[MySQL] DELETE (0) | 2021.08.10 |
[MySQL] UPDATE (0) | 2021.08.10 |
댓글