SaltStack - 概述


在本章中,我们将学习 SaltStack 的基础知识。SaltStack 的远程执行功能允许管理员通过灵活的目标系统在各种机器上并行运行命令。Salt 配置管理建立了主从模型,可以快速、轻松、灵活且安全地使基础设施组件符合给定的策略。

什么是 SaltStack?

Salt是一个非常强大的自动化框架。Salt 架构基于远程执行命令的思想。所有网络都是围绕远程执行的某些方面而设计的。这可能像要求远程 Web 服务器显示静态网页一样简单,也可能像使用 shell 会话以交互方式对远程服务器发出命令一样复杂。Salt 是一种更复杂的远程执行类型的示例。

Salt 的设计目的是允许用户明确地定位目标并向多台机器直接发出命令。Salt 是基于 Master 的理念,Master 控制一个或多个Minion。命令通常从 Master 发送到目标 Minion 组,然后 Minion 执行命令中指定的任务,然后将结果数据返回给 Master。主设备和从设备之间的通信通过ZeroMQ 消息总线进行。

SaltStack 模块与支持的 Minion 操作系统进行通信。Salt Master默认在 Linux 上运行,但任何操作系统都可以成为 Minion,目前 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 是一个命令行工具。虽然 SaltStack 配置管理是用 Python 编写的,但它与语言无关并且简单。Salt平台使用推送模型通过SSH协议执行命令。默认配置系统是YAMLJinja templates。Salt 主要与PuppetChefA​​nsible竞争。

与其他竞争工具相比,Salt 提供了许多功能。下面列出了其中一些重要功能。

  • 容错性- Salt Minion 可以通过将 master 配置参数配置为所有可用 master 的 YAML 列表来一次连接到多个 master。任何 master 都可以将命令发送到 Salt 基础设施。

  • 灵活- Salt的整个管理方法非常灵活。它可以遵循最流行的系统管理模型,例如代理和服务器、仅代理、仅服务器或同一环境中的所有上述模型。

  • 可扩展的配置管理- SaltStack 设计为每个 master 处理一万个 minions。

  • 并行执行模型- Salt 可以启用命令以并行方式执行远程系统。

  • Python API - Salt 提供了一个简单的编程接口,它被设计为模块化且易于扩展,以便轻松适应不同的应用程序。

  • 易于设置- Salt易于设置,并提供单一远程执行架构,可以管理任意数量服务器的不同需求。

  • 与语言无关- 盐状态配置文件、模板引擎或文件类型支持任何类型的语言。

SaltStack 的优点

Salt 是一个简单且功能丰富的系统,提供了许多好处,可以总结如下:

  • 健壮- Salt 是强大且健壮的配置管理框架,适用于数以万计的系统。

  • 身份验证- Salt 管理简单的 SSH 密钥对以进行身份​​验证。

  • 安全- Salt 使用加密协议管理安全数据。

  • 快速- Salt 是非常快速、轻量级的通信总线,为远程执行引擎提供基础。

  • 虚拟机自动化- Salt Virt Cloud 控制器功能用于自动化。

  • 基础设施即数据,而不是代码-Salt 提供了简单的部署、模型驱动的配置管理和命令执行框架。

ZeroMQ简介

Salt基于ZeroMQ库,它是一个嵌入式网络库。它是一个轻量级且快速的消息传递库。基本实现是用C/C++实现的,并且可以使用包括Java.Net在内的多种语言的本机实现。

ZeroMQ 是一种无代理的点对点消息处理。ZeroMQ 可以让您轻松设计复杂的通信系统。

ZeroMQ 具有以下五种基本模式 -

  • 同步请求/响应- 用于发送请求并接收每个发送的后续回复。

  • 异步请求/响应- 请求者通过发送请求消息并等待响应消息来发起对话。提供者等待传入的请求消息并回复响应消息。

  • 发布/订阅- 用于将数据从单个进程(例如发布者)分发到多个接收者(例如订阅者)。

  • 推/拉- 用于将数据分发到连接的节点。

  • Exclusive Pair - 用于将两个对等体连接在一起,形成一对。

ZeroMQ 是一种高度灵活的网络工具,用于在集群、云和其他多系统环境之间交换消息。ZeroMQ 是SaltStack 中提供的默认传输库