Docker 및 Docker Compose를 사용하여 로컬에서 Mongodb 복제 세트 실행

8136 단어 testingnosqlmongodb

TLDR


  • Docker 및 Docker Compose를 사용하여 로컬에서 Mongo 복제 세트를 시작할 수 있습니다
  • .
  • GitHub repo: docker-compose-mongo-replica-set
  • docker-compose up -d를 사용하고

  • 도커 작성 파일




    version: "3.8"
    
    services:
      mongo1:
        image: mongo:4.2
        container_name: mongo1
        command: ["--replSet", "my-replica-set", "--bind_ip_all", "--port", "30001"]
        volumes:
          - ./data/mongo-1:/data/db
        ports:
          - 30001:30001
        healthcheck:
          test: test $$(echo "rs.initiate({_id:'my-replica-set',members:[{_id:0,host:\"mongo1:30001\"},{_id:1,host:\"mongo2:30002\"},{_id:2,host:\"mongo3:30003\"}]}).ok || rs.status().ok" | mongo --port 30001 --quiet) -eq 1
          interval: 10s
          start_period: 30s
    
      mongo2:
        image: mongo:4.2
        container_name: mongo2
        command: ["--replSet", "my-replica-set", "--bind_ip_all", "--port", "30002"]
        volumes:
          - ./data/mongo-2:/data/db
        ports:
          - 30002:30002
    
      mongo3:
        image: mongo:4.2
        container_name: mongo3
        command: ["--replSet", "my-replica-set", "--bind_ip_all", "--port", "30003"]
        volumes:
          - ./data/mongo-3:/data/db
        ports:
          - 30003:30003
    


    뭐야?


  • 시스템의 복제 세트에서 3개의 Mongo 인스턴스를 실행하는 방법
  • docker-compose 설정은 3개의 인스턴스가 실행되는 로컬 mongo 복제 세트를 시작합니다.
  • mongo1:30001
  • mongo2:30002
  • mongo3:30003


  • 전제 조건이 있습니까?



    • 도커
    • 도커 작성
    /etc/hosts 파일의 다음:

    127.0.0.1       mongo1
    127.0.0.1       mongo2
    127.0.0.1       mongo3
    


    복제 세트를 어떻게 실행합니까?



    단순함:

    docker-compose up -d
    


    각 인스턴스의 Mongo Shell에 어떻게 액세스합니까?




    docker exec -it mongo1 sh -c "mongo --port 30001"
    docker exec -it mongo2 sh -c "mongo --port 30002"
    docker exec -it mongo3 sh -c "mongo --port 30003"
    


    어떻게 작동합니까?


  • Mongo 인스턴스 3개 시작
  • 첫 번째 인스턴스에서 다음 Mongo Shell 명령을 실행합니다.

  • rs.initiate(
      {
        s_id : 'my-replica-set',
        members: [
          { _id : 0, host : "mongo1:30001" },
          { _id : 1, host : "mongo2:30002" },
          { _id : 2, host : "mongo3:30003" }
        ]
      }
    )
    


  • 이로 인해 3개의 인스턴스가 모두 my-replica-set라는 복제 세트에 합류하고 서로 대화를 시작합니다
  • .
  • 하나는 PRIMARY가 되도록 선택되고 다른 두 개는 SECONDARY 인스턴스
  • 가 됩니다.
  • Docker healthcheck 구성은 복제본 세트를 초기화하는 데 사용됩니다. 추가 읽기 링크에서 더 많은 정보를 얻을 수 있습니다.

  • 로보3T



    Robo 3T를 사용하여 로컬에서 테스트하고 연결에 다음 구성을 사용했습니다.



    감사의 말 / 추가 자료


  • How to turn standalone MongoDB server into a replica set with Docker-Compose
  • Creating a MongoDB replica set using Docker 🍃
  • asoorm/docker-compose-mongo-replicaset.yml



  • 내 블로그에서 교차 게시됨here

    좋은 웹페이지 즐겨찾기