Chế độ thiết lập bản sao mongodb
Cấu hình bộ bản sao MongoDB. 7 bước đơn giản
Vishal Agrawal về Sao chép dữ liệu, Hệ thống quản lý cơ sở dữ liệu, MongoDB • Ngày 14 tháng 2 năm 2022 Show
Cập nhật cho phiên bản v1. 12. 3. lệnh nhỏ thay đổi một lần nữa, các nhãn hiện được áp dụng ở cấp nút và không cần thêm hình ảnh mongo tùy chỉnh Chạy Bộ bản sao MongoDB trên Docker 1. 12 Chế độ bầy đàn. Từng bước mộtVới chế độ swarm, Docker 1. 12 giới thiệu một số tính năng mới thú vị để điều phối một cụm dịch vụ có tính sẵn sàng cao. Video này từ DockerCon 2016 cung cấp một cái nhìn tổng quan tuyệt vời và cũng có nhiều phiên trực tuyến tuyệt vời khác Các dịch vụ chế độ bầy đàn Docker là một tập hợp các tác vụ (hiện tại là các vùng chứa) được phân bổ động trên toàn cụm. Điều này tốt vì nhiều lý do, nhưng nó có nghĩa là các thùng chứa ứng dụng của bạn có thể di chuyển từ hộp này sang hộp khác, để lại khối lượng dữ liệu của chúng. Đối với cơ sở dữ liệu, đó có thể là một tình huống không tối ưu. May mắn thay, nhiều hệ thống cơ sở dữ liệu đã có sẵn tính sẵn sàng cao. Tất cả những gì chúng ta phải làm là giữ các thùng chứa ở một nơi và DBMS sẽ lo phần còn lại Chiến lượcKế hoạch cơ bản là xác định từng thành viên của bộ bản sao là một dịch vụ riêng biệt và sử dụng các ràng buộc để ngăn việc điều phối bầy đàn di chuyển chúng khỏi khối lượng dữ liệu của chúng. Điều này bảo toàn tất cả các lợi ích hoạt động mà Docker cung cấp, đồng thời vô hiệu hóa các tính năng khôi phục lỗi dư thừa (và trong trường hợp này là có hại) Một lưu ý ngắn gọn về các quy ước được sử dụng trong bài viết này. Tôi sẽ in đậm mọi thứ mà tôi đã nhập vào thiết bị đầu cuối. Tôi xin lỗi vì độ dài dòng và ngắt dòng của đầu ra, nhưng tôi nghĩ điều quan trọng là phải hiển thị mọi thứ đang diễn ra. Ngoài ra, đừng cố sao chép/dán bất kỳ lệnh nào từ các đoạn văn có độ rộng không cố định; Kiểm tra môi trườngĐối với ví dụ này, tôi sẽ làm lại từ đầu với Hộp công cụ Docker 1. 12. 3 và thiết lập một Node có tính khả dụng cao. js với MongoDB 3. 2 bản sao được đặt làm kho lưu trữ dữ liệu. Tôi sẽ thực hiện việc này trên máy tính xách tay Windows 7 của mình, nhưng các lệnh sẽ giống hệt nhau trên các nền tảng khác. Điều đầu tiên cần làm là mở Docker Quickstart Terminal và tìm hiểu về vùng đất ## . Cung cấp máy DockerTôi không cần máy mặc định, vì vậy tôi sẽ loại bỏ nó và tạo ba máy mới cho cụm. Vì đây là môi trường phát triển nên tôi sẽ chỉ có một nút quản lý cụm và hai nút công nhân. Trong sản xuất, nhiều người quản lý nên được sử dụng để chịu lỗi Blake.Mitchell@BMITCHELL7X64 MINGW64 ~ PuTTY xen kẽBây giờ các VM đang chạy, tôi sẽ chuyển từ Docker Quickstart Terminal sang PuTTY. Tôi thấy giao diện thân thiện với người dùng hơn nhiều. Đây là tùy chọn và không ảnh hưởng đến hoạt động của cụm bầy đàn. Tôi đã sử dụng PuTTYGen để chuyển đổi từng khóa riêng sang định dạng mà PuTTY hiểu được. Sau đó, tôi đã kết nối với từng VM qua SSH với tên người dùng “docker” và khóa riêng để xác thực. Đây là tất cả các khóa có liên quan, sau khi tôi thực hiện chuyển đổi Blake.Mitchell@BMITCHELL7X64 MINGW64 ~ Tạo đànTiếp theo, tôi sẽ khởi tạo bầy đàn trên người quản lý và tham gia cùng cả hai công nhân. Hầu hết điều này đến trực tiếp từ hướng dẫn Bắt đầu với chế độ bầy đàn. Điều quan trọng là phải chỉ định tham số “ — listen-addr” khi sử dụng docker-machine và VirtualBox, vì các máy ảo được gán nhiều giao diện mạng docker@manager1:~$ docker swarm init --listen-addr 192.168.99.100:2377 --advertise-addr 192.168.99.100:2377 Bạn có thể thấy từ đầu ra "thông tin docker", bây giờ tôi có một nhóm ba nút với một người quản lý Chuẩn bị cho MongoDBĐể giữ cho các dịch vụ mongo được ghim vào cùng các nút với khối lượng dữ liệu của chúng, tôi đang đặt nhãn “mongo. bản sao” trên mỗi nút. Tôi sẽ sử dụng các nhãn này trong các ràng buộc khi tạo các dịch vụ sau này docker@manager1:~$ docker node update --label-add mongo.replica=1 $(docker node ls -q -f name=manager1) Bộ bản sao sẽ cần một mạng lớp phủ để cho phép các bản sao giao tiếp và chấp nhận các kết nối từ ứng dụng. Mỗi bản sao cũng cần một ổ đĩa cho dữ liệu và cấu hình. Tôi sẽ cung cấp cho mỗi tập một hậu tố số phù hợp với “mongo. nhãn bản sao cho nút bên dưới. Điều này không bắt buộc, nhưng giúp tôi theo dõi chúng docker@manager1:~$ docker network create --driver overlay --internal mongo Tạo dịch vụ MongoDBBây giờ là lúc tạo các dịch vụ MongoDB sẽ bao gồm bộ bản sao. Tôi sẽ sử dụng hình ảnh mongo chính thức từ DockerHub docker@manager1:~$ docker service create --replicas 1 --network mongo --mount type=volume,source=mongodata1,target=/data/db --mount type=volume,source=mongoconfig1,target=/data/configdb --constraint 'node.labels.mongo.replica == 1' --name mongo1 mongo:3.2 mongod --replSet example Lệnh tạo từng dịch vụ hơi dài, để tôi chia nhỏ dịch vụ đầu tiên một chút. chúng tôi đang yêu cầu docker tạo một dịch vụ mới, với một phiên bản duy nhất, trên mạng “mongo”, gắn ổ đĩa “mongodata1” và “mongoconfig1”, chạy trên nút có nhãn “mongo. replica” có giá trị “1” với tên dịch vụ “mongo1”, sử dụng hình ảnh “mongo. 3. 2” và chạy lệnh “mongod -replSet example” Sẽ mất một chút thời gian để lấy hình ảnh lần đầu tiên, hãy sử dụng cột “REPLICAS” từ “docker service ls” để xem khi nào tất cả các tác vụ dịch vụ đang chạy. (Bản sao dịch vụ Docker và bản sao MongoDB không giống nhau, bản sao trước là các tác vụ dự phòng (bộ chứa) trong một dịch vụ do bầy đàn quản lý, trong khi bản sao sau là các phiên bản MongoDB tham gia vào một bộ bản sao. ) Bắt đầu bộ bản saoTiếp theo, tôi sẽ thiết lập bộ bản sao MongoDB. Tôi đang làm theo hướng dẫn Deploy a Replica Set từ tài liệu. Đầu tiên tôi sẽ bắt đầu bộ bản sao với một cấu hình thành viên duy nhất, sau đó thêm hai thành viên còn lại. Vì các dịch vụ nằm trên một mạng riêng, tôi sẽ thực thi ứng dụng khách mongo đã có trong vùng chứa đang chạy để ra lệnh. Điều này cũng trình bày cách sử dụng một trong các nhãn được gán theo nhóm để xác định vùng chứa docker@manager1:~$ docker ps Đây rồi, một bộ bản sao khỏe mạnh Đặt một ứng dụng trên đóBây giờ tôi đã có một bộ bản sao đang hoạt động, tôi sẽ đặt một Nút. js phía trước nó để thể hiện khả năng. Tôi sẽ sử dụng Koalab post-it board, vì nó mang lại hình ảnh đẹp và mọi thứ được lưu trữ trong MongoDB. Nhà xuất bản của Koalab không đẩy nó lên Docker Hub, vì vậy tôi đã lo việc đó ________số 8Như bạn có thể thấy, MONGO_URL của tôi giải quyết toàn bộ bộ bản sao và tôi đã đính kèm dịch vụ này vào mạng “mongo”. Bây giờ tôi có thể truy cập cổng 8080 trên bất kỳ máy chủ bầy đàn nào của mình và tạo một bảng post-it mới. Mặc dù chỉ có hai bản sao kalahari/koalab đang chạy, nhưng sự kỳ diệu của mạng bầy đàn giúp dịch vụ có sẵn ở mọi nơi Cảm ơn bạn đã dành thời gian đọc, tôi hy vọng nó có nhiều thông tin và cho phép bạn hưởng lợi từ bản dùng thử và sai sót của tôi. Nếu bạn có bất kỳ câu hỏi nào, vui lòng hỏi bên dưới hoặc ping tôi trên twitter |