Docker-compose setup Bộ bản sao MongoDB

TLDR

  • Bạn có thể sử dụng Docker và Docker Compose để bắt đầu bản sao Mongo được đặt cục bộ
  • Kho lưu trữ GitHub. docker-compose-mongo-replica-set
  • Sử dụng docker-compose up -d và tắt đi

Docker Soạn tập tin

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

Vào chế độ toàn màn hình Thoát chế độ toàn màn hình

Nó là gì?

  • Một cách để chạy 3 phiên bản Mongo trong một bản sao được đặt trên máy của bạn
  • Thiết lập docker-compose này bắt đầu bộ bản sao mongo cục bộ với 3 phiên bản đang chạy trên
    • mongo1. 30001
    • mongo2. 30002
    • mongo3. 30003

Có bất kỳ điều kiện tiên quyết?

• Docker
• Docker Compose
• Phần sau trong tệp /etc/hosts của bạn.

127.0.0.1       mongo1
127.0.0.1       mongo2
127.0.0.1       mongo3

Vào chế độ toàn màn hình Thoát chế độ toàn màn hình

Làm cách nào để chạy Bộ bản sao?

đơn giản

docker-compose up -d

Vào chế độ toàn màn hình Thoát chế độ toàn màn hình

Làm cách nào để tôi truy cập Mongo Shell cho từng Phiên bản?

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"

Vào chế độ toàn màn hình Thoát chế độ toàn màn hình

Làm thế nào nó hoạt động?

  • Bắt đầu ba phiên bản của Mongo
  • Trong trường hợp đầu tiên, nó chạy lệnh Mongo Shell sau

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

Vào chế độ toàn màn hình Thoát chế độ toàn màn hình

  • Điều này khiến cả 3 phiên bản tham gia bộ bản sao có tên my-replica-set và bắt đầu nói chuyện với nhau
  • Một người được bầu để trở thành
    127.0.0.1       mongo1
    127.0.0.1       mongo2
    127.0.0.1       mongo3
    
    0 và hai người còn lại trở thành trường hợp
    127.0.0.1       mongo1
    127.0.0.1       mongo2
    127.0.0.1       mongo3
    
    0
  • Cấu hình kiểm tra sức khỏe Docker được sử dụng để khởi tạo bộ bản sao. Thông tin thêm trong các liên kết đọc thêm

Robo 3T

Tôi đã sử dụng Robo 3T để kiểm tra cục bộ và sử dụng cấu hình sau cho kết nối

Docker-compose setup Bộ bản sao MongoDB

Lời cảm ơn / Đọc thêm

  • Cách biến máy chủ MongoDB độc lập thành bộ bản sao với Docker-Compose
  • Tạo bộ bản sao MongoDB bằng Docker 🍃
  • asoorm/docker-compose-mongo-replicaset. yml

Cross đăng từ blog của tôi ở đây