2017-10-14 10 views
0

설정 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 

:

답변

0

네트워크가 여러 호스트 사이의 사설 네트워크 공유를 할 수 있도록, 오버레이 모드에 있어야한다

복제 작품 위해서는
networks: 
    mongoshard: 
    external: true 

을 수행해야 적어도 두 명의 회원을 추가하십시오 :

rs.initiate({ _id: "rs0", members: [{ _id: 1, host: "cfg1-r1:27017" }, { _id: 2, host: "cfg1-r2:27017" }], settings: { getLastErrorDefaults: { w: "majority", wtimeout: 30000 }}}); 
+0

감사합니다. 마티유 Lescaudron. –