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
0 và hai người còn lại trở thành trường hợp127.0.0.1 mongo1 127.0.0.1 mongo2 127.0.0.1 mongo3
0127.0.0.1 mongo1 127.0.0.1 mongo2 127.0.0.1 mongo3
- 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
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