도커를 이용하여 MongoDB cluster(sharding)를 만드는 작업을 하고 있었다.
shard 역할을 하는 mongo container 2 개를 만들고
config server 역할을 하는 mongo config server 1개를 만들고
router 역할을 하는 mongo router 1개를 만들었음.
sudo docker network create my-mongo-cluster sudo docker run -d --name mongo-1 --network my-mongo-cluster mongo mongod --shardsvr --port 27017 sudo docker run -d --name mongo-2 --network my-mongo-cluster mongo mongod --shardsvr --port 27017 sudo docker run -d --name mongo-cnf --network my-mongo-cluster mongo mongod --configsvr --port 27017 sudo docker run -d --name mongo-router --net my-mongo-cluster -p 27017:27017 mongo mongos --configdb mongo-cnf:27017 --bind_ip_all
근데 이상하게 mongo router 만 만들면 계속 docker가 Exited 되는거라
이상하게 생각해서 MongoDB 문서를 검색해 봄.
https://docs.mongodb.com/manual/sharding/#sharded-cluster
Sharded ClusterA MongoDB sharded cluster consists of the following components:
|
즉, MongoDB 3.4 버전 이상부터, config server 는 무조건 replica set 이어야 한다.
standalone mode 는 더 이상 지원되지 않는다.
그래서 config server를 replica set 으로 만들고 다시 mongo cluster 를 만들어보았다.
sudo docker network create my-mongo-cluster sudo docker run -d --name mongo-1 --network my-mongo-cluster mongo mongod --shardsvr --port 27017 sudo docker run -d --name mongo-2 --network my-mongo-cluster mongo mongod --shardsvr --port 27017 sudo docker run -d --name mongo-cnf --network my-mongo-cluster mongo mongod --replSet cnf-serv --configsvr --port 27017 docker exec -it mongo-cnf mongo rs.initiate( { _id: "cnf-serv", configsvr: true, members: [ { "_id": 0, "host": "mongo-cnf:27017" }] } ) sudo docker run -d --name mongo-router --net my-mongo-cluster -p 27017:27017 mongo mongos --configdb cnf-serv/mongo-cnf:27017 --bind_ip_all
mongo-cnf 를 run 할 때 --replSet [레플리카 이름] 옵션을 넣는다.
위에선 cnf-serv 를 이름으로 사용함.
mongo-cnf 의 mongo 로 들어가서 위에처럼 initiate 해준다.
mongo router를 run 할 때 --configdb [레플리카 이름]/mongo-cnf:27017 옵션을 넣는다.
만약 레플리카를 더 넣고 싶다면 아래처럼 하면 된다.
sudo docker network create my-mongo-cluster sudo docker run -d --name mongo-1 --network my-mongo-cluster mongo mongod --shardsvr --port 27017 sudo docker run -d --name mongo-2 --network my-mongo-cluster mongo mongod --shardsvr --port 27017 sudo docker run -d --name mongo-cnf-1 --network my-mongo-cluster mongo mongod --replSet cnf-serv --configsvr --port 27017 sudo docker run -d --name mongo-cnf-2 --network my-mongo-cluster mongo mongod --replSet cnf-serv --configsvr --port 27017 sudo docker run -d --name mongo-cnf-3 --network my-mongo-cluster mongo mongod --replSet cnf-serv --configsvr --port 27017 docker exec -it mongo-cnf mongo rs.initiate( { _id: "cnf-serv", configsvr: true, members: [ { "_id": 0, "host": "mongo-cnf-1:27017" }, { "_id": 1, "host": "mongo-cnf-2:27017" }, { "_id": 2, "host": "mongo-cnf-3:27017" }] } ) sudo docker run -d --name mongo-router --net my-mongo-cluster -p 27017:27017 mongo mongos --configdb cnf-serv/mongo-cnf-1:27017, mongo-cnf-2:27017, mongo-cnf-3:27017 --bind_ip_all
'MongoDB' 카테고리의 다른 글
[MongoDB] mongo java driver 에서 aggregate 사용하기 (0) | 2019.02.28 |
---|---|
[MongoDB] sudo service mongod start 가 실행되지 않을 때 (0) | 2019.01.29 |
[MongoDB] text 데이터를 csv 파일로 만드는 쉘 스크립트 (0) | 2018.12.01 |
[Google Dataproc] MongoDB 설치하기 (0) | 2018.09.28 |
[Ubuntu] mongodb 설치하는 방법 링크 (0) | 2018.08.20 |