Trong bài đăng này, chúng ta sẽ tìm hiểu cách thiết lập bộ bản sao MongoDB bằng Docker. Chúng ta cũng sẽ tìm hiểu cách sử dụng docker-compose để tự động hóa quy trình này
Khi lưu trữ dữ liệu trong MongoDB, chúng ta có thể có nhiều máy chủ Mongo [được gọi là bản sao] giữ một bản sao của dữ liệu được lưu trữ. Bằng cách này, ngay cả khi một trong các máy chủ gặp sự cố, chúng tôi vẫn có bản sao lưu để truy xuất dữ liệu từ
quảng cáoKỹ thuật này được sử dụng để làm cho các ứng dụng trở nên linh hoạt hơn trước các lỗi cơ sở dữ liệu, vì ứng dụng có thể tiếp tục chạy ngay cả khi một máy chủ cơ sở dữ liệu bị lỗi
Nếu bạn chỉ muốn xem tệp
9 cuối cùng, bạn có thểdocker images
Cài đặt
Đầu tiên, chúng ta cần cài đặt Docker trên hệ thống của mình. Nếu đang sử dụng máy tính cá nhân, bạn có thể cài đặt Docker desktop
Để xác minh rằng bạn đã cài đặt docker, hãy chạy
docker -v
Điều này sẽ xuất ra số phiên bản
Tiếp theo, chúng ta cần đảm bảo rằng docker daemon của chúng ta đang chạy. Nếu bạn chạy lệnh
docker images
quảng cáoBạn sẽ có thể xem danh sách các hình ảnh bạn hiện có trên hệ thống của mình
Tiếp theo, chúng tôi sẽ nhận được phiên bản mới nhất của hình ảnh Mongo chính thức, bằng cách chạy
docker pull mongo
Tuyệt quá. Bây giờ chúng ta đã sẵn sàng định cấu hình máy chủ Mongo của mình
Tổng quan kiến trúc bản sao
Chúng tôi sẽ có ba vùng chứa từ hình ảnh Mongo, tất cả đều nằm trong mạng vùng chứa Docker của riêng họ
Hãy đặt tên cho chúng là
docker pull mongo
0, docker pull mongo
1 và docker pull mongo
2. Đây sẽ là ba phiên bản Mongo của bộ bản sao của chúng tôiChúng tôi cũng sẽ đưa từng người trong số họ vào máy cục bộ của mình để chúng tôi có thể truy cập chúng bằng giao diện trình bao Mongo từ máy cục bộ của mình
Mỗi trong số ba bộ chứa Mongo sẽ có thể giao tiếp với tất cả các bộ chứa khác trong mạng
quảng cáoTạo một mạng mới
Để xem tất cả các mạng hiện có trên hệ thống của bạn, hãy chạy lệnh
$ docker network ls
NETWORK ID NAME DRIVER SCOPE
2a4e341c6039 bridge bridge local
4fbef5286425 host host local
8062e4e7cdca none null local
Chúng tôi sẽ thêm một mạng mới có tên là
docker pull mongo
3$ docker network create my-mongo-cluster
Mạng mới bây giờ sẽ được thêm vào danh sách các mạng của bạn
docker -v
0Thiết lập vùng chứa của chúng tôi
Để khởi động vùng chứa đầu tiên của chúng tôi,
docker pull mongo
0 hãy chạy lệnhdocker -v
2Hãy xem từng phần của lệnh này làm gì
- ______35. Bắt đầu vùng chứa từ hình ảnh Quảng cáo
6. Hiển thị cổng 27017 trong vùng chứa của chúng tôi, dưới dạng cổng 30001 trên máy chủ cục bộdocker pull mongo
7. đặt tên vùng chứa này là “mongo1”docker pull mongo
8. Thêm vùng chứa này vào mạng “my-mongo-cluster”docker pull mongo
9. tên của hình ảnh chúng tôi đang sử dụng để sinh ra vùng chứa nàydocker pull mongo
0. Chạy mongod trong khi thêm phiên bản mongod này vào bộ bản sao có tên “my-mongo-set”$ docker network ls NETWORK ID NAME DRIVER SCOPE 2a4e341c6039 bridge bridge local 4fbef5286425 host host local 8062e4e7cdca none null local
Thiết lập 2 vùng chứa khác bằng cách chạy
docker -v
9Hãy nhớ chạy từng lệnh này trong một cửa sổ đầu cuối riêng biệt, vì chúng tôi không chạy các vùng chứa này ở trạng thái tách rời
Cấu hình sao chép cơ sở dữ liệu
Bây giờ chúng ta đã thiết lập và chạy tất cả các phiên bản Mongo của mình, hãy thêm chúng vào một bộ bản sao
Kết nối với vỏ Mongo trong bất kỳ vùng chứa nào
docker images
0Lệnh này sẽ mở trình bao Mongo trong bộ chứa
docker pull mongo
0 đang chạy của chúng tôi [nhưng bạn cũng có thể chạy nó từ bộ chứa docker pull mongo
1 hoặc docker pull mongo
2]Bên trong vỏ Mongo, trước tiên chúng tôi tạo cấu hình của mình
docker images
4quảng cáoKhóa
$ docker network ls
NETWORK ID NAME DRIVER SCOPE
2a4e341c6039 bridge bridge local
4fbef5286425 host host local
8062e4e7cdca none null local
4 đầu tiên trong cấu hình, phải giống với cờ $ docker network ls
NETWORK ID NAME DRIVER SCOPE
2a4e341c6039 bridge bridge local
4fbef5286425 host host local
8062e4e7cdca none null local
5 được đặt cho các phiên bản mongod của chúng tôi, đó là $ docker network ls
NETWORK ID NAME DRIVER SCOPE
2a4e341c6039 bridge bridge local
4fbef5286425 host host local
8062e4e7cdca none null local
6 trong trường hợp của chúng tôi. Sau đó, chúng tôi liệt kê tất cả các $ docker network ls
NETWORK ID NAME DRIVER SCOPE
2a4e341c6039 bridge bridge local
4fbef5286425 host host local
8062e4e7cdca none null local
7 chúng tôi muốn trong bộ bản sao của mìnhVì chúng tôi đã thêm tất cả các phiên bản Mongo vào mạng docker của mình. Tên của họ trong mỗi trình phân giải bộ chứa thành địa chỉ IP tương ứng của họ trong mạng
docker pull mongo
3Cuối cùng, bắt đầu bộ bản sao bằng cách chạy lệnh sau trong trình bao Mongo
docker images
0Nếu lệnh thành công, lời nhắc của bạn sẽ thay đổi để phản ánh rằng cơ sở dữ liệu hiện tại là một phần của bộ bản sao
docker images
1Điều này có nghĩa là trình bao hiện được liên kết với cơ sở dữ liệu
$ docker network ls
NETWORK ID NAME DRIVER SCOPE
2a4e341c6039 bridge bridge local
4fbef5286425 host host local
8062e4e7cdca none null local
9 trong cụm $ docker network ls
NETWORK ID NAME DRIVER SCOPE
2a4e341c6039 bridge bridge local
4fbef5286425 host host local
8062e4e7cdca none null local
6 của chúng tôiHãy chơi xung quanh với bộ bản sao mới của chúng tôi để đảm bảo nó hoạt động như dự kiến. [Tôi đang bỏ qua dấu nhắc
$ docker network create my-mongo-cluster
1 để dễ đọc]Trước tiên, hãy chèn một tài liệu vào cơ sở dữ liệu chính của chúng tôi
docker images
2Sau đó, chúng tôi tạo một kết nối mới tới một trong các cơ sở dữ liệu thứ cấp của chúng tôi [nằm trên
docker pull mongo
1] và kiểm tra xem tài liệu của chúng tôi đã được sao chép chưadocker images
3quảng cáoChúng tôi chạy lệnh
3 để trình bao biết rằng chúng tôi đang cố ý truy vấn cơ sở dữ liệu không phải là cơ sở dữ liệu chính của chúng tôi$ docker network create my-mongo-cluster
Có vẻ như tài liệu tương tự cũng có trong trường trung học của chúng tôi
Sử dụng Docker Compose
Chúng tôi có thể tự động hóa các bước được mô tả ở trên bằng cách sử dụng Docker soạn thảo
Trước tiên, chúng ta cần tạo một tệp
docker images
9 khai báo ba máy chủ bản sao, cũng như một máy chủ khởi tạo chạy mã để định cấu hình các bộ bản saodocker images
4quảng cáoĐể bắt đầu lắp ráp này, bạn có thể chạy
docker images
5Sau khi các vùng chứa hoàn tất thiết lập, bạn sẽ thấy một số thông báo “Kết nối được chấp nhận” trông như thế này
docker images
6Sau này, bạn có thể liệt kê các vùng chứa đang hoạt động bằng cách chạy
docker images
7Tên vùng chứa có thể thay đổi dựa trên tên thư mục hiện tại của bạn. Bạn có thể chọn bất kỳ bộ chứa mongo nào và chạy trình bao mongo bằng cách thực thi
docker images
8Thay thế
5 bằng tên vùng chứa của bạn$ docker network create my-mongo-cluster
Tiến về phía trước
Sử dụng Docker, chúng tôi có thể thiết lập và chạy bản sao Mongo trong ~5 phút
Mặc dù thiết lập này rất tuyệt để thử nghiệm với các bộ bản sao, nhưng cần thực hiện một số biện pháp phòng ngừa trước khi chuyển nó sang sản xuất
quảng cáo- Không có cơ sở dữ liệu nào có bất kỳ biện pháp bảo mật quản trị nào. Đảm bảo thêm người dùng và mật khẩu khi triển khai giải pháp này trên các máy chủ sản xuất
- Các vùng chứa bản sao khác nhau nên được lưu giữ trên các máy chủ vật lý khác nhau. Chạy ít nhất một bộ chứa trên một máy chủ khác và truy cập nó thông qua địa chỉ IP và cổng bên ngoài của nó [trong trường hợp của chúng tôi, các cổng đối diện bên ngoài cho các bộ chứa bên ngoài lần lượt là
6,$ docker network create my-mongo-cluster
7 và$ docker network create my-mongo-cluster
8 cho$ docker network create my-mongo-cluster
0,docker pull mongo
1 vàdocker pull mongo
2]docker pull mongo
- Nếu chúng tôi xóa nhầm một trong các vùng chứa của mình, dữ liệu cũng sẽ biến mất. Sử dụng khối lượng Docker và đặt
02 thích hợp khi chạydocker -v
03 sẽ ngăn điều này xảy radocker -v
Cuối cùng, thay vì chạy một loạt các tập lệnh shell, bạn có thể thấy thuận tiện hơn khi tự động hóa toàn bộ quá trình này bằng cách sử dụng các công cụ tự động hóa đa vùng chứa như docker-compose