설정 MongoDB의 복제를 시작 내가 만든 두 설정 서버 파일 sudo는 고정 표시기 스택 배포 --with-레지스트리 정식으로 배포 고정 표시기 - compose.yml 에 복제 세트 이름 RS0와 - compose-file docker-compose.yml 테스트.는 고정 표시기 떼
version: "3.3"
services:
cfg1-r1:
image: mongo:3.2
deploy:
placement:
constraints: [node.hostname == ram-ThinkPad-E470]
restart_policy:
condition: on-failure
volumes:
- /opt/mongoshard/tmp:/var/lib/mongodb
- /opt/mongoshard/mongod.conf:/etc/mongod.conf
networks:
- mongoshard
command: ["mongod", "--configsvr", "--replSet", "rs0", "--dbpath", "/var/lib/mongodb", "--port", "27017"]
cfg2-r1:
image: mongo:3.2
deploy:
placement:
constraints: [node.hostname == prasanna-ThinkPad-E470]
restart_policy:
condition: on-failure
volumes:
- /opt/mongoshard/tmp:/var/lib/mongodb
- /opt/mongoshard/mongod.conf:/etc/mongod.conf
networks:
- mongoshard
command: ["mongod", "--configsvr", "--replSet", "rs0", "--dbpath", "/var/lib/mongodb", "--port", "27017"]
networks:
mongoshard:
내용 = 내가
sudo는 고정 표시기 간부는 $ (sudo는 고정 표시기 추신 -qf 라벨을 - 그것은으로 서비스 이름을 사용하여 시작하려고하면
storage:
dbPath: /var/lib/mongodb
journal:
enabled: true
systemLog:
destination: file
logAppend: true
path: /var/log/mongodb/mongod.log
net:
port: 27017
파일 mongod.conf에서 com.docker.swarm.service.name = test_cfg1-r1) mongo --eval 'rs.initiate ({_id : "rs0", 회원 : [{_id : 1, 호스트 : "cfg1-r1 : 27017"}, _id : 2, 호스트 : "cfg2-r1 : 27017"}] 설정 : {getLastErrorDefaults : {w : "majority", wtimeout : 30000}}}) '
편집 나는 초기화하는 동안 cfg2-r1에 대해 언급하는 것을 잊어 버렸습니다. 이제 나는 그것을 추가했다. 그것은 오류를
MongoDB shell version v3.4.9
connecting to: mongodb://127.0.0.1:27017
MongoDB server version: 3.4.9
{
"ok" : 0,
"errmsg" : "No host described in new configuration 1 for replica set rs0 maps to this node",
"code" : 93,
"codeName" : "InvalidReplicaSetConfig"
}
편집을주고
: 나는 문제가 cfg1-R1 및 cfg2-R2 서비스가 동일한 네트워크에 있지 않은 생각합니다. 스택 파일을 배포 할 때 mongo_mongoshard (overlay)라는 네트워크가 만들어지고 검사 할 때 cfg1-r1 만 컨테이너 목록에 컨테이너로 표시됩니다. 당신의 작성에 그런
docker network create --driver overlay --attachable mongoshard
:
감사합니다. 마티유 Lescaudron. –