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

Tự động hóa triển khai cơ sở dữ liệu MongoDB

Các tổ chức đang sử dụng cơ sở hạ tầng trên đám mây vì nó cung cấp tốc độ, tính linh hoạt và khả năng mở rộng. Bạn có thể tưởng tượng nếu chúng tôi có thể tạo một phiên bản cơ sở dữ liệu mới chỉ với một cú nhấp chuột và mất vài phút cho đến khi nó sẵn sàng, chúng tôi cũng có thể triển khai ứng dụng nhanh hơn so với môi trường tại chỗ.

Trừ khi bạn đang sử dụng dịch vụ đám mây riêng của MongoDB, các nhà cung cấp dịch vụ đám mây lớn không cung cấp dịch vụ MongoDB được quản lý, vì vậy việc triển khai một phiên bản hoặc cụm đơn lẻ không thực sự là một thao tác một cú nhấp chuột. Cách phổ biến là quay vòng các máy ảo và sau đó triển khai chúng trên các máy ảo này. Việc triển khai cần được quan tâm từ A đến Z - chúng ta cần chuẩn bị phiên bản, cài đặt phần mềm cơ sở dữ liệu, điều chỉnh một số cấu hình và bảo mật phiên bản. Những nhiệm vụ này là cần thiết, mặc dù chúng không phải lúc nào cũng được tuân thủ đúng cách - với những hậu quả tai hại có thể xảy ra.

Tự động hóa đóng một vai trò quan trọng trong việc đảm bảo tất cả các tác vụ bắt đầu từ cài đặt, cấu hình, làm cứng và cho đến khi dịch vụ cơ sở dữ liệu sẵn sàng. Trong blog này, chúng ta sẽ thảo luận về tự động hóa triển khai cho MongoDB.

Phần mềm dàn nhạc

Có rất nhiều công cụ phần mềm mới để giúp các kỹ sư triển khai và quản lý cơ sở hạ tầng của họ. Quản lý cấu hình giúp các kỹ sư triển khai nhanh hơn và hiệu quả, giảm thời gian triển khai cho các dịch vụ mới. Các lựa chọn phổ biến bao gồm Ansible, Saltstack, Chef và Puppet. Sản phẩm nào cũng có ưu và nhược điểm, nhưng chúng đều hoạt động rất tốt và cực kỳ phổ biến. Việc triển khai một dịch vụ trạng thái như MongoDB ReplicaSet hoặc Sharded Cluster có thể khó khăn hơn một chút vì đây là những thiết lập đa máy chủ và các công cụ này hỗ trợ kém cho việc điều phối nút chéo và gia tăng. Các thủ tục triển khai thường yêu cầu sự điều phối giữa các nút, với các nhiệm vụ được thực hiện theo một thứ tự cụ thể.

Các tác vụ triển khai MongoDB để tự động hóa

Việc triển khai máy chủ MongoDB liên quan đến một số thứ; thêm kho lưu trữ MongoDB vào cục bộ, cài đặt gói MongoDB, định cấu hình cổng, tên người dùng và khởi động dịch vụ.

Tác vụ:cài đặt MongoDB

- name: install mongoDB
  apt: 
    name: mongodb
    state: present
    update_cache: yes

Tác vụ:sao chép mongod.conf từ tệp cấu hình.

- name: copy config file
  copy:
    src: mongodb.conf
    dest: /etc/mongodb.conf
    owner: root
    group: root
    mode: 0644
  notify:
    - restart mongodb

Tác vụ:tạo cấu hình giới hạn MongoDB:

- name: create /etc/security/limits.d/mongodb.conf
  copy:
    src: security-mongodb.conf
    dest: /etc/security/limits.d/mongodb.conf
    owner: root
    group: root
    mode: 0644
  notify:
    - restart mongodb

Tác vụ:định cấu hình swappiness

- name: config vm.swappiness
  sysctl:
    name: vm.swappiness
    value: '10'
    state: present

Tác vụ:định cấu hình thời gian Keepalive TCP

- name: config net.ipv4.tcp_keepalive_time
  sysctl:
    name: net.ipv4.tcp_keepalive_time
    value: '120'
    state: present

Tác vụ:đảm bảo MongoDB sẽ tự động khởi động

- name: Ensure mongodb is running and and start automatically on reboots
  systemd:
    name: mongodb
    enabled: yes
    state: started

Chúng tôi có thể kết hợp tất cả các tác vụ này vào một playbook duy nhất và chạy playbook để tự động triển khai. Nếu chúng tôi chạy một playbook Ansible từ bảng điều khiển:

$ ansible-playbook -b mongoInstall.yml

Chúng ta sẽ thấy tiến trình triển khai từ tập lệnh Ansible của mình, kết quả đầu ra sẽ giống như bên dưới:

PLAY [ansible-mongo] **********************************************************

GATHERING FACTS ***************************************************************
ok: [10.10.10.11]

TASK: [install mongoDB] *******************************************************
ok: [10.10.10.11]

TASK: [copy config file] ******************************************************
ok: [10.10.10.11]

TASK: [create /etc/security/limits.d/mongodb.conf]*****************************
ok: [10.10.10.11]


TASK: [config vm.swappiness] **************************************************
ok: [10.10.10.11]

TASK: [config net.ipv4.tcp_keepalive_time]*************************************
ok: [10.10.10.11]

TASK: [config vm.swappiness] **********************************************
ok: [10.10.10.11]

PLAY RECAP ********************************************************************
[10.10.10.11]          : ok=6    changed=1    unreachable=0    failed=0

Sau khi triển khai, chúng tôi có thể kiểm tra dịch vụ MongoDB trên máy chủ đích.

Tự động hóa triển khai MongoDB bằng ClusterControl GUI

Có hai cách để triển khai MongoDB bằng ClusterControl. Chúng ta có thể sử dụng nó từ bảng điều khiển của ClusterControl, nó dựa trên GUI và chỉ cần 2 hộp thoại cho đến khi nó kích hoạt một công việc mới để triển khai MongoDB mới.

Đầu tiên chúng ta cần điền Người dùng và mật khẩu SSH, điền Tên cụm như hình dưới đây:

Sau đó, chọn nhà cung cấp và phiên bản MongoDB, xác định người dùng và mật khẩu và cuối cùng là điền Địa chỉ IP mục tiêu

Tự động hóa triển khai MongoDB bằng s9s CLI

Từ giao diện dòng lệnh, người ta có thể sử dụng các công cụ s9s. Việc triển khai MongoDB bằng s9s chỉ là một dòng lệnh như sau:

$ s9s cluster --create --cluster-type=mongodb --nodes="10.10.10.15"  --vendor=percona --provider-version=4.2 --db-admin-passwd="12qwaszx" --os-user=vagrant --cluster-name="MongoDB" --wait
Create Mongo Cluster
/ Job 183 FINISHED   [██████████] 100% Job finished.


Vì vậy, việc triển khai MongoDB, cho dù đó là ReplicaSet hay Sharded Cluster, đều rất dễ dàng và hoàn toàn tự động bởi ClusterControl.


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Mongodb, truy vấn tổng hợp với $ lookup

  2. Cách nhận tất cả kết quả nếu trường unwind không tồn tại trong mongodb

  3. Làm cách nào để kiểm tra xem một chỉ mục có đang được sử dụng hay không

  4. MongoDB - Tạo bản sao lưu

  5. DeprecationWarning:collection.findAndModify không được dùng nữa. Sử dụng findOneAndUpdate, findOneAndReplace hoặc findOneAndDelete thay thế?