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

Triển khai và bảo trì MongoDB bằng Ansible

Công nghệ thay đổi từng ngày và các ứng dụng hiện đại cần phải có những điều chỉnh nghiêm túc để đáp ứng các kỳ vọng giao hàng nhanh chóng của tổ chức của họ. Thật không may, điều này khiến chúng trở nên phức tạp hơn, phức tạp hơn và khó bảo trì hơn.

Về mặt quản lý cơ sở dữ liệu, cấu trúc dữ liệu bên trong MongoDB thay đổi theo nhu cầu của ứng dụng theo thời gian và nó có thể khá tốn kém (hoặc khá rủi ro).

Về lâu dài, chúng ta cần có một cơ sở dữ liệu hiệu quả được cấu hình dễ dàng và đảm bảo cung cấp phần mềm có thẩm quyền. Đạt được tất cả những điều này theo cách thủ công đi kèm với một số trở ngại như

  1. Sự phối hợp phức tạp giữa các thành viên trong nhóm.
  2. Khả năng lặp lại công việc cao
  3. Dễ mắc phải rất nhiều lỗi và sai sót của con người
  4. Không thoải mái khi vượt qua sự phức tạp
  5. Giảm khả năng cộng tác và không hài lòng với công việc
  6. Tốn thời gian
  7. Khả năng giải trình và tuân thủ kém

Những khó khăn của quản trị cơ sở dữ liệu chủ yếu tập trung vào

  • Triển khai
  • Duy trì
  • Nâng cấp có thể ảnh hưởng đến chi phí hoạt động, giảm tới 95%.

Để đạt được điều này có thể mất rất nhiều thời gian và nỗ lực thủ công đối với MongoDB. Để đảm bảo thành công, bạn sẽ cần phải có một hệ thống đơn giản mà bạn có thể đảm bảo tất cả những trở ngại được liệt kê ở trên có thể được giải quyết kịp thời từ một nền tảng duy nhất, tức là bằng cách nào đó, một hệ thống tự động. Có khá nhiều tùy chọn nhưng trong bài viết này, chúng ta sẽ thảo luận về cách sử dụng Ansible.

Ansible là gì

Ansible chỉ đơn giản là một ngôn ngữ chung làm sáng tỏ bí ẩn về cách thức thực hiện công việc. Nói cách khác, nó là một công cụ điều phối CNTT tự động hóa việc triển khai các ứng dụng, quản lý cấu hình và điều phối các tác vụ CNTT nâng cao hơn, chẳng hạn như đảm bảo cập nhật liên tục trong thời gian chết và triển khai liên tục.

Máy có thể dễ dàng được quản lý theo cách không cần tác nhân, tập trung nhiều hơn vào bảo mật và độ tin cậy thông qua việc sử dụng ngôn ngữ được thiết kế xoay quanh “khả năng kiểm tra” của con người.

Mặc dù việc triển khai MongoDB có thể không quá khó khăn nhưng việc bảo trì, sao lưu và giám sát ngày càng trở thành những yếu tố được quan tâm khi thời gian trôi qua. Ngoài ra, nó không phải là dễ dàng khi bạn mới làm quen với quản lý cơ sở dữ liệu. Với Ansible, các nhà phát triển có thể triển khai và định cấu hình ứng dụng một cách dễ dàng, nó cũng cho phép phân phối nhanh chóng đến bất kỳ nền tảng lưu trữ nào.

Vì Ansible không phải là một phần của hệ thống cụm cơ sở dữ liệu, nó có thể được cài đặt trong bất kỳ máy tính từ xa nào và một cấu hình được tạo cho máy chủ cơ sở dữ liệu của bạn. Vui lòng kiểm tra hướng dẫn cài đặt để biết phiên bản nào phù hợp với hệ điều hành của bạn.

Ansible, theo mặc định, kết nối với máy chủ cơ sở dữ liệu thông qua giao thức SSH.

Sách phát Ansible

