저는 방글라데시와 도커에게 매우 익숙하며 다음 프로젝트에서 어떻게 작동하는지 보려고합니다. 지금까지는 MongoDB 공유 클러스터를 설정하는 데 다소 시간이 걸렸습니다.방글라데시와 도커를 사용하여 MongoDB를 설치하는 방법
# -*- mode: ruby -*-
# vi: set ft=ruby :
# Vagrantfile API/syntax version. Don't touch unless you know what you're doing!
VAGRANTFILE_API_VERSION = "2"
Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
#
# MONGO
#
# Shard 1
config.vm.define "mongo-shard1" do |app|
app.vm.provider "docker" do |d|
d.image = "mongo:2.6.5"
d.name = "mongo-shard1"
d.cmd = ["mongod", "--shardsvr", "--noprealloc"]
end
end
#Shard 2
config.vm.define "mongo-shard2" do |app|
app.vm.provider "docker" do |d|
d.image = "mongo:2.6.5"
d.name = "mongo-shard2"
d.cmd = ["mongod", "--shardsvr", "--noprealloc"]
end
end
#Config Server
config.vm.define "mongo-config" do |app|
app.vm.provider "docker" do |d|
d.image = "mongo:2.6.5"
d.name = "mongo-config"
d.cmd = ["mongod", "--configsvr", "--dbpath", "/data/db", "--noprealloc"]
end
end
#Routing Server
#THIS IS NOT DONE AND WORKING
config.vm.define "mongo-routing" do |app|
app.vm.provider "docker" do |d|
d.image = "mongo:2.6.5"
d.name = "mongo-routing"
d.link("mongo-shard1:mongo-shard1")
d.link("mongo-shard2:mongo-shard2")
d.link("mongo-config:mongo-config")
d.cmd = ["mongos", "--configdb", "config_host:port"]
end
end
end
내가 다음에 모든 것을 시작 :
vagrant up --provider=docker --no-parallel
내가 파편과 설정 서버를 위로 (내가 생각하는) 얻을 관리했지만, 여기에 지금까지 가지고 그 Vagrantfile입니다 configdb에 대한 호스트 : 포트를 전달해야하기 때문에 라우팅 서버가 분명히 작동하지 않습니다. (어떻게해야합니까?)
그리고 라우팅 서버에서 다음과 같은 몽고 명령을 실행해야합니다.
$ mongo
mongos> sh.addShard("shard1_host:port");
mongos> sh.addShard("shard2_host:port");
나는 어떻게 해야할지 모르겠다. 라우팅 서버를 구성 및 샤드에 연결하는 가장 좋은 방법은 무엇입니까? 이 모든 일을하는 올바른 방법조차하고 있습니까? 나는 "멍청한 독 냄새 나는 몽고 파편"이라는 인터넷 검색을 시도해 보았습니다. 그리고 나는 많은 미친 설정을 얻었지만, 아마도 그것은 필요한 것일까요?
컨테이너의 mogodb 포트를 다음과 같이 노출시켜야한다고 생각합니다. d.expose port [link] (http://docs.mongodb.org/manual/reference/default-mongodb-port).하나의 옵션은 bash 파일을 실행하고 필요한 모든 명령을 실행하는 라우팅 서버용 Dockerfile을 직접 만드는 것입니다. 또 다른 옵션으로는 exec [link] (http://docs.docker.com/reference/commandline/cli/#docker-exec-driver-option)를 사용하여 시작할 때 이러한 명령을 수동으로 (스크립트 또는 무언가를 통해) 실행할 수 있습니다. –