MongoDB
 sql >> Cơ Sở Dữ Liệu >  >> NoSQL >> MongoDB

Cách triển khai MongoDB để có tính khả dụng cao

Giới thiệu

MongoDB hỗ trợ tuyệt vời cho tính khả dụng cao thông qua ReplicaSets. Tuy nhiên, việc triển khai ReplicaSet là không đủ cho một hệ thống sẵn sàng sản xuất. Sau này yêu cầu một chút kế hoạch. Triển khai chỉ là bước ban đầu, sau đó chúng tôi cần cung cấp cho các nhóm vận hành khả năng giám sát, cảnh báo, bảo mật, phát hiện sự cố hoặc bất thường, tự động khôi phục / chuyển đổi dự phòng, quản lý sao lưu và các công cụ khác để giữ cho môi trường luôn hoạt động.

Điều kiện tiên quyết

Trước khi bạn có thể bắt đầu triển khai MongoDB của mình với ClusterControl, bạn cần phải chuẩn bị một số. Các nền tảng được hỗ trợ là RedHat / CentOS 6.x / 7.x, Ubuntu 12.04 / 14.04 / 16.04 LTS và Debian 7.x / 8.x Yêu cầu tài nguyên hệ điều hành tối thiểu là 2GB RAM, 2CPU và 20GB dung lượng đĩa chạy trên x86 ngành kiến ​​​​trúc. Bản thân ClusterControl có thể chạy trên máy ảo thông thường hoặc máy chủ cơ sở chạy tại chỗ, sau tường lửa hoặc trên máy ảo đám mây.

Ngoài ra, ClusterControl yêu cầu các cổng được sử dụng bởi các dịch vụ sau phải được mở / kích hoạt:
ICMP (echo reply / request)
SSH (mặc định là 22)
HTTP (mặc định là 80)
> HTTPS (mặc định là 443)
MySQL (mặc định là 3306) (cơ sở dữ liệu nội bộ)
CMON RPC (mặc định là 9500)
CMON RPC TLS (mặc định là 9501)
Sự kiện CMON (mặc định là 9510)
CMON SSH (mặc định là 9511)
CMON Cloud (mặc định là 9518)

Cổng truyền trực tuyến để sao lưu thông qua netcat (mặc định là 9999)

Cách dễ nhất và thuận tiện nhất để cài đặt ClusterControl là sử dụng tập lệnh cài đặt do Somenines cung cấp. Chỉ cần tải xuống tập lệnh và thực thi với tư cách người dùng gốc hoặc người dùng có quyền root sudo. Nếu bạn cần một cách tiếp cận thủ công hơn, chẳng hạn như nếu máy chủ của bạn hoàn toàn không có truy cập internet, bạn có thể làm theo hướng dẫn được cung cấp trong tài liệu ClusterControl.

$ wget http://www.severalnines.com/downloads/cmon/install-cc 
$ chmod +x install-cc
$ ./install-cc   # as root or sudo user

Làm theo trình hướng dẫn cài đặt, nơi bạn sẽ được hướng dẫn cách thiết lập máy chủ cơ sở dữ liệu ClusterControl nội bộ và đó là thông tin đăng nhập, mật khẩu cmon để sử dụng ClusterControl, v.v. Bạn sẽ nhận được dòng sau khi quá trình cài đặt hoàn tất:

Determining network interfaces. This may take a couple of minutes. Do NOT press any key.
Public/external IP => http://{public_IP}/clustercontrol
Installation successful. 

Bước tiếp theo là tạo khóa SSH mà chúng ta sẽ sử dụng để thiết lập SSH không cần mật khẩu sau này. Nếu bạn có một cặp khóa muốn sử dụng, bạn có thể bỏ qua việc tạo một cặp khóa mới.

Bạn có thể sử dụng bất kỳ người dùng nào trong hệ thống nhưng nó phải có khả năng thực hiện các thao tác siêu người dùng (sudoer). Trong ví dụ này, chúng tôi đã chọn người dùng gốc:

