SaltStack - Tổng quan
Trong chương này, chúng ta sẽ tìm hiểu những kiến thức cơ bản về SaltStack. Khả năng thực thi từ xa của SaltStack cho phép quản trị viên chạy các lệnh trên nhiều máy khác nhau song song với một hệ thống nhắm mục tiêu linh hoạt. Quản lý cấu hình Salt thiết lập một mô hình tổng thể để nhanh chóng, rất dễ dàng, linh hoạt và an toàn đưa các thành phần cơ sở hạ tầng phù hợp với một chính sách nhất định.
SaltStack là gì?
Salt là một khuôn khổ tự động hóa rất mạnh mẽ. Kiến trúc Salt dựa trên ý tưởng thực thi các lệnh từ xa. Tất cả mạng được thiết kế xung quanh một số khía cạnh của thực thi từ xa. Điều này có thể đơn giản như hỏi mộtRemote Web Serverđể hiển thị một trang Web tĩnh, hoặc phức tạp như sử dụng phiên trình bao để đưa ra các lệnh tương tác với máy chủ từ xa. Salt là một ví dụ về một trong những kiểu thực thi từ xa phức tạp hơn.
Salt được thiết kế để cho phép người dùng nhắm mục tiêu rõ ràng và ra lệnh trực tiếp cho nhiều máy. Salt dựa trên ý tưởng về một Master, điều khiển một hoặc nhiềuMinions. Các lệnh thường được đưa ra từ Master tới một nhóm Minion mục tiêu, nhóm này sau đó thực thi các nhiệm vụ được chỉ định trong các lệnh và sau đó trả lại dữ liệu kết quả cho Master. Giao tiếp giữa chủ và tay sai xảy ra quaZeroMQ message bus.
Mô-đun SaltStack giao tiếp với hệ điều hành minion được hỗ trợ. CácSalt Masterchạy trên Linux theo mặc định, nhưng bất kỳ hệ điều hành nào cũng có thể là tay sai và hiện tại các biến thể Windows, VMware vSphere và BSD Unix đều được hỗ trợ tốt. Salt Master và các tay sai sử dụng chìa khóa để giao tiếp. Khi một minion kết nối với một chủ lần đầu tiên, nó sẽ tự động lưu trữ các khóa trên chủ. SaltStack cũng cung cấpSalt SSH, cung cấp quản lý hệ thống "ít tác nhân hơn".
Cần cho SaltStack
SaltStack được xây dựng cho tốc độ và quy mô. Đây là lý do tại sao nó được sử dụng để quản lý các cơ sở hạ tầng lớn với hàng chục nghìn máy chủ tại LinkedIn, WikiMedia và Google.
Hãy tưởng tượng rằng bạn có nhiều máy chủ và muốn thực hiện mọi việc với các máy chủ đó. Bạn sẽ cần đăng nhập vào từng cái và làm những việc đó lần lượt trên từng cái và sau đó bạn có thể muốn thực hiện những việc phức tạp như cài đặt phần mềm và sau đó định cấu hình phần mềm đó dựa trên một số tiêu chí cụ thể.
Giả sử bạn có mười hoặc thậm chí có thể là 100 máy chủ. Hãy tưởng tượng đăng nhập lần lượt vào từng máy chủ riêng lẻ, đưa ra các lệnh giống nhau trên 100 máy đó và sau đó chỉnh sửa các tệp cấu hình trên cả 100 máy sẽ trở thành công việc rất tẻ nhạt. Để khắc phục những vấn đề đó, bạn muốn cập nhật tất cả các máy chủ của mình cùng một lúc, chỉ bằng cách gõ một lệnh duy nhất. SaltStack cung cấp cho bạn chính xác giải pháp cho tất cả các vấn đề như vậy.
Các tính năng của SaltStack
SaltStack là một phần mềm quản lý cấu hình mã nguồn mở và công cụ thực thi từ xa. Salt là một công cụ dòng lệnh. Mặc dù được viết bằng Python, nhưng quản lý cấu hình SaltStack là ngôn ngữ bất khả tri và đơn giản. Nền tảng Salt sử dụng mô hình đẩy để thực hiện các lệnh thông qua giao thức SSH. Hệ thống cấu hình mặc định làYAML và Jinja templates. Muối chủ yếu cạnh tranh vớiPuppet, Chef và Ansible.
Salt cung cấp nhiều tính năng khi so sánh với các công cụ cạnh tranh khác. Một số tính năng quan trọng được liệt kê dưới đây.
Fault tolerance- Salt minion có thể kết nối với nhiều master cùng một lúc bằng cách định cấu hình tham số cấu hình master dưới dạng danh sách YAML của tất cả các master có sẵn. Bất kỳ bậc thầy nào cũng có thể hướng các lệnh đến cơ sở hạ tầng Salt.
Flexible- Toàn bộ phương thức quản lý của Salt rất linh hoạt. Nó có thể được thực hiện để tuân theo các mô hình quản lý hệ thống phổ biến nhất như Agent và Server, Agent-only, Server-only hoặc tất cả các mô hình trên trong cùng một môi trường.
Scalable Configuration Management - SaltStack được thiết kế để xử lý mười nghìn tay sai trên mỗi chủ.
Parallel Execution model - Salt có thể kích hoạt các lệnh để thực thi hệ thống từ xa một cách song song.
Python API - Salt cung cấp một giao diện lập trình đơn giản và nó được thiết kế theo kiểu mô-đun và dễ dàng mở rộng, để dễ dàng tạo ra các ứng dụng đa dạng.
Easy to Setup - Salt dễ thiết lập và cung cấp một kiến trúc thực thi từ xa duy nhất có thể quản lý các yêu cầu đa dạng của bất kỳ số lượng máy chủ nào.
Language Agnostic - Các tệp cấu hình trạng thái muối, công cụ tạo khuôn mẫu hoặc loại tệp hỗ trợ bất kỳ loại ngôn ngữ nào.
Lợi ích của SaltStack
Đơn giản cũng như một hệ thống giàu tính năng, Salt cung cấp nhiều lợi ích và chúng có thể được tóm tắt như sau:
Robust - Salt là khung quản lý cấu hình mạnh mẽ và mạnh mẽ và hoạt động trên hàng chục nghìn hệ thống.
Authentication - Salt quản lý các cặp khóa SSH đơn giản để xác thực.
Secure - Salt quản lý dữ liệu an toàn bằng giao thức được mã hóa.
Fast - Salt là bus truyền thông rất nhanh, nhẹ để cung cấp nền tảng cho một công cụ thực thi từ xa.
Virtual Machine Automation - Khả năng của Bộ điều khiển đám mây Salt Virt được sử dụng để tự động hóa.
Infrastructure as data, not code - Salt cung cấp một khung triển khai đơn giản, quản lý cấu hình theo mô hình và thực thi lệnh.
Giới thiệu về ZeroMQ
Salt dựa trên ZeroMQthư viện và nó là một thư viện mạng có thể nhúng. Nó nhẹ và một thư viện nhắn tin nhanh. Việc triển khai cơ bản là trongC/C++ và triển khai bản địa cho một số ngôn ngữ bao gồm Java và .Net có sẵn.
ZeroMQ là một xử lý tin nhắn ngang hàng không có người môi giới. ZeroMQ cho phép bạn thiết kế một hệ thống liên lạc phức tạp một cách dễ dàng.
ZeroMQ đi kèm với năm mẫu cơ bản sau:
Synchronous Request/Response - Được sử dụng để gửi yêu cầu và nhận trả lời tiếp theo cho mỗi yêu cầu được gửi.
Asynchronous Request/Response- Người yêu cầu bắt đầu cuộc trò chuyện bằng cách gửi tin nhắn Yêu cầu và chờ tin nhắn Phản hồi. Nhà cung cấp đợi các tin nhắn Yêu cầu đến và trả lời bằng các tin nhắn Phản hồi.
Publish/Subscribe - Được sử dụng để phân phối dữ liệu từ một quy trình (ví dụ nhà xuất bản) cho nhiều người nhận (ví dụ người đăng ký).
Push/Pull - Được sử dụng để phân phối dữ liệu đến các nút được kết nối.
Exclusive Pair - Được sử dụng để kết nối hai đồng nghiệp với nhau, tạo thành một cặp.
ZeroMQ là một công cụ mạng rất linh hoạt để trao đổi tin nhắn giữa các cụm, đám mây và các môi trường đa hệ thống khác. ZeroMQ làdefault transport library được trình bày trong SaltStack.