Spring MongoDB 연동(docker) 1편
1. Docker MongoDB replica Setting 하기
docker 설치 방법은! 다른 블로그에서 참고하자(잘 정리되어있는 블로그가 많다… 귀찮아도.. 찾아서 하시길..)
1. docker 이미지 받아오기(최신 버전을 받아옴, 특정 버젼을 받아온다하여도 문제되지 않음)
1 | docker pull mongo |
2. docker images (해당 명령어를 통해 정상적으로 설치되었음을 확인)
1 | REPOSITORY TAG IMAGE ID CREATED SIZE |
3. docker 네트워크 생성
1 | docker network create mongo-cluster-dev |
1 | docker network ls 명령어를 치게 되면 아래처럼 mongo-cluster-dev가 보임 |
4. mongodb 컨테이너를 생성해보자 (터미널 3개를 열어서 해야한다 다른방법 아시는분?)
1 | 1번 |
5. 정상적으로 컨테이너가 기동되었는지 확인
1 | docker ps 명령어 입력하면 아래처럼 나온다 |
6. mongodb replica setting하기
mongo-dev1 컨네이너 접속
1. mongon-dev1 컨테이너 접근
- docker exec -it mongo-dev1 mongo
2. 디비 생성
- db = (new Mongo(‘localhost:27017’)).getDB(‘beanbroker’)
3. replica set config
- config = {“_id” : “mongo-replica”,”members” : [{“_id” : 0,”host” : “mongo-dev1:27017”},{ “_id” : 1, “host” : “mongo-dev2:27017”}, {“_id” : 2, “host” : “mongo-dev3:27017”}]}
4. 레플리카 실행
- rs.initiate(config)
5. command c를 통해 나온다, 또는 터미널을 끄고 다시 킨다.
6. 설정되었는지 확인
- docker exec -it mongo-dev1 mongo
- mongo-replica:PRIMARY 접근시 PRIMARY라 나옴
- docker exec -it mongo-dev2 mongo
- mongo-replica:SECONDARY 접근시 SECONDARY라 나옴
- docker exec -it mongo-dev3 mongo
- mongo-replica:SECONDARY 접근시 SECONDARY라 나옴
7. 2번 3번에 접근 하여
1 | db = (new Mongo('mongo-dev2:27017')).getDB('beanbroker') |
8. 레플리카 정상 작동 확인 방법
2번 또는 3번에서 아래를 입력1
db.mycollection.insert({name : 'test-data-beanbroker'})
당연히 안된다 slave 며 read만 가능한 노드이다.
1번에 접속하여 위의 insert 입력
1번 2번 3번에 접속하여1
db.mycollection.find()
위를 입력하면 { “_id” : ObjectId(“5f0af7f488f68fcdd45f7b66”), “name” : “test-data-beanbroker” } 가 나온다
레플리카 셋팅완료
- 마스터 노드에만 insert update가 작동한다
- 슬레이브 노드들에서만 read만 된다.
- 마스터 노드에 데이터 변경이 이뤄지었을 경우 slave로 전파 된다
아…. 스프링 연동을 하기전에 도커 셋팅하느라 시간이 다간다… 그냥 무료 mongodb 클라우드를 찾아서 직접 연동해야겠다. 다음 편에는 위처럼 안하고 무료 mongodb 클라우드 찾아서 편하게 스프링 연동하는 글을…. 작성하겠습니다.