Phân cụm cơ sở dữ liệu thường liên quan đến việc cấu hình và duy trì một số máy chủ và phiên bản, tất cả đều có mục đích chung. Điều này có nghĩa là bạn có thể có các máy chủ cơ sở dữ liệu khác nhau tại các máy chủ khác nhau đang cung cấp cùng một dữ liệu.
Ví dụ:giả sử bạn có các máy chủ A, B, C và D, bạn quyết định cài đặt MongoDB trên mỗi máy chủ nhưng sau đó nhận ra rằng có một phiên bản mới mà bạn nên sử dụng. Khi bạn có một số lượng lớn máy chủ và bạn cần cập nhật phiên bản MongoDB, việc định cấu hình chúng theo cách thủ công (từng cái một) có rất nhiều trở ngại. Những thất bại này có thể bao gồm; mất quá nhiều thời gian để định cấu hình lại (do đó trang web của bạn sẽ có thời gian chết lâu dài) hoặc làm cho DB của bạn dễ mắc một số lỗi cấu hình.
Bên cạnh đó, luôn có những tác vụ lặp đi lặp lại mà bạn muốn được thực hiện tự động, thay vì thực hiện lặp đi lặp lại các bước giống nhau, mỗi khi bạn muốn thực hiện các thay đổi tương tự. Tại một số điểm, chúng tôi cũng cần học các mô-đun mới khi có liên quan đến tiến bộ công nghệ có thể giúp chúng tôi tăng hiệu suất cụm
Nói một cách dễ hiểu, chúng ta cần một hệ thống tự động hóa có thể làm giảm bớt tất cả các chủ trương đã đề cập. Puppet là một trong những hệ thống phần mềm được ưa thích nhất để đạt được điều này vì:
- Việc định cấu hình và triển khai cụm MongoDB dễ dàng và nhanh chóng hơn.
- Các tác vụ lặp đi lặp lại có thể dễ dàng được tự động hóa để chúng được thực thi tự động sau này.
- Toàn bộ cơ sở hạ tầng cụm có thể được quản lý chung từ một nền tảng duy nhất.
- Dễ dàng cấp phép cho các nút mới trong môi trường đám mây, hỗn hợp hoặc môi trường vật lý.
- Sắp xếp các thay đổi và sự kiện trên một nhóm các nút.
- Khám phá các tài nguyên trong vòng vài phút có thể giúp bạn thực hiện các tác vụ khác nhau một cách dễ dàng.
- Quy mô tốt từ 1 đến 200 nghìn nút.
- Được hỗ trợ bởi một số nền tảng
Con rối là gì?
Con rối là một ngôn ngữ được sử dụng để đưa máy đến trạng thái mong muốn hay đúng hơn là một công cụ được sử dụng để diễn giải và áp dụng một số hướng dẫn đã xác định cho hệ thống phục vụ. Giống như Ansible, Puppet cũng là một công cụ quản lý cấu hình được sử dụng để tự động hóa và thực thi các tác vụ cụm cơ sở dữ liệu. Tuy nhiên, nó cao cấp hơn và được thiết lập tốt vì nó là phiên bản lâu đời nhất do đó có nhiều tính năng mới được tích hợp sẽ làm cho nó trở nên phức tạp hơn những cái khác. Một trong những lý do chính mà tôi thích Puppet cá nhân là khả năng nó mang lại cho tôi để định cấu hình một số lượng lớn các nút được kết nối với nhau với bộ cân bằng tải, thiết bị mạng hoặc tường lửa. Con rối thường được sử dụng trong các doanh nghiệp lớn với môi trường phức tạp.
Con rối hoạt động như thế nào
Puppet sử dụng kỹ thuật Idempotency giúp nó quản lý một máy nhất định từ thời điểm tạo và trong suốt vòng đời của nó ngay cả khi thay đổi cấu hình. Ưu điểm cốt lõi của điều này là, máy được cập nhật trong một số năm thay vì được chế tạo nhiều lần từ đầu. Trong trường hợp cập nhật, Puppet kiểm tra trạng thái máy mục tiêu hiện tại và các thay đổi sẽ chỉ được áp dụng khi có thay đổi cụ thể trong cấu hình.
Mức độ lý tưởng
Dòng công việc lý tưởng được hiển thị bên dưới:
Puppet master thu thập thông tin chi tiết về trạng thái hiện tại của máy mục tiêu và so sánh nó với chi tiết cấu hình cấp độ máy, sau đó trả về các chi tiết được gửi đến lớp chuyển đổi.
Lớp chuyển đổi so sánh cấu hình đã truy xuất với các chi tiết cấu hình mới được xác định và sau đó tạo một danh mục được gửi đến các tác nhân Con rối đích, trong trường hợp này là các nút đích mà các thay đổi sẽ được áp dụng.
Các thay đổi cấu hình sau đó được áp dụng cho hệ thống để chuyển nó sang trạng thái mong muốn. Sau khi các thay đổi được thực hiện, tác nhân Con rối sẽ gửi một báo cáo trở lại máy chủ Con rối được ghi lại để xác định trạng thái mới của hệ thống dưới dạng danh mục được cung cấp.
Các thành phần cơ bản của con rối
-
Tài nguyên con rối
Đây là các thành phần mô hình hóa quan trọng của một máy cụ thể mà các mô tả sẽ đưa máy đến trạng thái mong muốn.
-
Nhà cung cấp
Nhà cung cấp là các tài nguyên cụ thể được sử dụng để thêm các gói vào hệ thống, ví dụ:yum và apt-get. Có những nhà cung cấp mặc định nhưng người ta có thể bổ sung thêm khi cần một số gói.
-
Tệp kê khai
Đây là một tập hợp các tài nguyên được định nghĩa trong một hàm hoặc một lớp được kết hợp với nhau để định cấu hình hệ thống đích.
Cấu trúc phải là
resource:{‘module’: attribute => value }
Ví dụ cài đặt mongodb, chúng ta có thể có một tệp kê khai tên là Mongodb.pp với nội dung sau:
package {‘mongodb’: ensure => installed }
-
Mô-đun
Đây là khối xây dựng chính của Puppet, về cơ bản là một tập hợp các tài nguyên, mẫu và tệp. Chúng có thể được phân phối trong bất kỳ hệ điều hành nào do đó có thể được sử dụng nhiều lần với cùng một cấu hình.
-
Mẫu
Mẫu được sử dụng để xác định nội dung tùy chỉnh và đầu vào biến đổi. Chúng sử dụng cú pháp Ruby, tức là nếu bạn muốn xác định một cổng để lắng nghe:
Listen <% [email protected]_number %>
Biến Port_number trong trường hợp này được xác định trong tệp kê khai tham chiếu đến mẫu này.
-
Tệp tĩnh
Đây là các tệp chung có thể được yêu cầu để thực hiện các tác vụ cụ thể. Chúng nằm trong thư mục tệp của bất kỳ mô-đun nào.
Cài đặt con rối
Với mục đích học tập, chúng ta sẽ cài đặt và cấu hình con rối trong một máy ảo mà chúng ta sẽ tạo trong máy cục bộ của mình. Trước hết, bạn sẽ cần cài đặt virtualbox và vagrant. Sau khi cài đặt, hãy mở một thiết bị đầu cuối mới và tạo một thư mục Con rối có thể trên màn hình của bạn và chạy lệnh $ vagrant init. Thao tác này sẽ tạo ra một máy ảo và gắn nhãn nó là không hoạt động. Sau đó, chúng ta có thể đăng nhập vào máy này bằng lệnh $ vagrant ssh.
Nếu bạn nhận được màn hình như hình dưới đây thì máy của bạn đã khởi động và đang chạy.
Nếu không, nếu bạn đang sử dụng máy chủ, bạn có thể bỏ qua bước này và tiếp tục thêm gói rối như bên dưới.
Thêm gói con rối bằng lệnh
$ wget https://apt.puppetlabs.com/puppet5-release-xenial.deb
Và sau đó giải nén gói và cài đặt với
$ sudo dpkg -i puppet5-release-xenial.deb
Chúng tôi cần cập nhật kho lưu trữ của mình để chúng tôi chạy
$ sudo apt-get update
Cài đặt tác nhân bù nhìn bằng cách chạy
$ sudo apt-get install puppet-agent
Sau khi cài đặt xong, chúng tôi có thể xác nhận bằng cách kiểm tra phiên bản. Bạn có thể cần đăng xuất khỏi máy ảo của mình để thêm đường dẫn Con rối vào môi trường, sau đó chạy $ rối --version hoặc nếu bạn chưa đăng xuất, hãy chạy $ / opt / rốilabs / bin / rối --version. Nếu bạn nhận được số phiên bản như 5.5.14 thì quá trình cài đặt đã thành công.
Sau khi cài đặt MongoDB bằng Mongodb.pp mà chúng tôi đã tạo ở trên, chúng tôi có thể chỉ cần viết một số tác vụ để thiết lập sản phẩm cơ sở dữ liệu và cũng có thể thêm người dùng vào db này.
‘Mongodb_database’ được sử dụng để tạo và quản lý cơ sở dữ liệu trong MongoDB
mongodb_database{‘products’:
ensure => present,
tries => 10
}
‘Mongodb_user có thể được sử dụng để tạo và quản lý người dùng trong cơ sở dữ liệu MongoDB.’
Để thêm người dùng vào cơ sở dữ liệu 'sản phẩm'
mongodb_user {userprod:
username => ‘prodUser’,
ensure => present,
password_hash => mongodb_password(‘prodUser’, ‘passProdser’),
database => prodUser,
roles => [‘readWrite’, ‘dbAdmin’],
tries => 10
}
Kết luận
Trong blog này, chúng ta đã tìm hiểu Puppet là gì, những giá trị liên quan đến nó và kiến trúc hoạt động của nó. Puppet phức tạp hơn một chút so với các công cụ quản lý khác (chẳng hạn như Chef và Ansible) nhưng nó có rất nhiều mô-đun có thể được sử dụng để giải quyết các vấn đề xung quanh quản lý cơ sở dữ liệu. Trong phần tiếp theo, chúng ta sẽ thảo luận về cách kết nối các máy từ xa để chúng có thể được cấu hình lại bằng cách sử dụng các tệp kê khai đã xác định.