Playbook là các mẫu trong đó mã Ansible được viết do đó hướng dẫn bản thân Ansible những gì cần thực thi theo cách giống như danh sách việc cần làm. Chúng được viết ở định dạng YAML (Yet Another Markup Language). Mỗi thao tác chứa các thao tác từng bước được người dùng thực hiện trên một máy cụ thể chạy tuần tự. Cấu trúc của chúng được tạo thành từ một hoặc nhiều Lượt chơi. Play về cơ bản là một khối mã ánh xạ một tập hợp các hướng dẫn được xác định dựa trên một máy chủ cụ thể.

Thẻ YAML thường được sử dụng trong Ansible

  1. tên

    Đây là thẻ xác định tên của sách vở Ansible. Bạn nên đặt một cái tên xác định chính xác những gì nó sẽ hoạt động.

  2. máy chủ

    Điều này xác định một nhóm máy chủ lưu trữ hoặc danh sách các máy chủ lưu trữ mà các tác vụ đã xác định sẽ được chạy. Đây là một thẻ bắt buộc cho Ansible biết máy chủ nào chạy các tác vụ đã được liệt kê. Vì các tác vụ có thể được thực hiện trên nhiều máy hoặc cùng một máy hoặc các máy từ xa, nên người ta có thể xác định một nhóm mục nhập máy chủ trong thẻ này.

  3. vars

    Giống như bất kỳ ngôn ngữ lập trình nào khác, bạn sẽ cần các biến. Với thẻ này, bạn có thể xác định các biến mà bạn sẽ sử dụng trong sổ chơi của mình.

  4. nhiệm vụ

    Thẻ này sẽ cho phép bạn liệt kê một tập hợp các tác vụ sẽ được thực thi. Nhiệm vụ thực sự là những hành động mà một người cần phải thực hiện. Trường tác vụ xác định tên tác vụ về cơ bản giúp tạo văn bản cho người dùng trong quá trình gỡ lỗi sách vở. Một đoạn mã được định nghĩa là mô-đun được liên kết nội bộ theo từng nhiệm vụ và bất kỳ đối số nào sẽ được sử dụng trong mô-đun đều được chuyển qua thẻ nhiệm vụ.

Cấu trúc sổ chơi đơn giản trông giống như thế này ...

---
 name: install and configure DB
   hosts: testServer
   become: yes

   vars: 
      mongoDB_Port : 27017
   
   tasks:
   -name: Install the mongodb
      yum: <code to install the DB>
    
   -name: Ensure the installed service is enabled and running
   service:
      name: <your service name>

Viết Playbook đơn giản để cài đặt và khởi động MongoDB

  1. Bật quyền truy cập SSH gốc

    Một số thiết lập của các nút được quản lý có thể ngăn bạn đăng nhập với tư cách là người dùng gốc, do đó cần phải xác định một playbook để giải quyết vấn đề này. Chúng tôi sẽ tạo một playbook enable-root-access.yml sẽ giống như thế này

    ---
    - hosts: ansible-test
      remote_user: ubuntu
      tasks:
        - name: Enable root login
          shell: sudo cp ~/.ssh/authorized_keys /root/.ssh/

    Khi bạn chạy lệnh

    $ ansible-playbook -i inventory.txt -c ssh enable-root-access.yaml 

    Bạn sẽ thấy một cái gì đó giống như

    PLAY [ansible-test] ***********************************************************
    GATHERING FACTS ***************************************************************
    TASK: [Enable root login] *****************************************************
    PLAY RECAP ********************************************************************
  2. Chọn máy chủ và người dùng trong mongodbInstall.yaml

    ---
    - hosts: ansible-test
      remote_user: root
      become: yes
  3. Thêm các tác vụ sẽ được thực thi

    Các tác vụ được thực hiện tuần tự, vì vậy chúng ta cần phác thảo chúng theo cách tuần tự, tức là

    1. apt_key để thêm các khóa kho lưu trữ. Khóa GPG công khai MongoDB trước tiên cần được nhập
      - name: Import the public key used by the package management system
          apt_key: keyserver=hkp://keyserver.ubuntu.com:80 id=7F0CEB10 state=present
    2. Thêm MongoDB apt_repository
      - name: Add MongoDB repository
        apt_repository: repo='deb http://downloads-distro.mongodb.org/repo/ubuntu-upstart dist 10gen' state=present
    3. Cài đặt các gói và khởi động mongod, sau đó tải lại cơ sở dữ liệu gói cục bộ
      - name: install mongodb
        apt: pkg=mongodb-org state=latest update_cache=yes
        notify:
        - start mongodb
    4. Quản lý các dịch vụ, sử dụng trình xử lý để bắt đầu và khởi động lại các trình xử lý
      handlers:
        - name: start mongodb
          service: name=mongod state=started
