Hướng dẫn mongodb docker replica set compose - mongodb docker bản sao tập hợp soạn

Hình ảnh của Tumisu, xin vui lòng xem xét ☕ Cảm ơn bạn! Từ pixabay

Giới thiệu

Trong tổng quan MongoDB nhỏ này, chúng tôi đang trải qua một số khái niệm MongoDB quan trọng liên quan đến các bộ bản sao. Sau một số trình bày khái niệm, chúng ta sẽ thấy một số ví dụ trong hành động bằng cách sử dụng Docker-Compose. Chúng tôi sẽ sử dụng làm nguồn thông tin chính của tài liệu MongoDB chính thức có thể được tìm thấy trong phần tham chiếu. Không có gì đến hạn, hãy để bắt đầu.

Câu chuyện này được tổ chức như sau:

  • Bộ bản sao là gì?
  • Tại sao bạn cần một bộ bản sao?
  • Oplog
  • Làm thế nào để sao chép hoạt động trong MongoDB?
  • Một trọng tài trong các bộ bản sao MongoDB là gì?
  • Bảo vệ
  • Các chiến lược để triển khai bộ bản sao của bạn
  • Sao chép vs Sharding
  • Nhận thực tế
  • THƯỞNG
  • Sự kết luận

Bộ bản sao là gì?

Tại sao bạn cần một bộ bản sao?

Tại sao bạn cần một bộ bản sao?

Oplog

  • Làm thế nào để sao chép hoạt động trong MongoDB?
  • Một trọng tài trong các bộ bản sao MongoDB là gì?

Bảo vệ

Oplog

Làm thế nào để sao chép hoạt động trong MongoDB?

Một trọng tài trong các bộ bản sao MongoDB là gì?

Làm thế nào để sao chép hoạt động trong MongoDB?

Một trọng tài trong các bộ bản sao MongoDB là gì?

Bảo vệ

Một trọng tài trong các bộ bản sao MongoDB là gì?

Bảo vệ

Bảo vệ

Bạn có thể định cấu hình bản sao của mình để sử dụng ủy quyền, trong trường hợp này, tất cả các giao tiếp được trao đổi bởi các trường hợp khác nhau sẽ được mã hóa. Trong một số trường hợp, bạn cũng có thể được yêu cầu cấu hình bảo mật giữa các thành viên bộ bản sao của bạn.

Các chiến lược để triển khai bộ bản sao của bạn

Đối với môi trường sản xuất, cách tiếp cận được đề xuất bởi tài liệu MongoDB là 3 bản sao thành viên. Mặc dù MongoDB khuyên bạn nên nên chạy các kịch bản khác nhau mà bạn đã chuẩn bị cho hệ thống của mình chống lại chiến lược hiện tại của mình. Nếu bạn muốn triển khai ở các khu vực khác nhau, điều này sẽ ảnh hưởng đến chiến lược MongoDB của bạn và bạn có thể sẽ muốn thay vì 3 thành viên, có lẽ có một phần tư sẽ ở một khu vực khác chỉ sao lưu dữ liệu. Mặt khác, nếu bạn có yêu cầu dung sai lỗi cao có tối thiểu 5 hoặc 6 thành viên cũng có thể được xem xét.

Điểm mấu chốt là bạn sẽ cần phải suy nghĩ về điều này một cách kỹ lưỡng. Điều đáng chú ý là việc thay đổi cấu hình có vẻ khá đơn giản, vì vậy, xem xét bạn có thời gian để thử nghiệm bạn sẽ ổn bằng cách biến đây thành một quá trình lặp đi lặp lại (trong khi phát triển).

Sao chép vs Sharding

Chủ đề này sẽ tạo đủ thông tin để trình bày trong một câu chuyện hoàn toàn khác, nhưng điều quan trọng là đôi khi hiểu khái niệm này xảy ra với nhau trong cùng một bối cảnh. Bản sao đã đạt được, như được giải thích trong câu chuyện này, bằng cách định cấu hình các nút mới và cung cấp một vai trò xác định cho mỗi người trong số chúng. Giả sử điều này, hãy để Lôi nghĩ về kịch bản sau đây, điều gì xảy ra nếu bạn đạt đến giới hạn hiệu suất (ghi và đọc) trên nút chính của bạn, có thể làm gì để tăng nó? Một trong những tùy chọn mà bạn nên xem xét là chia rẽ, bằng cách chia cắt, bạn sẽ phân chia nút của bạn và bạn sẽ làm cho mỗi shard shard, chăm sóc một số hoạt động. Vì vậy, thay vì có một bộ dữ liệu đầy đủ trên mỗi nút, bạn sẽ có một đoạn chunk của nó. Điều này là hiệu suất nhiều hơn trong nhiều trường hợp.

Nhận thực tế