$ whoami
root
$ ssh-keygen -t rsa #generates ssh key

Thiết lập SSH không cần mật khẩu cho tất cả các nút mà bạn muốn giám sát / quản lý thông qua ClusterControl. Trong trường hợp này, chúng tôi sẽ thiết lập điều này trên tất cả các nút trong ngăn xếp (bao gồm cả chính nút ClusterControl). Trên nút ClusterControl, hãy chạy các lệnh sau để sao chép các khóa ssh và chỉ định mật khẩu gốc khi được nhắc:

ssh-copy-id [email protected] # clustercontrol
ssh-copy-id [email protected]
ssh-copy-id [email protected]
ssh-copy-id [email protected]
...

Sau đó, bạn có thể xác minh xem nó có hoạt động hay không bằng cách chạy lệnh sau trên nút ClusterControl:

$ ssh [email protected] "ls /root"

Đảm bảo rằng bạn có thể xem kết quả của lệnh trên mà không cần nhập mật khẩu.
Khi cài đặt xong, bạn có thể đăng nhập vào giao diện web qua

https://<your_vm_name>/clustercontrol/#

Sau lần đăng nhập đầu tiên, bạn sẽ thấy một cửa sổ với các tùy chọn để bắt đầu với lần triển khai đầu tiên của bạn hoặc nhập một cụm hiện có.

ClusterControl Triển khai và nhập cụm hiện có

Định cấu hình kho lưu trữ

Trước khi bắt đầu triển khai, chúng ta hãy xem xét hệ thống quản lý gói. Quá trình triển khai ClusterControl hỗ trợ toàn bộ quá trình cài đặt cụm. Điều đó bao gồm các điều chỉnh hệ điều hành và tải xuống và cài đặt gói. Nếu các nút cơ sở dữ liệu của bạn có quyền truy cập Internet hạn chế và bạn không thể tải xuống các gói trực tiếp từ nút, bạn có thể tạo một kho lưu trữ gói trực tiếp trên máy chủ ClusterControl.

Kho lưu trữ gói ClusterControl

Có ba cách để duy trì gói MongoDB trong ClusterControl.

Sử dụng Kho lưu trữ của Nhà cung cấp

Cài đặt phần mềm bằng cách thiết lập và sử dụng kho phần mềm ưa thích 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 lưu trữ bởi kho lưu trữ MongoDB.

Không thiết lập kho lưu trữ của nhà cung cấp

Cài đặt phần mềm bằng cách sử dụng kho phần mềm có sẵn đã được thiết lập trên HĐH. 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 gói. Điều này là 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 và công ty của bạn có một hệ thống gói bên ngoài với các gói MongoDB tại chỗ.

Sử dụng Kho lưu trữ nhân bản (Tạo kho lưu trữ mới)

Tạo và sao chép kho lưu trữ của nhà cung cấp hiện tại, sau đó triển khai bằng cách sử dụng kho lưu trữ được sao chép cục bộ. Nó cũng cho phép bạn “đóng băng” các phiên bản gần đây của gói phần mềm được sử dụng để cung cấp cụm cơ sở dữ liệu cho một nhà cung cấp cụ thể (tức là chỉ sử dụng các gói Percona).

ClusterControl tự động tạo kho lưu trữ gói nội bộ

Triển khai ReplicaSet

ClusterControl hỗ trợ MongoDB / Percona Server cho MongoDB 3.x ReplicaSet. Để bắt đầu với việc triển khai cụm mới, hãy chuyển đến tùy chọn triển khai ở góc trên cùng bên phải. Khi bạn cài đặt các nút cơ sở dữ liệu của mình, hãy luôn sử dụng các máy ảo sạch và tối thiểu. Các gói phụ thuộc hiện có có thể bị xóa nếu được yêu cầu. Các gói mới sẽ được cài đặt và các gói hiện có có thể bị xóa khi cung cấp phần mềm cần thiết cho nút.

