SaltStack – 概述
SaltStack – 概述
在本章中,我们将学习 SaltStack 的基础知识。SaltStack 的远程执行功能允许管理员在各种机器上并行运行命令以及灵活的目标系统。Salt 配置管理建立了一个 master-minion 模型,以快速、轻松、灵活和安全地使基础设施组件符合给定的策略。
什么是盐栈?
Salt 是一个非常强大的自动化框架。Salt 架构基于远程执行命令的思想。所有网络都是围绕远程执行的某些方面设计的。这可以像要求远程 Web 服务器显示静态网页一样简单,也可以像使用 shell 会话以交互方式向远程服务器发出命令一样复杂。Salt 是一种更复杂的远程执行类型的示例。
Salt 旨在允许用户明确地直接针对多台机器发出命令。Salt 是基于控制一个或多个Minion的 Master 的想法。命令通常从 Master 发送到目标组 Minion,然后执行命令中指定的任务,然后将结果数据返回给 Master。master 和 minions 之间的通信发生在ZeroMQ 消息总线上。
SaltStack 模块与支持的 minion 操作系统通信。该盐大师在Linux上默认运行,但任何操作系统可以是一个奴才,和目前的Windows,VMware vSphere和BSD Unix的变种很好的支持。Salt Master 和 Minions 使用密钥进行通信。当 Minion 首次连接到 master 时,它会自动将密钥存储在 master 上。SaltStack 还提供Salt SSH,它提供“无代理”系统管理。
需要 SaltStack
SaltStack 是为速度和规模而构建的。这就是为什么它被用于管理具有数万台服务器的大型基础设施,包括 LinkedIn、WikiMedia 和 Google。
想象一下,您有多个服务器并且想要对这些服务器执行操作。您需要登录到每一个并一次对每一个做这些事情,然后您可能想要做一些复杂的事情,例如安装软件,然后根据某些特定标准配置该软件。
让我们假设您有 10 台甚至 100 台服务器。想象一下,一次登录每个服务器,在这 100 台机器上发出相同的命令,然后在所有 100 台机器上编辑配置文件成为一项非常乏味的任务。为了克服这些问题,您希望一次更新所有服务器,只需输入一个命令即可。SaltStack 为您提供了所有此类问题的解决方案。
SaltStack的特点
SaltStack 是一个开源配置管理软件和远程执行引擎。Salt 是一个命令行工具。虽然用 Python 编写,但 SaltStack 配置管理与语言无关且简单。Salt 平台使用推送模型通过 SSH 协议执行命令。默认配置系统是YAML和Jinja 模板。Salt 主要与Puppet、Chef和Ansible竞争。
与其他竞争工具相比,Salt 提供了许多功能。下面列出了其中一些重要功能。
-
容错– Salt Minion 可以通过将 master 配置参数配置为所有可用 master 的 YAML 列表来一次连接到多个 master。任何 master 都可以将命令定向到 Salt 基础架构。
-
灵活– Salt 的整个管理方法非常灵活。它可以在同一环境中实施以遵循最流行的系统管理模型,例如代理和服务器、仅代理、仅服务器或以上所有模型。
-
可扩展的配置管理– SaltStack 旨在处理每个 master 的一万个 minion。
-
并行执行模型– Salt 可以启用命令以并行方式执行远程系统。
-
Python API – Salt 提供了一个简单的编程接口,它被设计为模块化且易于扩展,使其易于模塑到不同的应用程序中。
-
易于设置– Salt 易于设置并提供单一的远程执行架构,可以管理任意数量服务器的不同需求。
-
Language Agnostic – Salt 状态配置文件、模板引擎或文件类型支持任何类型的语言。
SaltStack的好处
简单且功能丰富的系统,Salt 提供了许多好处,它们可以总结如下 –
-
Robust – Salt 是功能强大且健壮的配置管理框架,适用于数以万计的系统。
-
Authentication – Salt 管理用于身份验证的简单 SSH 密钥对。
-
安全– Salt 使用加密协议管理安全数据。
-
Fast – Salt 是非常快速、轻量级的通信总线,为远程执行引擎提供基础。
-
虚拟机自动化– Salt Virt 云控制器功能用于自动化。
-
基础设施即数据,而不是代码– Salt 提供了一个简单的部署、模型驱动的配置管理和命令执行框架。
ZeroMQ 简介
Salt基于ZeroMQ库,它是一个可嵌入的网络库。它是轻量级且快速的消息传递库。基本实现是在C/C++ 中,并且可以使用包括Java和.Net在内的多种语言的本机实现。
ZeroMQ 是一种无代理的对等消息处理。ZeroMQ 允许您轻松设计复杂的通信系统。
ZeroMQ 带有以下五种基本模式 –
-
同步请求/响应– 用于发送请求并接收每个发送的后续回复。
-
异步请求/响应– 请求者通过发送请求消息并等待响应消息来启动对话。Provider 等待传入的 Request 消息并回复 Response 消息。
-
发布/订阅– 用于将数据从单个进程(例如发布者)分发到多个接收者(例如订阅者)。
-
推/拉– 用于将数据分发到连接的节点。
-
Exclusive Pair – 用于将两个对等点连接在一起,形成一对。
ZeroMQ 是一种高度灵活的网络工具,用于在集群、云和其他多系统环境之间交换消息。ZeroMQ 是SaltStack 中提供的默认传输库。