AWS ECS에서 실행되는 MongoDB 데이터베이스와 함께 Node.js 앱이 있습니다. 현재 가지고있는 설정은 할당 된 서비스 (노드 / 몽고)로 각 Docker 컨테이너를 실행하는 2 개의 ELB 및 2 개의 인스턴스로 구성됩니다.
Elastic Load Balancer -> Dockerized Node -> Elastic Load Balancer -> Dockerized MongoDB
https://registry.hub.docker.com/_/mongo/ 에서 MongoDB의 공식 도커 이미지를 실행하고 있습니다.
Docker와 ECS를 사용하여 MongoDB 용 replicaSet을 어떻게 배포 할 수 있는지에 대한 조언이 있습니까? 각 복제본은 다른 인스턴스에서 실행됩니까?
답변
데이터베이스를 고정하지 마십시오. 도커 컨테이너는 일시적이며 데이터를 보유하지 않아야합니다. 데이터베이스에는 적합하지 않습니다.
특히, MongoDB 클러스터를도 커화하려고 시도하지 마십시오 . 복제 세트 설정은 매우 상태가 좋고 복잡합니다. 많은 명령 을 순서대로 한 번만 실행해야합니다 . 명령을 놓치거나 노드가 중단되면 전체 클러스터가 교착 상태가되어 다시 시작해야합니다.
Docker는 응용 프로그램의 작동 방식에 대한 자체 아이디어를 가지고 있습니다. Docker 내에서 그 작업을 수행하는 것은 실제로 어려울 것입니다.
3 개의 복제본이있는 클러스터를 원할 경우 3 개의 AWS 인스턴스를 가져 와서 인스턴스에 MongoDB를 설정해야합니다. mongodb setting up a replica set on <OS>
Google에서 검색 하면 최신 자습서가 제공됩니다.
답변
FireCamp 가 해냅니다. FireCamp는 AWS ECS에 MongoDB ReplicaSet을 매우 쉽게 배포 할 수 있습니다. 1) cloudformation 템플릿으로 ECS 클러스터를 배포하고 2) 단일 명령으로 MongoDB ReplicaSet를 배포합니다. 자세한 내용은 FireCamp 설치 위키 를 확인 하십시오.
보안을 위해 다른 ECS 클러스터에서 Node.js 앱을 실행하는 것이 좋습니다. MongoDB를 실행하는 EC2 인스턴스는 외부 환경에 노출되어서는 안됩니다.
Node.js 앱이 MongoDB ReplicaSet에 액세스하는 데 Elastic Load Balancer가 필요하지 않습니다. 모든 복제본은 고유 한 DNS 이름을 갖습니다. Node.js 앱은 dns 이름으로 MongoDB에 간단히 액세스 할 수 있습니다.