Bước đầu tiên của quá trình triển khai là cung cấp thông tin đăng nhập ssh phù hợp với các máy chủ mà bạn đang triển khai cụm của mình. Vì ClusterControl sử dụng ssh không cần mật khẩu để kết nối và định cấu hình máy chủ của bạn, nên cần có khóa ssh.

ClusterControl triển khai trình hướng dẫn cụm MongoDB

Bạn nên sử dụng tài khoản người dùng không có đặc quyền để đăng nhập vào máy chủ lưu trữ, do đó, mật khẩu sudo có thể được cung cấp để hỗ trợ các tác vụ quản trị. Nếu tài khoản người dùng không nhắc nhập mật khẩu sudo, điều này không cần thiết. Bạn cũng có tùy chọn tắt iptables và AppArmor hoặc SELinux trên máy chủ để tránh sự cố khi triển khai ban đầu.

Trên màn hình sau, bạn có thể chọn cài đặt các tệp nhị phân MongoDB từ MongoDB Inc hoặc từ Percona. Tại đây, bạn cũng phải chỉ định tài khoản và mật khẩu quản trị MongoDB của mình vì bảo mật cấp người dùng được yêu cầu.

ClusterControl triển khai trình hướng dẫn MongoDB, ReplicaSet

Trên màn hình này, bạn cũng có thể xem mẫu cấu hình nào đang được sử dụng. ClusterControl sử dụng các mẫu tệp cấu hình để đảm bảo triển khai có thể lặp lại. Các mẫu được lưu trữ trên máy chủ ClusterControl và có thể được chỉnh sửa trực tiếp bằng dòng lệnh hoặc thông qua giao diện người dùng ClusterControl. Bạn cũng có thể chọn sử dụng kho lưu trữ của nhà cung cấp, nếu bạn muốn, hoặc chọn kho lưu trữ của riêng bạn. Ngoài ra, bạn có thể tự động tạo một kho lưu trữ mới trên máy chủ lưu trữ ClusterControl. Điều này cho phép đóng băng phiên bản MongoDB mà ClusterControl sẽ triển khai cho bản phát hành hiện tại. Sau khi bạn thực hiện cấu hình thích hợp tại đây, hãy nhấp vào Triển khai để tiếp tục.

Triển khai sharding

ClusterControl cũng có thể triển khai Sharded Cluster. Hai phương pháp làm như vậy được hỗ trợ. Đầu tiên, bạn có thể chuyển đổi MongoDB ReplicaSet hiện có thành Cụm phân mảnh, như được hiển thị bên dưới.

ClusterControl Triển khai các mảnh MongoDB

Khi nhấp vào “Convert to Shard”, bạn sẽ được nhắc thêm ít nhất một máy chủ Cấu hình (đối với môi trường sản xuất, bạn nên thêm ba) và một bộ định tuyến, còn được gọi là quy trình “mongos”. Bước cuối cùng là chọn các mẫu cấu hình MongoDB cho máy chủ cấu hình và bộ định tuyến, cũng như thư mục dữ liệu của bạn. Cuối cùng, nhấp vào triển khai. Khi hoàn tất, nó sẽ hiển thị trong dạng xem Cụm cơ sở dữ liệu của bạn. Nó sẽ hiển thị tình trạng phân đoạn của bạn thay vì các trường hợp riêng lẻ. Cũng có thể thêm các phân đoạn bổ sung nếu cần.

Chuyển đổi thành Shard

Nếu bạn tình cờ gặp vấn đề về tỷ lệ, bạn có thể chia tỷ lệ ReplicaSet này bằng cách thêm nhiều thứ hai hơn hoặc thu nhỏ bằng cách tăng tỷ lệ. Bạn có thể chuyển đổi ReplicaSet hiện có thành một cụm phân đoạn, nhưng đây là một quá trình lâu dài mà bạn có thể dễ dàng mắc lỗi. Trong ClusterControl, chúng tôi đã tự động hóa quá trình này, nơi chúng tôi tự động thêm máy chủ Cấu hình, bộ định tuyến phân đoạn và bật tính năng sharding.

