-
mongoDB replicaSet 환경을 실 서비스에 적용해보자 with mongoose개발일지/mongoDB 2019. 4. 17. 11:57
지난번에는 ubuntu에 docker-compose 를 활용하여 mongodb replicaSet 를 셋팅하여 실습해보았습니다
못보신분들 아래 링크를 클릭 !
이제 환경을 만들어 놨으니 이제 활용은 어떻게 하는지 어떻게 primary 서버를 찾는지 그것이 의문일수 있다
예를 들어 서버가 3대이상으로 replicaset 를 했는데 1번 서버가 primary 인지 2번 서버가 primary 인지 확인하여
api 서버 혹은 application 에서 접속을 해야하는데 어떻게 설정할지 궁금하였다
하여 찾아보니 mongo document 사이트에 관련해서 설명하고 있다
mongodb 연결시에
mongodb://<host Ip1>:<port 1>,<host ip2>:<port 2>,<host ip3>:<port 3>/<db name>?replicaSet=myRepl
예를 들면 위와 같이 연결 하면 된다
그리고 보통 id / pw 사용하여 접속을 하게 되기때문에
mongodb://username:password@<host Ip1>:<port 1>,<host ip2>:<port 2>,<host ip3>:<port 3>/<db name>?replicaSet=myRepl
위와 같이 사용하면 된다
그럼 mongoose 를 활용하여 어떻게 실행할수 있는지 테스트 진행해보겠습니다
우선 window 환경에서 간단하게 테스트 할예정이기때문에 mongodb window 로 리플리카 셋 환경을 선행 했습니다
이 방법으로는 아래 링크 클릭하여 환경을 만들어줍니다.
express 를 같이 활용하면 더 좋겟지만 지금은 mongodb replset 이 어떻게 사용될지 테스트 해보는것이기때문에 생략하겠다
1> npm install mongoosecs 사용 모듈은 mongoose 만 필요하다
package.json 파일이 구성되는데 scripts 부분을 수정해주자
123456789101112131415{"name": "mongonode","version": "1.0.0","description": "","main": "index.js","scripts": {"start" : "node index",},"author": "","license": "ISC","dependencies": {"mongoose": "^5.5.2"}}cs 폴더 구조는 없다 package.json 같은 동일 경로에 index.js , mycollection.js 두개를 만들었습니다
1234└ node_modules└ index.js└ mycollection.js└ package.jsoncs mongoose db connection 소스를 아래와 같이 입력하였습니다
index.js 상단
123const mongoose = require('mongoose');mongoose.connect('mongodb://localhost:27017,localhost:27018,localhost:27019/testDB?replicaSet=mongorepl');let db = mongoose.connection;cs db 연결시에 replicaSet 옵션을 줄수 있다 저는 리플리카셋 이름을 mongorepl 이라고 만들었기때문에
replicaSet=mongorepl 이라고 넣었습니다
testDB 에 mycollections 라는 콜랙션을 미리 만들어 놨으며 데이터를 2개를 넣어놨습니다
mycollections 모델구조는 단순한 _id 와 msg 두 칼럼만 존재한다.
mycollection.js
123let mongoose = require('mongoose');let mycollectionSchema = new mongoose.Schema({msg : String});module.exports = mongoose.model('Mycollections',mycollectionSchema);cs index.js 하단
123456789let Mycollection = require('./mycollection');Mycollection.find({}).then(doc => {console.log(doc)}).catch(err => {console.error(err)})cs 단순 console로그를 통해 데이터가 나오는것을 확인한뒤에
primary 서버를 강종 시키고 다시 돌려봤을때 데이터가 나오는것을 확인하면 되는것이다
결과적으로 테스트 해봤을때 매우 잘됨을 확인하였습니다
이제 운영중인 서비스에 replica set 이 필요하면 다음과 같은 방법을 활용하면 될것같습니다
'개발일지 > mongoDB' 카테고리의 다른 글
[ MongoDB + ElasticSearch + Monstache ] 도커 기본 셋팅을 해보자 (4) 2019.10.02 [ mongodb Sharding] 몽고디비 샤딩 적용하기 / config sever + replica set (0) 2019.04.22 MongoDB 기본 이론 정리 (관계형 데이터 베이스와 몽고디비 차이??) (0) 2019.04.19 docker + mongodb replSet 우분투 몽고디비 리플리카셋업 하기 with Docker (3) 2019.04.16 window 로컬 환경에 mongoDB replSet 셋업하기. (0) 2019.04.16