Replica Set là một tập hợp các instances của MongoDB chạy trên các nodes khác nhau, giúp đảm bảo tính sẵn sàng và dự phòng cho hệ thống cơ sở dữ liệu. Trong môi trường phát triển và triển khai, việc cài đặt Replica Set có thể trở nên phức tạp, nhưng với Docker Compose, việc này trở nên đơn giản hơn bao giờ hết.
Trong bài viết này, chúng ta sẽ hướng dẫn cách cài đặt một Replica Set MongoDB đơn giản sử dụng Docker Compose. Để bắt đầu, bạn cần có Docker và Docker Compose đã được cài đặt trên máy tính của mình.
Bước 1: Tạo file Docker Compose
Đầu tiên, chúng ta sẽ tạo một file docker-compose.yml
để định nghĩa cấu hình của Replica Set MongoDB.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 |
version: '3' services: mongo1: image: mongo restart: always container_name: mongo1 ports: - "27017:27017" networks: - mongo mongo2: image: mongo restart: always container_name: mongo2 ports: - "27018:27017" networks: - mongo command: mongod --port 27017 --replSet rs0 --bind_ip 0.0.0.0 mongo3: image: mongo restart: always container_name: mongo3 ports: - "27019:27017" networks: - mongo command: mongod --port 27017 --replSet rs0 --bind_ip 0.0.0.0 networks: mongo: driver: bridge |
Trong file này, chúng ta đã định nghĩa ba services mongo1
, mongo2
, và mongo3
, mỗi service sẽ chạy một instance của MongoDB. Chúng cũng được kết nối với một network tên là mongo
để cho phép chúng giao tiếp với nhau.
Bước 2: Khởi chạy Replica Set
Sau khi đã tạo file docker-compose.yml
, chúng ta có thể bắt đầu khởi chạy Replica Set bằng lệnh sau:
1 |
docker-compose up -d |
Lệnh này sẽ tải về và chạy các container MongoDB dựa trên cấu hình trong file docker-compose.yml
. Sau khi chạy xong, chúng ta cần kết nối vào một trong các container để cấu hình Replica Set.
Bước 3: Cấu hình Replica Set
Đầu tiên, chúng ta cần kết nối vào một trong các container MongoDB bằng lệnh sau:
1 |
docker exec -it mongo1 mongo |
Sau khi đã kết nối thành công, chúng ta sẽ bắt đầu cấu hình Replica Set. Dưới đây là các bước:
- Khởi tạo Replica Set:
1rs.initiate() - Thêm các node vào Replica Set:
12rs.add("mongo2:27017")rs.add("mongo3:27017") - Kiểm tra trạng thái của Replica Set:
1rs.status()