Để chuyển đổi ReplicaSet thành một cụm phân đoạn, bạn có thể chỉ cần kích hoạt nó thông qua các hành động thả xuống:

ClusterControl Chuyển đổi thành phân đoạn

Lập lịch chính sách sao lưu

Điều cần thiết là giữ bản sao lưu cơ sở dữ liệu của bạn và cơ sở dữ liệu của bạn có một quy trình tốt và dễ dàng để sao lưu. ClusterControl có hỗ trợ sao lưu và khôi phục hoàn toàn nhất quán cho tập hợp bản sao MongoDB hoặc cụm phân đoạn của bạn.

Các bản sao lưu có thể được thực hiện thủ công hoặc có thể được lên lịch. Việc tập trung các bản sao lưu được hỗ trợ, với các bản sao lưu được lưu trữ trên hệ thống tệp Bộ điều khiển, bao gồm các thư mục được gắn trên mạng hoặc được tải lên nhà cung cấp Đám mây được định cấu hình trước - các nhà cung cấp hiện được hỗ trợ là Google Cloud Platform, Amazon Web Services và Microsoft Azure. Điều này cho phép bạn tận dụng tối đa chức năng quản lý vòng đời nâng cao do Amazon và Google cung cấp cho các tính năng như lịch trình lưu giữ tùy chỉnh, lưu trữ lâu dài và mã hóa ở chế độ nghỉ ngơi, trong số các tính năng khác.

Giữ lại bản sao lưu có thể định cấu hình; 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.

Bật báo cáo hoạt động

Với ClusterControl, bạn có thể lập lịch báo cáo môi trường chéo như "Báo cáo hệ thống hàng ngày", "Báo cáo nâng cấp gói", "Báo cáo thay đổi giản đồ" cũng như "Bản sao lưu" và "Tính khả dụng". Các báo cáo này sẽ giúp bạn giữ cho môi trường của bạn an toàn và hoạt động. Bạn cũng sẽ thấy các khuyến nghị về cách sửa các khoảng trống. Báo cáo ở định dạng HTML có thể được gửi qua email tới SysOps, DevOps hoặc thậm chí là những người quản lý muốn nhận thông tin cập nhật trạng thái thường xuyên về tình trạng của một hệ thống nhất định.

Cố vấn Hiệu suất

Cố vấn cung cấp lời khuyên cụ thể về cách giải quyết các vấn đề trong các lĩnh vực như hiệu suất, bảo mật, quản lý nhật ký, cấu hình, không gian lưu trữ và các lĩnh vực khác. ClusterControl đi kèm với một danh sách các cố vấn được xác định trước nhằm theo dõi trạng thái của các chỉ số và trạng thái khác nhau của cơ sở dữ liệu của bạn. Khi cần, một cảnh báo sẽ được tạo. Chúng có thể được mở rộng bằng các tập lệnh thủ công. Để biết thêm thông tin, vui lòng theo dõi blog gần đây của chúng tôi về “Cách Tự động hóa Phân tích Khối lượng Công việc Cơ sở dữ liệu với Cố vấn Hiệu suất ClusterControl”.

Trong số các cố vấn hiệu suất hệ điều hành khác nhau, bạn có thể tìm thấy phần bên dưới liên quan đến MongoDB.

MongoDB cố vấn sharding
kết nối được sử dụng
kiểm tra nhân rộng
cửa sổ nhân rộng

Triển khai trên đám mây

Bắt đầu từ phiên bản 1.6, ClusterControl cho phép bạn tạo Bộ bản sao MongoDB 3.4 trên đám mây. Các nền tảng đám mây được hỗ trợ là Amazon AWS, Google Cloud và Microsoft Azure.

Trình hướng dẫn sẽ hướng dẫn bạn cách tạo máy ảo và cài đặt MongoDB, tất cả ở cùng một nơi.

ClusterControl triển khai MongoDB ReplicaSet trên đám mây

