기본 골자는 EC2와 RDS 연결하는 것과 비슷하다. 그런데, 공식 AWS DocumentDB 예제가 Deprecated mongo를 사용하고 있다.

1. 전체 VPC 구성하기

2. VPC 서브넷 분할하기

각 서브넷마다 256개의 IP를 가짐. (참고 링크의 벨로그랑 같음)

1.과 2.를 끝내면, VPC 대시보드에서 만들어진 VPC를 확인할 수 있다. 이를 A라 하자.

3. EC2 VPC 보안 그룹 생성


VPC 정보를 클릭하고, A를 클릭한다. 이 보안 그룹을 B라고 하자.

4. EC2 인바운드 규칙 추가

22번 ssh, 443 https, 80 http 등 인바운드 규칙을 추가한다.

5. DocumentDB VPC 보안 그룹 생성

DocumentDB VPC 보안 그룹을 생성한다. 이 보안 그룹을 C라고 하자. 이때 VPC는 A다.

6. DocumentDB 인바운드 규칙 추가

사용자 지정 TCP 선택, 보안그룹은 C 선택, 포트 범위는 몽고 db이므로 27017.

7. EC2 생성 할 때 보안 그룹 적용

VPC - 필수에는 A를, 일반 보안 그룹에는 B를 선택한다. 만들어진 EC2를 D라고 하자.

8. EC2 탄력적 IP 적용

인스턴스 D 선택.

9. DocumentDB 서브넷 그룹 적용

vpc A 선택.

10. DocumentDB 서브넷 모두 추가

11. 인증 및 고급 설정 표시하기

인스턴스 개수는 3개 이상이 권장.

12. DocumentDB VPC 적용하기

(이 화면은 고급 설정 표시해야 나옴)
VPC에는 A, 서브넷 그룹은 알아서 나오고, VPC 보안 그룹은 C 선택.

13. 연결

1.

echo "[mongodb-org-7.0]
name=MongoDB Repository
baseurl=https://repo.mongodb.org/yum/amazon/2023/mongodb-org/7.0/x86_64/
gpgcheck=1
enabled=1
gpgkey=https://www.mongodb.org/static/pgp/server-7.0.asc
" | sudo tee /etc/yum.repos.d/mongodb-org-7.0.repo

2. openssh 에러 때문에 따로 설치

sudo yum install mongodb-mongosh-shared-openssl3
sudo yum install mongodb-mongosh

3. mongosh 외에 다른 거 다 설치

sudo yum install -y mongodb-org-7.0.2 mongodb-org-database-7.0.2 mongodb-org-server-7.0.2 mongodb-org-mongos-7.0.2 mongodb-org-tools-7.0.2

4. mongod 기동

sudo systemctl start mongod

5. 몽고 쉘과 클러스터 연동


위 화면은 AWS가 공식적으로 제공하는 자료다. 위 화면으로 진입하려면, AWS DocumentDB에서 "연결"을 찾으면 된다.

단, 위 그림은 Deprecated나 마찬가지다.

올바른 것은 다음 코드다. mongo 말고 mongosh로 바꿔라.

mongosh --ssl host docdb-2020-02-08-14-15-11. cluster.region.docdb.amazonaws.com:27107 --sslCAFile global-bundle.pem --username demoUser --password

이렇게 하면, 패스워드 치라고 나온다. 11.에서 만든 비밀번호 기입하면 된다.

최종적으로

rs0:PRIMARY>

란 게 나오면 접속 완료다.

14. RetryWrites 문제 발생

접속해도 Insert가 안먹힌다.
다음 에러가 발생한다.

MongoServerError: Retryable writes are not supported

이에 대한 해결법은 다음과 같다.

mongosh "mongodb://docabnoob:<insertYourPassword>@docdb-2020-09-29-17-50-35. cluster-165zzwncn6j.us-
east-1.docdb. amazonaws.com: 27017//?tls=true&tlsCAFile=global-bundle.pem&replicaSet=rs0&readPreference=secondaryPreferred&retryWrites=false"

위 코드를 ec2에서 실행시키자. 그러면 DocumentDB에 접속되면서 Insert문들도 먹히게 된다.


참고 링크

https://docs.aws.amazon.com/documentdb/latest/developerguide/connect-ec2.html#connect-ec2.launch-ec2-instance

https://velog.io/@server30sopt/VPC-%EC%84%9C%EB%B8%8C%EB%84%B7-%EC%84%A4%EC%A0%95%EC%9C%BC%EB%A1%9C-RDS%EC%97%90-%EC%95%88%EC%A0%84%ED%95%98%EA%B2%8C-%EC%A0%91%EA%B7%BC%ED%95%98%EA%B8%B0

https://www.mongodb.com/docs/manual/tutorial/install-mongodb-on-amazon/


profile
시스템 아키텍쳐 설계에 관심이 많은 백엔드 개발자입니다. (Go/Python/MSA/graphql/Spring)

0개의 댓글

Powered by GraphCDN, the GraphQL CDN