Vài người trở thành MongoDB DBA - Đưa MongoDB vào Sản xuất Tìm hiểu về những điều bạn cần biết để triển khai, giám sát, quản lý và mở rộng MongoDBDownload miễn phí

Mã playbook chung sẽ giống như thế này

---
- hosts: ansible-test
  remote_user: root
  become: yes
  tasks:
  - name: Import the public key used by the package management system
    apt_key: keyserver=hkp://keyserver.ubuntu.com:80 id=7F0CEB10 state=present
  - name: Add MongoDB repository
    apt_repository: repo='deb http://downloads-distro.mongodb.org/repo/ubuntu-upstart dist 10gen' state=present
  - name: install mongodb
    apt: pkg=mongodb-org state=latest update_cache=yes
    notify:
    - start mongodb
  handlers:
    - name: start mongodb
      service: name=mongod state=started

Sau đó, chúng tôi có thể chạy tệp này bằng cách sử dụng lệnh ansible bằng cách sử dụng lệnh

ansible-playbook -i inventory.txt -c ssh mongodbInstall.yaml

Nếu sổ chơi đã được thực hiện thành công, bạn sẽ thấy điều này trong thiết bị đầu cuối của mình

PLAY [ansible-test] ***********************************************************

GATHERING FACTS ***************************************************************
ok: [12.20.3.105]
ok: [12.20.3.106]

TASK: [Import the public key used by the package management system] ***********
changed: [12.20.3.105]
changed: [12.20.3.106]

TASK: [Add MongoDB repository] ************************************************
changed: [12.20.3.105]
changed: [12.20.3.106]

TASK: [install mongodb] *******************************************************
changed: [12.20.3.105]
changed: [12.20.3.106]

NOTIFIED: [start mongodb] *****************************************************
ok: [12.20.3.106]
ok: [12.20.3.105]

PLAY RECAP ********************************************************************
12.20.3.105                : ok=5    changed=3    unreachable=0    failed=0
12.20.3.106                : ok=5    changed=3    unreachable=0    failed=0

Nếu bây giờ bạn chạy mongo, bạn sẽ được chuyển hướng đến mongo shell

MongoDB shell version v4.0.3
connecting to: mongodb://127.0.0.1:27017
Implicit session: session { "id" : UUID("07c88442-0352-4b23-8938-fdf6ac66f253") }
MongoDB server version: 4.0.3
Welcome to the MongoDB shell.
For interactive help, type "help".
For more comprehensive documentation, see
    http://docs.mongodb.org/
Questions? Try the support group
    http://groups.google.com/group/mongodb-user

Kết luận

Ansible là một công cụ CNTT mã nguồn mở đơn giản, tự động hóa việc triển khai ứng dụng, điều phối dịch vụ và cung cấp đám mây.

Nó hoạt động bằng cách kết nối các nút cơ sở dữ liệu và đẩy ra định nghĩa các lệnh được gọi là mô-đun cho chúng, thực thi chúng thông qua SSH theo mặc định và sau đó loại bỏ chúng khi hoàn tất. Nó không chạy bất kỳ daemon hoặc máy chủ nào do đó có thể chạy từ bất kỳ máy từ xa nào. Trong hướng dẫn tiếp theo, chúng ta sẽ thảo luận về cách duy trì tập hợp bản sao MongoDB trên đám mây bằng Ansible.


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Các giao dịch MongoDB của Spring Data

  2. MongoDB Hiển thị tất cả nội dung từ tất cả các bộ sưu tập

  3. Đếm các trường trong Bộ sưu tập MongoDB

  4. Sử dụng toàn cầu JsonConverter trên một lớp không có thuộc tính

  5. Làm cách nào để lưu tệp vào MongoDB?