Chúng tôi sẽ sử dụng phần này để trình bày các tệp khác nhau cần thiết để chạy một ví dụ đơn giản, hãy chắc chắn làm theo các hướng dẫn và đặc biệt chú ý đến nơi các tệp khác nhau nên được đặt cho Docker-Compose Gắn chúng đúng cách.

Để đạt được kiến ​​trúc nút 3 PSS đơn giản (cấp hai giây), bạn có thể sử dụng một bản sáng tác Docker như sau:

Về cơ bản với cấu hình này, chúng tôi sẽ đảm bảo rằng Mongo1 sẽ luôn là nút chính của chúng tôi, để tất cả các nút giao tiếp với nhau, chúng tôi đã sử dụng một mạng, được gọi là mạng Mongo mạng. Chúng tôi đặc biệt tải tất cả các tập lệnh trong các thư mục của nó.mongo1 will always be our primary node, for all the nodes to communicate with each other we used a network, called “mongo-network”. We especially load all scripts in its directories.

Như đã đề cập trong suốt câu chuyện này để bạn luôn luôn có cùng một chính, bạn sẽ cần chọn các trường hợp có mức độ ưu tiên cao hơn, điều này có thể đạt được bằng cách sử dụng một trường có cùng tên là ưu tiên, để áp dụng những thay đổi này mà chúng ta sẽ sử dụng Kịch bản sẽ được gắn trong thùng chứa Mongo1 (tất cả các tập lệnh này nên được đặt bên trong một thư mục mới có tên là Scrips Scripts):priority”, to apply these changes we are going to use a script that will be mounted in the mongo1 container(all these scripts should be put inside a new folder called “scripts”):

Sau khi xem các tập lệnh, bạn có thể nhận thấy rằng có một số sự chậm trễ được tuyên bố, điều này được sử dụng để dành thời gian để các container bắt đầu và quan trọng nhất là để cho cuộc bầu cử xảy ra để chúng tôi sẵn sàng để bắt đầu nhận kết nối như Nút chính.

Tiếp theo và để sẵn sàng chấp nhận và tạo cơ sở dữ liệu và người dùng mới của bạn, chúng tôi sử dụng một tệp JavaScript nhỏ có thể được mở rộng để phù hợp với nhu cầu của bạn (cũng để được thêm vào bên trong thư mục Scripts Scripts):scripts” folder):

Cuối cùng và để kích hoạt ví dụ này, chúng ta có thể sử dụng một tập lệnh bash nhỏ để dán mọi thứ lại với nhau:

Kịch bản này thực hiện nhiều hơn một chút so với chỉ chạy tệp docker-compose, nó cũng bắt đầu bằng cách làm sạch môi trường Docker của bạn và kết thúc bằng cách thực thi tập lệnh mà trước đây chúng tôi đã gắn vào Mongo1.mongo1.

Lưu ý: Sau một số cuộc thảo luận trong các bình luận, hãy lưu ý rằng việc thực hiện dòng 6 và dòng 7 sẽ làm sạch môi trường Docker của bạn, cá nhân tôi đã sử dụng tập lệnh này, để giúp tôi lặp lại các thử nghiệm khác nhau mà tôi đã làm, trong trường hợp nó không phù hợp với việc sử dụng của bạn -Case cảm thấy thoải mái để loại bỏ/nhận xét chúng. Following some discussion in the comments, be aware that executing line 6 and line 7 will clean your docker environment, I personally used this script, to help me iterate over the different experiments I did, in case it doesn’t suit your use-case feel free to remove/comment them.

THƯỞNG

Hãy để chúng tôi tưởng tượng rằng bạn thay vì có kiến ​​trúc 3 nút, chỉ muốn có một nút hoạt động như một bộ bản sao, điều này có thể đạt được trong một docker đơn giản như sau:

Sự kết luận

Trong câu chuyện này, một cái nhìn tổng quan nhanh về một số khái niệm quan trọng của MongoDB đã được trình bày, và một số ý tưởng về cách chọn một kiến ​​trúc và những yếu tố cần xem xét. Trong phần cuối cùng, hai ví dụ thực tế cho thấy bộ sao chép là gì và cách định cấu hình chúng. Để biết thêm thông tin sâu rộng, hãy chắc chắn kiểm tra các tài liệu chính thức của MongoDB!

Cảm ơn vì đã dành thời gian quý báu của bạn để đọc câu chuyện này, tôi hy vọng nó sẽ giúp bạn theo một cách nào đó.Bất kỳ phản hồi bạn có chắc chắn để sử dụng các ý kiến dưới đây.Nếu bạn thích câu chuyện này vỗ tay và nếu bạn muốn tiếp tục theo dõi câu chuyện của tôi, hãy tự do theo dõi.

Người giới thiệu

https://zgadzaj.com/development/docker/docker-compose/turning-standalone-mongodb-server-into-a-replica-set-with-docker-compose