Mặc dù MongoDB đã trải qua gần một thập kỷ để đạt được sự trưởng thành (bản phát hành ban đầu vào tháng 2 năm 2009), công nghệ này vẫn còn một chút bí ẩn đối với những người có kinh nghiệm trong môi trường cơ sở dữ liệu quan hệ thông thường (RDBMS). Tích hợp NoSQL vào một môi trường hiện có mà không có kiến thức chuyên sâu có thể là một thách thức. Không có gì lạ khi thấy MongoDB chạy dọc theo MySQL hoặc cơ sở dữ liệu RDBMS khác.
Kinh nghiệm về RDBMS có thể giúp hiểu một số quy trình, nhưng bạn cần biết cách chuyển kiến thức chuyên môn của mình sang thế giới NoSQL. Quản lý môi trường sản xuất bao gồm các bước như triển khai, giám sát thời gian hoạt động và hiệu suất, duy trì bảo mật hệ thống, quản lý HA, sao lưu, v.v. Cả RDBMS và NoSQL đều là những lựa chọn khả thi, nhưng có những khác biệt quan trọng cụ thể giữa hai loại mà người dùng phải lưu ý khi triển khai hoặc quản lý MongoDB. Công nghệ thay đổi nhanh chóng và chúng ta cần phải thích ứng nhanh chóng.
Khi MongoDB đột nhiên thuộc trách nhiệm của bạn, các công cụ quản lý đảm bảo rằng cơ sở dữ liệu MongoDB mà bạn quản lý là ổn định và an toàn. Sử dụng các quy trình xác định trước và tự động hóa không chỉ có thể giúp bạn tiết kiệm thời gian mà còn bảo vệ khỏi những sai lầm phổ biến. Một nền tảng quản lý giải quyết một cách có hệ thống tất cả các khía cạnh khác nhau của vòng đời cơ sở dữ liệu sẽ mạnh mẽ hơn việc chắp vá một số giải pháp điểm với nhau.
Trung tâm của ClusterControl là chức năng tự động hóa cho phép bạn tự động hóa các tác vụ cơ sở dữ liệu mà bạn phải thực hiện thường xuyên, như triển khai cơ sở dữ liệu mới, thêm và mở rộng các nút mới, quản lý bản sao lưu, tính khả dụng cao và chuyển đổi dự phòng, thay đổi cấu trúc liên kết, nâng cấp, v.v. ClusterControl cung cấp bảo mật được lập trình, giữ tính toàn vẹn của cơ sở hạ tầng cơ sở dữ liệu của bạn. Hơn nữa, với ClusterControl, người dùng MongoDB không còn bị nhà cung cấp khóa; điều mà nhiều người thắc mắc trong thời gian gần đây. Bạn có thể triển khai và nhập nhiều phiên bản và nhà cung cấp MongoDB khác nhau từ một bảng điều khiển duy nhất miễn phí. Người dùng MongoDB thường phải sử dụng hỗn hợp các công cụ và tập lệnh cây nhà lá vườn để đạt được yêu cầu của họ và thật tốt khi biết rằng bạn có thể tìm thấy chúng được kết hợp trong một sản phẩm.
Trong bài viết này, chúng tôi sẽ hướng dẫn bạn cách triển khai và quản lý MongoDB 4.0 theo cách tự động. Bạn sẽ tìm thấy ở đây cách thực hiện:
- Cài đặt ClusterControl
- Quy trình triển khai MongoDB
- Triển khai một cụm mới
- Nhập cụm hiện có
- Mở rộng MongoDB
- Đọc chia tỷ lệ (replicaSet)
- Viết tỷ lệ (sharding)
- Bảo mật MongoDB
- Theo dõi và thịnh hành
- Sao lưu và phục hồi
Cài đặt ClusterControl
Để bắt đầu với ClusterControl, bạn cần một máy ảo hoặc máy chủ lưu trữ chuyên dụng. Các yêu cầu về máy ảo và hệ thống được hỗ trợ được mô tả ở đây. Máy ảo cơ sở có thể bắt đầu từ 2 GB, 2 lõi và Dung lượng đĩa 20 GB không gian lưu trữ, tại chỗ hoặc trong đám mây.
Quá trình cài đặt được mô tả rõ ràng trong tài liệu nhưng về cơ bản, việc tải xuống tập lệnh cài đặt sẽ hướng dẫn bạn qua trình hướng dẫn. Tập lệnh thuật sĩ thiết lập cơ sở dữ liệu nội bộ, cài đặt các gói, kho lưu trữ cần thiết và thực hiện các chỉnh sửa cần thiết khác. Đối với môi trường khóa internet, bạn có thể sử dụng quy trình cài đặt ngoại tuyến.
ClusterControl yêu cầu quyền truy cập SSH vào máy chủ cơ sở dữ liệu và việc giám sát có thể dựa trên tác nhân hoặc không có tác nhân. Quản lý là không cần tác nhân.
Thiết lập SSH không cần mật khẩu cho tất cả các nút đích (ClusterControl và tất cả các máy chủ cơ sở dữ liệu) liên quan đến việc chạy các lệnh sau trên máy chủ ClusterControl:
$ ssh-keygen -t rsa # press enter on all prompts
$ ssh-copy-id -i ~/.ssh/id_rsa [ClusterControl IP address]
$ ssh-copy-id -i ~/.ssh/id_rsa [Database nodes IP address] # repeat this to all target database nodes
Triển khai và mở rộng MongoDB
Triển khai Cụm MongoDB 4.0 mới
Khi chúng ta vào giao diện ClusterControl, điều đầu tiên cần làm là triển khai một cụm mới hoặc nhập một cụm hiện có. Phiên bản mới 1.7.1 giới thiệu hỗ trợ cho phiên bản 4.0. Giờ đây, bạn có thể triển khai / nhập và quản lý MongoDB v4.0 với sự hỗ trợ cho các kết nối SSL.
Chọn tùy chọn “Triển khai cụm cơ sở dữ liệu” và làm theo hướng dẫn xuất hiện.
Cụm cơ sở dữ liệu triển khai ClusterControlKhi chọn MongoDB, chúng tôi phải chỉ định Người dùng, Khóa hoặc Mật khẩu và cổng để kết nối bằng SSH với máy chủ của chúng tôi. Chúng tôi cũng cần tên cho cụm mới của mình và nếu chúng tôi muốn ClusterControl cài đặt phần mềm và cấu hình tương ứng cho chúng tôi.
Sau khi thiết lập thông tin truy cập SSH, chúng ta phải nhập dữ liệu để truy cập cơ sở dữ liệu của mình. Chúng tôi cũng có thể chỉ định kho lưu trữ nào sẽ sử dụng. Cấu hình kho lưu trữ là một khía cạnh quan trọng đối với các máy chủ và cụm cơ sở dữ liệu. Bạn có thể có ba loại kho lưu trữ khi triển khai máy chủ / cụm cơ sở dữ liệu bằng ClusterControl:
- Sử dụng phần mềm Cung cấp
Kho lưu trữ của Nhà cung cấp bằng cách thiết lập và sử dụng kho phần mềm ưu tiên của Nhà cung cấp cơ sở dữ liệu. ClusterControl sẽ cài đặt phiên bản mới nhất của những gì được cung cấp bởi kho lưu trữ của nhà cung cấp cơ sở dữ liệu. - Không thiết lập kho lưu trữ của nhà cung cấp
Phần mềm cung cấp bằng cách sử dụng kho phần mềm sẵn có đã được thiết lập trên các nút. Người dùng phải thiết lập kho phần mềm theo cách thủ công trên mỗi nút cơ sở dữ liệu và ClusterControl sẽ sử dụng kho này để triển khai. Điều này rất tốt nếu các nút cơ sở dữ liệu đang chạy mà không có kết nối internet. - Sử dụng Kho lưu trữ được nhân bản (Tạo kho lưu trữ mới)
Tạo và phản chiếu kho lưu trữ của nhà cung cấp cơ sở dữ liệu hiện tại và sau đó triển khai bằng cách sử dụng kho lưu trữ được sao chép cục bộ. Điều này cho phép bạn "đóng băng" các phiên bản hiện tại của gói phần mềm.
Trong bước tiếp theo, chúng ta cần thêm các máy chủ của mình vào cụm mà chúng ta sẽ tạo. Khi thêm máy chủ của chúng tôi, chúng tôi có thể nhập IP hoặc tên máy chủ. Đối với thứ sau, chúng ta phải có máy chủ DNS hoặc đã thêm máy chủ MongoDB vào tệp phân giải cục bộ (/ etc / hosts) của ClusterControl, để nó có thể phân giải tên tương ứng mà bạn muốn thêm. Đối với ví dụ của chúng tôi, chúng tôi sẽ triển khai một ReplicaSet với ba máy chủ, một máy chủ chính và hai máy chủ thứ hai. Chỉ có thể triển khai 2 nút MongoDB (không có trọng tài). Lưu ý của phương pháp này là không có chuyển đổi dự phòng tự động, vì thiết lập 2 nút rất dễ bị chia cắt não. Nếu nút chính gặp sự cố thì cần phải chuyển đổi dự phòng thủ công để đặt máy chủ khác làm máy chủ chính. Chuyển đổi dự phòng tự động hoạt động tốt với 3 nút và hơn thế nữa. Khuyến nghị rằng một tập hợp bản sao có số lượng thành viên biểu quyết là lẻ. Khả năng chịu lỗi cho một tập hợp bản sao là số lượng thành viên có thể không có sẵn và vẫn còn đủ thành viên trong tập hợp để bầu một nhóm sơ cấp. Khả năng chịu lỗi đối với ba thành viên là một, đối với năm là hai, v.v.
Trên cùng một trang, bạn có thể chọn từ các phiên bản MongoDB khác nhau:
ClusteControl Triển khai MongoDB phiên bản 4.0Khi tất cả được thiết lập, hãy nhấn vào nút triển khai. Bạn có thể theo dõi trạng thái tạo cụm mới của chúng tôi từ trình giám sát hoạt động ClusterControl. Sau khi tác vụ hoàn thành, chúng ta có thể thấy cụm của mình trong màn hình ClusterControl chính và trên chế độ xem cấu trúc liên kết.
Chế độ xem cấu trúc liên kết ClusterControlNhư chúng ta có thể thấy trong hình ảnh, sau khi chúng tôi tạo cụm của mình, chúng tôi có thể thực hiện một số tác vụ trên đó, chẳng hạn như chuyển đổi tập hợp bản sao thành phân đoạn hoặc thêm các nút vào cụm.
ClusterControl ScalingNhập một cụm mới
Chúng tôi cũng có tùy chọn để quản lý một cụm hiện có bằng cách nhập nó vào ClusterControl. Môi trường như vậy có thể được tạo bằng ClusterControl hoặc các phương pháp khác như cài đặt docker.
Nhập ClusterControl MongoDBĐầu tiên, chúng ta phải nhập thông tin xác thực truy cập SSH vào máy chủ của mình. Sau đó, chúng tôi nhập thông tin xác thực truy cập vào cơ sở dữ liệu của chúng tôi, thư mục dữ liệu máy chủ và phiên bản. Chúng tôi thêm các nút theo IP hoặc tên máy chủ, giống như khi chúng tôi triển khai và nhấn vào Nhập. Khi nhiệm vụ hoàn thành, chúng tôi đã sẵn sàng quản lý cụm của mình từ ClusterControl.
Mở rộng MongoDB
Một trong những nền tảng của MongoDB là nó được xây dựng với tính khả dụng và khả năng mở rộng cao. Việc chia tỷ lệ có thể được thực hiện theo chiều dọc bằng cách thêm nhiều tài nguyên hơn vào máy chủ hoặc theo chiều ngang với nhiều nút hơn. Chia tỷ lệ theo chiều ngang là điều MongoDB giỏi và nó không nhiều hơn việc phân tán khối lượng công việc cho nhiều máy. Trên thực tế, chúng tôi đang sử dụng nhiều hộp phần cứng hàng hóa chi phí thấp, thay vì nâng cấp lên một máy chủ hiệu suất cao đắt tiền hơn. MongoDB cung cấp cả tỷ lệ đọc và ghi và chúng tôi sẽ khám phá sự khác biệt giữa hai chiến lược này cho bạn. Việc chọn tỷ lệ đọc hay ghi tất cả phụ thuộc vào khối lượng công việc của ứng dụng của bạn:nếu ứng dụng của bạn có xu hướng đọc thường xuyên hơn là ghi dữ liệu, bạn có thể sẽ muốn sử dụng khả năng mở rộng tỷ lệ đọc của MongoDB.
Với ClusterControl, việc thêm nhiều máy chủ hơn vào cụm là một bước dễ dàng. Bạn có thể làm điều đó từ GUI hoặc CLI. Đối với những người dùng nâng cao hơn, bạn có thể sử dụng ClusterControl Developer Studio và viết điều kiện cơ sở tài nguyên để mở rộng cụm của bạn theo chiều ngang.
MongoDB ReplicaSetMài sắc
Giải pháp sharding MongoDB tương tự như các khung công tác sharding hiện có cho các giải pháp cơ sở dữ liệu chính khác. Nó sử dụng một giải pháp tra cứu điển hình, trong đó sharding được xác định trong một khóa phân đoạn và các phạm vi được lưu trữ bên trong cơ sở dữ liệu cấu hình. MongoDB hoạt động với ba thành phần để tìm phân đoạn chính xác cho dữ liệu của bạn. Môi trường MongoDB được phân nhỏ điển hình trông như thế này:
MongoDB ShardingThành phần đầu tiên được sử dụng là bộ định tuyến phân đoạn được gọi là mongos. Tất cả các hoạt động đọc và ghi phải được gửi đến bộ định tuyến phân đoạn, làm cho tất cả các phân đoạn hoạt động như một cơ sở dữ liệu duy nhất cho ứng dụng khách. Bộ định tuyến phân đoạn sẽ định tuyến các truy vấn đến các phân đoạn thích hợp bằng cách tham khảo Máy chủ cấu hình.
Chuyển đổi ClusterControl sang ShardQuản lý phân đoạn thực sự dễ dàng trong MongoDB. Bạn có thể thêm và xóa các phân đoạn trực tuyến và bộ định tuyến phân đoạn MongoDB sẽ tự động điều chỉnh theo những gì bạn yêu cầu. Nếu bạn muốn biết chuyên sâu hơn về cách tốt nhất để quản lý các phân đoạn, vui lòng đọc bài đăng trên blog của chúng tôi về cách quản lý các phân đoạn MongoDB.
Bảo mật MongoDB
Các tài nguyên liên quan ClusterControl cho MongoDB MongoDB Automation &Management với ClusterControlMongoDB đi kèm với rất ít bảo mật:ví dụ:xác thực bị tắt theo mặc định. Nói cách khác:theo mặc định, bất kỳ ai cũng có quyền root đối với bất kỳ cơ sở dữ liệu nào. Một trong những thay đổi mà MongoDB áp dụng để giảm thiểu rủi ro là thay đổi ràng buộc mặc định của nó thành 127.0.0.1. Điều này ngăn không cho nó bị ràng buộc với địa chỉ IP bên ngoài, nhưng đương nhiên, điều này sẽ được hoàn nguyên bởi hầu hết những người cài đặt nó. ClusterControl loại bỏ lỗi do con người gây ra và cung cấp quyền truy cập vào một bộ tính năng bảo mật, để tự động bảo vệ cơ sở dữ liệu của bạn khỏi các cuộc tấn công và các mối đe dọa khác. Trước đây, chúng tôi đã xuất bản một video ngắn với các mẹo bảo mật.
Phiên bản mới của ClusterControl cung cấp hỗ trợ SSL cho các kết nối MongoDB. Việc kích hoạt SSL sẽ bổ sung một mức độ bảo mật khác cho giao tiếp giữa các ứng dụng (bao gồm cả ClusterControl) và cơ sở dữ liệu. Máy khách MongoDB mở các kết nối được mã hóa đến máy chủ cơ sở dữ liệu và xác minh danh tính của các máy chủ đó trước khi chuyển bất kỳ thông tin nhạy cảm nào.
Để kích hoạt kết nối SSL, bạn cần sử dụng ứng dụng khách s9s mới nhất. Bạn có thể cài đặt nó với
wget http://repo.severalnines.com/s9s-tools/install-s9s-tools.sh
chmod 755 install-s9s-tools.sh
./install-s9s-tools.sh
Hoặc làm theo các phương pháp cài đặt khả thi khác được mô tả tại đây.
Khi bạn đã cài đặt công cụ s9s (phiên bản tối thiểu 1.7-93.1), bạn có thể sử dụng cờ --enable-ssl để kích hoạt kết nối SSL.
Ví dụ bên dưới:
[[email protected] ~]# s9s cluster --cluster-id=3 --enable-ssl --log
This is an RPC V2 job (a job created through RPC V2).
The job owner is 'admin'.
Accessing '/.runtime/jobs/jobExecutor' to execute...
Access ok.
Stopping the cluster
node1:27017: Node is already stopped by the user.
node2:27017: Node is already stopped by the user.
node3:27017: Node is already stopped by the user.
Checking/generating (expire 1000 days) server and CA certificate.
node1:27017: setting up SSL as required way of connection.
Using certificate 'mongodb/cluster_3/server'
node1:27017: installed /etc/ssl/mongodb/cluster_3/server.crt, /etc/ssl/mongodb/cluster_3/server.key and /etc/ssl/mongodb/cluster_3/server_ca.crt
node1:27017: Deploying client certificate 'mongodb/cluster_3/client'
Writing file 'node1:/etc/mongod.conf'.
node1:27017: /etc/mongod.conf [mongod] set: ssl_cert, ssl_key and ssl_ca values.
node2:27017: setting up SSL as required way of connection.
Using certificate 'mongodb/cluster_3/server'
node2:27017: installed /etc/ssl/mongodb/cluster_3/server.crt, /etc/ssl/mongodb/cluster_3/server.key and /etc/ssl/mongodb/cluster_3/server_ca.crt
node2:27017: Deploying client certificate 'mongodb/cluster_3/client'
Writing file 'node2:/etc/mongod.conf'.
node2:27017: /etc/mongod.conf [mongod] set: ssl_cert, ssl_key and ssl_ca values.
node3:27017: setting up SSL as required way of connection.
Using certificate 'mongodb/cluster_3/server'
node3:27017: installed /etc/ssl/mongodb/cluster_3/server.crt, /etc/ssl/mongodb/cluster_3/server.key and /etc/ssl/mongodb/cluster_3/server_ca.crt
node3:27017: Deploying client certificate 'mongodb/cluster_3/client'
Writing file 'node3:/etc/mongod.conf'.
node3:27017: /etc/mongod.conf [mongod] set: ssl_cert, ssl_key and ssl_ca values.
Starting the cluster
node3:27017: Doing some preparation for starting the node.
node3:27017: Disable transparent huge page and its defrag according to mongo suggestions.
node3:27017: Checking file permissions and ownership.
node3:27017: Starting mongod MongoDb server with command:
ulimit -u 32000 -n 32000 && runuser -s /bin/bash mongod '-c mongod -f /etc/mongod.conf'
node3:27017: Verifing that 'mongod' process is started.
SSL setup done.
ClusterControl sẽ thực hiện tất cả các bước cần thiết bao gồm tạo chứng chỉ trên tất cả các nút cụm. Những chứng chỉ như vậy có thể được duy trì sau này trong tab Quản lý Khóa.
Quản lý khóa ClusterControlGiám sát
Khi làm việc với các hệ thống cơ sở dữ liệu, bạn sẽ có thể giám sát chúng. Điều đó sẽ cho phép bạn xác định xu hướng, lập kế hoạch nâng cấp hoặc cải tiến hoặc phản ứng hiệu quả với bất kỳ vấn đề hoặc lỗi nào có thể phát sinh.
Tổng quan về ClusterControl MongoDBClusterControl 1.7.1 mới bổ sung tính năng giám sát độ phân giải cao cho nền tảng MongoDB. Nó sử dụng Prometheus làm nơi lưu trữ dữ liệu với ngôn ngữ truy vấn PromQL. Danh sách các trang tổng quan bao gồm MongoDB Server, MongoDB ReplicaSet, Tổng quan Hệ thống và Trang tổng quan Cụm. ClusterControl cài đặt các tác nhân Prometheus, định cấu hình số liệu và duy trì quyền truy cập vào cấu hình trình xuất Prometheus thông qua GUI của nó, vì vậy bạn có thể quản lý tốt hơn cấu hình tham số như cờ thu thập cho trình xuất (Prometheus). Chúng tôi đã mô tả chi tiết những gì có thể được theo dõi gần đây trong bài viết Cách theo dõi MongoDB với Prometheus &ClusterControl.
ClusterControl MongoDB Trang tổng quan SCUMMCảnh báo
Là một nhà điều hành cơ sở dữ liệu, chúng tôi cần được thông báo bất cứ khi nào có điều gì đó quan trọng xảy ra trên cơ sở dữ liệu của chúng tôi. Ba phương pháp chính trong ClusterControl để nhận cảnh báo bao gồm:
- thông báo qua email
- tích hợp
- cố vấn
Bạn có thể đặt thông báo qua email ở cấp độ người dùng. Đi tới Cài đặt> Thông báo qua email. Nơi bạn có thể chọn giữa mức độ nghiêm trọng và loại cảnh báo sẽ được gửi.
Phương pháp tiếp theo là sử dụng các dịch vụ Tích hợp. Điều này là để chuyển danh mục sự kiện cụ thể cho dịch vụ khác như vé ServiceNow, Slack, PagerDuty, v.v. để bạn có thể tạo tích hợp và phương pháp thông báo nâng cao trong tổ chức của mình.
Dịch vụ tích hợp ClusterControlCuối cùng là liên quan đến phân tích số liệu phức tạp trong phần Advisor, nơi bạn có thể xây dựng các kiểm tra và trình kích hoạt thông minh. Ví dụ ở đây có thể là dự đoán sử dụng dung lượng ổ đĩa hoặc chia tỷ lệ cụm bằng cách thêm các nút khi khối lượng công việc đạt đến mức đặt trước.
Cố vấn ClusterControl cho MongoDBSao lưu và phục hồi
Bây giờ bạn đã thiết lập và chạy bản sao MongoDB, đồng thời có chức năng giám sát, đã đến lúc bước tiếp theo:đảm bảo bạn có bản sao lưu dữ liệu của mình.
ClusterControl Tạo chính sách sao lưuClusterControl cung cấp một giao diện để quản lý sao lưu MongoDB với hỗ trợ lập lịch và báo cáo sáng tạo. Nó cung cấp cho bạn hai tùy chọn cho các phương pháp sao lưu.
- Mongodump
- Bản sao lưu nhất quán trong Mongodb
Mongodump kết xuất tất cả dữ liệu ở định dạng Binary JSON (BSON) vào vị trí được chỉ định. Mongorestore sau này có thể sử dụng tệp BSON để khôi phục cơ sở dữ liệu của bạn. Sao lưu nhất quán ClusterControl MongoDB bao gồm các giao dịch từ oplog đang thực thi trong khi thực hiện sao lưu.
Mã hóa sao lưu ClusterControlMột chiến lược sao lưu tốt là một phần quan trọng của bất kỳ hệ thống quản lý cơ sở dữ liệu nào. ClusterControl cung cấp nhiều tùy chọn để sao lưu và khôi phục / khôi phục.
Kiểm soát lịch trình sao lưu ClusterControlCó thể định cấu hình lưu giữ sao lưu ClusterControl; bạn có thể chọn giữ lại bản sao lưu của mình trong bất kỳ khoảng thời gian nào hoặc không bao giờ xóa bản sao lưu. Mã hóa AES256 được sử dụng để bảo vệ các bản sao lưu của bạn trước các phần tử giả mạo. Để khôi phục nhanh chóng, các bản sao lưu có thể được khôi phục trực tiếp vào cụm sao lưu - ClusterControl xử lý toàn bộ quá trình khôi phục từ khởi chạy đến khôi phục cụm, loại bỏ các bước thủ công dễ xảy ra lỗi khỏi quy trình.