-
mongoDB replicaSet 환경을 실 서비스에 적용해보자 with mongoose개발일지/mongoDB 2019. 4. 17. 11:57
지난번에는 ubuntu에 docker-compose 를 활용하여 mongodb replicaSet 를 셋팅하여 실습해보았습니다
못보신분들 아래 링크를 클릭 !
docker + mongodb replSet 우분투 몽고디비 리플리카셋업 하기 with Docker
지난 번에는 window 환경에서 테스트 성으로 replSet 하는 방법을 알아봤습니다 아래 링크를 통해 확인할수 있습니다. window 로컬 환경에 mongoDB replSet 셋업하기. 시스템 구축하는것은 할때마다 항상 까먹기..
sudarlife.tistory.com
이제 환경을 만들어 놨으니 이제 활용은 어떻게 하는지 어떻게 primary 서버를 찾는지 그것이 의문일수 있다
예를 들어 서버가 3대이상으로 replicaset 를 했는데 1번 서버가 primary 인지 2번 서버가 primary 인지 확인하여
api 서버 혹은 application 에서 접속을 해야하는데 어떻게 설정할지 궁금하였다
하여 찾아보니 mongo document 사이트에 관련해서 설명하고 있다
Connection String URI Format — MongoDB Manual
The following provide example URI strings for common connection targets. UNIX Domain Socket Use a URL encoded connection string when connecting to a UNIX domain socket. The following connects to a UNIX domain socket with file path /tmp/mongodb-27017.sock:
docs.mongodb.com
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 로 리플리카 셋 환경을 선행 했습니다
이 방법으로는 아래 링크 클릭하여 환경을 만들어줍니다.
window 로컬 환경에 mongoDB replSet 셋업하기.
시스템 구축하는것은 할때마다 항상 까먹기도 하고 새롭기도 하기때문에 그때마다 구글링 youtube 를 뒤지곤한다 오늘은 윈도우 로컬 환경에 mongoDB replication 셋업을 기록하여 도움이 필요한 사람들 혹은 나..
sudarlife.tistory.com
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