(一) SaltStack 概述&部署

逸兴
逸兴
逸兴
57
文章
25
评论
2019-10-2214:17:131 2480字阅读8分16秒
摘要

提到SaltStack 想必都不陌生,SaltStack 是一个服务器基础架构的集中化管理平台,在生产中主要是用来做一些批量的配置管理,用来保持环境的一致,还用来结合jenkins 做构建自动化测试,部署等。saltstack本身是一个配置管理工具,使用起来可以很灵活。

写在前面:

与ansible相比 ,都是python写的,但是它更快 ,python使用ssh进行管理客户端,ssh本身就是有开销的,而saltstack使用轻量级的ZeroMQ进行通信,处理速度更快;同样缺点也很明显, “需要安装客户端”。

其实salt 也提供了salt-ssh 用来避开“安装客户端”,但是这样又回到那个问题“速度会慢”,试想下几千上万台服务器时,如果做一个批量配置,每台服务器ssh连过去,虽然是salt 自动连接,也是件不怎么愉快的事情。

学习slat 不能仅仅把它当作一个“批量处理工具”,而是要把它当作一个“配置管理工具”对待。这篇文章是很久之前写的“slat 学习笔记”,今天发出来,回顾下学习历程。

第一章 SaltStack 的基本功能

  • 远程执行
    • 多台机器上,同时执行一条命令
  • 配置管理
    • 服务器配管理
      • 安装,配置,启动
    • 代码的配置管理
    • 状态管理(哪些服务是否允许,文件,,,服务器的状态)
      • 例如:创建目录,目录已存在则创建失败,目录存在则是一种状态
  • 云管理
    • 管理云(openstack,AWS,阿里云等),一条命令创建一台虚拟机
  • 事件驱动
    • 就是故障自愈,通过事件的概念去触发一些自动处理。
    • 例如:8080 端口停了,这是一个事件。这个会发送到salt的事件总线,然后触发修复,比如 “重启Tomcat”
    • slat能够自动化的捕捉事件,针对事件预定好规则,然后去触发这个规则。

第二章 salt的三种运行方式

2.1 Local 本地运行

本地运行就是本地运行,就一台机器,自己管理自己。

2.2 Master/Minion

一台服务器做管理节点就是Master,其他被管理节点就是Minion(需要安装agent),其实大多都是这种模式,稳定高效。

2.3 salt ssh

这就是前面说的,不用安装客户端,和ansible一个套路用ssh远程执行命令,返回结果。不过比较慢,会过于依赖ssh。

第三章 Salt server-client 模式部署

3.1 Salt 安装

安装的话,直接yum装就可以了。以前还热衷于“编译”,然后各种定制,后来想想其实对我的环境来说其实用处不大。

1.安装salt 官方源

cat > /etc/yum.repos.d/saltstack.repo << EOF
[saltstack]
name=SaltStack repo for RHEL/CentOS \$releasever
baseurl=https://repo.saltstack.com/yum/redhat/\$releasever/\$basearch/latest
enabled=1
gpgcheck=1
gpgkey=https://repo.saltstack.com/yum/redhat/\$releasever/\$basearch/latest/SALTSTACK-GPG-KEY.pub
EOF

2. 服务端节点上安装 master ,控制节点安装minion

yum install -y salt-master
yum install -y salt-minion
#启动master
systemctl start salt-master.service 
#salt 安装目录

 

 

 

 

 

 

 

#修改minmion端配置文件

1.设置master,遵循这种格式,不能有tab键

2.配置id
salt中使用id 来标识一台minion,如果不配置默认使用主机名

#启动minion
systemctl start salt-minion.service

3.2 Salt 目录结构介绍

# salt minion 目录结构

 

3.3 Salt 认证流程

minion 启动时,minion 会先将自己的公钥发送给master,master将其存放在,下图:

# 这里需要注意,如果要修改minion的 id,一个要删除这里的对应的公钥,然后minion 端还有一个已id文件,那个文件也要同时删除,后面有介绍。
 
通过salt-key 来同意这些minion,同意后master就可以管理这些minion
#查看有哪些minion

#salt-key -A  同意所有的minion

#此时 master 可以和minion通信

 

 

 

salt: salt命令

‘*’: 表示对所有minion

        这里*表示所有minion,单引号只是转义,也可以使用其他转义字符

注意:

需要注意的是这里的*或id的作用其实是所有minion都会收到消息,只有指定的Minion才会执行并返回消息。

例如:

salt ‘web01’ test.ping

所有的minion都会收到test.ping,但是只有web01才会返回结果。

原因:

这里涉及到目标选择,如果只是向指定的id发送消息的话 目标的选择需要在Master端进行,但是Master端的目标信息有限(比如要将消息发送给OS Centos7的minion),Master端并没有记录哪个ID的OS是Centos7,

salt的目标选择条件还可以是动态的条件(比如哪个ID的key值符合,则执行)。

虽然向所有的minion发送消息会占用一部分的资源,但是这样却可以对目标进行精确的选择。

 

test.ping:相当于test模块的ping方法,不是那种传统意义上的 ICMP ping

也可以直接指定一个id

test.ping 和ping 不同

ping命令是通过ICMP协议进行检测,而test.ping 则是master向minion发送消息,minion收到后返回一个True。

3.4 Salt-- Masetr 于 Minion 的通信

minion本身并没有监听任何的端口。
master和minion则是通过zeromq(消息队列-发布与订阅)进行通讯。minion都连接了master的4505端口

Master的4505端口用于向minion发送消息,而Master接收Minion的消息则是使用的4506端口。

 

3.5 Salt 远程执行

3.5.1 远程执行模块 cmd.run 

cmd.run 是命令执行模块

Master向所有的Minion发送消息,Minion收到消息判断自己的 id 是否是web01 如果是则执行‘w’ 并返回结果。




https://www.hugbg.com/archives/1339.html
逸兴
  • 本文由 发表于 2019-10-2214:17:13
  • 除非特殊声明,本站文章均为原创,转载请务必保留本文链接
自动更新SSL证书 默认分类

自动更新SSL证书

现在免费的SSL证书只有三个月有效期,有一个博客和图床都用的ssl证书到期需要重新签发,挺麻烦的。原本想着写个脚本通过阿里云的 OpenAPI 进行证书的签发和部署,但是偶然发现了 ACME 这个项目...
推导式、生成式与生成器 基础语法

推导式、生成式与生成器

推导式 概述 Python中的推导式是一种快速、简洁的数据结构创建方式,不需要手动创建数据结构中的每一个元素,类似于给出一个规律,python会根据这个规律自动填充数据结构。支持有列表推导式、字典推导...
CVE-2024-38077 Windows RDL漏洞检测修复方法(末尾) 默认分类

CVE-2024-38077 Windows RDL漏洞检测修复方法(末尾)

一、漏洞详情 Windows Server是由微软开发的操作系统系列,专为服务器环境设计,用于管理网络、数据存储和应用程序的运行。它为企业和组织提供了稳定、可靠的服务器平台,支持各种规模的网络基础设施...
Django DRF禁用URL末尾斜杆(:) 点点滴滴

Django DRF禁用URL末尾斜杆(:)

一、关于URL末尾斜杆 比如http://127.0.0.1:8000/api/v1/register 和 http://127.0.0.1:8000/api/v1/register/, 这两个是同一...
匿名

发表评论

匿名网友 填写信息

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

评论:1   其中:访客  1   博主  0
    • 历史创造者 历史创造者

      与其想着怎么美丽地牺牲,倒不如想着怎么漂亮地活到最后一刻。 —《银魂》