Quá trình cho phép bạn chọn các thông số hệ điều hành bao gồm thiết lập mạng. Không cần sao chép khóa SSH, chúng sẽ được thêm tự động. Sau khi hoàn thành công việc, bạn sẽ thấy cụm của mình trong bảng điều khiển chính. Từ bây giờ, bạn có thể quản lý cụm MongoDB của mình giống như bất kỳ cụm nào khác trong ClusterControl.

ClusterControl triển khai MongoDb RelicaSet trên đám mây, cài đặt mạng VM

Mẹo bảo mật

Tại thời điểm này, cụm mới của bạn sẽ được thiết lập và chạy. Trước khi cho phép người dùng và quy trình ứng dụng truy cập dữ liệu, bạn cần xác định cài đặt bảo mật cụm. Trong các blog trước đây của chúng tôi, chúng tôi đã nêu ra những lo ngại về cấu hình bảo mật mặc định. Dưới đây là một số điều chính bạn cần xem xét trước khi chuyển nhóm mới của mình cho các nhóm khác.

Thay đổi các cổng mặc định - theo mặc định, MongoDB sẽ liên kết với các cổng tiêu chuẩn:27017 đối với MongoDB ReplicaSets hoặc Bộ định tuyến Shard, 27018 đối với phân đoạn và 27019 đối với máy chủ Cấu hình. Không nên sử dụng các cổng tiêu chuẩn vì nó làm giảm khả năng bị tin tặc tấn công.

Bật xác thực - Không cần xác thực, người dùng có thể đăng nhập mà không cần mật khẩu. Bật xác thực trên tất cả các môi trường của bạn (phát triển, chứng nhận và sản xuất).

security:
    Authentication: on

Sử dụng mật khẩu mạnh - nếu cần, hãy sử dụng trình tạo mật khẩu để tạo các mật khẩu phức tạp.

Thêm tệp khóa bản sao - với keyfile được bật, xác thực của luồng nhân bản sẽ được mã hóa.

Mã hóa các bản sao lưu của bạn - ClusterControl cho phép bạn mã hóa các bản sao lưu của mình.

Để đọc thêm, chúng tôi có một blog về cách bảo mật MongoDB.

Bật phục hồi tự động theo cụm

Tính năng cuối cùng nhưng không kém phần quan trọng để bật sẽ là tự động khôi phục nút và cụm.

ClusterControl có thể làm việc cho bạn với tư cách là thành viên nhóm DBA 24/7 mở rộng. Có hai chức năng chính ở đây. Khôi phục nút tự động và khôi phục cụm tự động.

Khi kích hoạt tính năng tự động khôi phục nút, ClusterControl sẽ phản ứng với các sự cố của nút và trong trường hợp lỗi, nó sẽ cố gắng khôi phục các nút riêng lẻ. Điều này nhằm giải quyết những vấn đề như quá trình chạy bộ nhớ hoặc dịch vụ yêu cầu khởi động sau khi mất điện, bất kỳ điều gì đang gây ra sự cố với dịch vụ.

Tùy chọn khôi phục cụm thậm chí còn phức tạp hơn. Nó sẽ thực hiện chuyển đổi nếu cần.

Trong trường hợp đó, việc khôi phục bất kỳ thay đổi nào không được sao chép đối với các nô lệ sẽ được đặt trong thư mục "khôi phục", do đó, quản trị viên có thể khôi phục nó.

Để thiết lập tự động khôi phục nút và cụm, bạn chỉ cần bật chúng trong trang tổng quan chính.


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Những lý do nên và không nên chuyển từ máy chủ SQL sang MongoDB

  2. Tại sao lược đồ của tôi không thêm giá trị mặc định trong mảng mongoose?

  3. MongoDB $ atanh

  4. Làm thế nào bạn có thể chỉ định thứ tự của các thuộc tính trong một đối tượng javascript cho một chỉ mục MongoDB trong node.js?

  5. mongodb $ tồn tại luôn trả về 0