rhel6.5-saltstack续集(salt-ssh、salt-syndic、事务返回机制)

一.saltstack

        salt是一个异构平台基础设置管理工具(虽然我们通常只用在Linux上),使用轻量级的通讯器ZMQ,用Python写成的批量管理工具,完全开源,遵守Apache2协议。SaltStack 采用 C/S模式,server端就是salt的master,client端就是minion,minion与master之间通过ZeroMQ消息队列通信。通过部署SaltStack环境,我们可以在成千上万台服务器上做到批量执行命令,根据不同业务特性进行配置集中化管理、分发文件、采集服务器数据、操作系统基础及软件包管理等master启动后默认监听4505和4506两个端口。4505:saltstack的消息发布系统,4506:saltstack被控端与服务端通信的端口。

rhel6.5-saltstack续集(salt-ssh、salt-syndic、事务返回机制)

二.saltstack事务返回机制

        当master端把服务下发到minion端执行的时候,会在master端的页面上返回服务的执行结果,这是服务是否成功执行的关键依据,这些信息也能帮助运维人员分析服务的故障原因,因此有必要收集到数据库供分析查询。有以下两种方式:

1.minion把信息反馈到master的数据库,同时也把信息打印到master的界面。(如果minion的数量很大,每个minion都要与master建立连接,这势必给master带来巨大压力)

rhel6.5-saltstack续集(salt-ssh、salt-syndic、事务返回机制)

实验环境:

172.25.78.11
salt-master、mysql
172.25.78.12
salt-minion、mysql-python(命令模块用python编写,需要把python语法转换为sql语句)

(1)把salt的数据导入mysql(官网有)

mysql -p < test.sql

test.sql的内容如下:

rhel6.5-saltstack续集(salt-ssh、salt-syndic、事务返回机制)

rhel6.5-saltstack续集(salt-ssh、salt-syndic、事务返回机制)

rhel6.5-saltstack续集(salt-ssh、salt-syndic、事务返回机制)

(2)对salt用户进行授权,因为minion要以salt用户身份写入数据

rhel6.5-saltstack续集(salt-ssh、salt-syndic、事务返回机制)

(3)在minion端下载mysql服务进行远程登陆master端的mysql,验证授权是否生效

rhel6.5-saltstack续集(salt-ssh、salt-syndic、事务返回机制)

(4)在minion端配置数据库

vim /etc/salt/minion

开启返回机制,返回信息到mysql

指定数据库的IP、授权用户、密码、数据库、端口

rhel6.5-saltstack续集(salt-ssh、salt-syndic、事务返回机制)

(5)修改配置文件后记得重启服务

(6)测试

查看server12的minion能否ping通

rhel6.5-saltstack续集(salt-ssh、salt-syndic、事务返回机制)

信息成功返回mysql

信息内容、命令名称、操作时间、服务执行状态、minion的hostname等

rhel6.5-saltstack续集(salt-ssh、salt-syndic、事务返回机制)

2.minion端把信息发送到master端,由master的缓存机制把数据存入master的数据库

rhel6.5-saltstack续集(salt-ssh、salt-syndic、事务返回机制)

实验环境:

172.25.78.11
salt-master、mysql、mysql-python
172.25.78.12
salt-minion

(1)同样的,在master安装mysql-python插件

rhel6.5-saltstack续集(salt-ssh、salt-syndic、事务返回机制)

(2)关闭minion端的数据库配置,配置master端的数据库配置

开启返回机制,返回信息到mysql,开启master的工作缓存到mysql

rhel6.5-saltstack续集(salt-ssh、salt-syndic、事务返回机制)

(3)测试

salt server12 cmd.run 'ip addr'   ##查看minion的ip信息

查看数据库信息(成功查到cmd.run命令的执行信息)

rhel6.5-saltstack续集(salt-ssh、salt-syndic、事务返回机制)

3.推送服务时从minion返回的推送信息存入数据库,默认保存推送信息在/var/cache/salt有24小时

rhel6.5-saltstack续集(salt-ssh、salt-syndic、事务返回机制)

master缓存的缓存位置

rhel6.5-saltstack续集(salt-ssh、salt-syndic、事务返回机制)

master推送服务后都保留在minion的/var/cache/salt/minion/files/base目录

rhel6.5-saltstack续集(salt-ssh、salt-syndic、事务返回机制)

minion的缓存位置

rhel6.5-saltstack续集(salt-ssh、salt-syndic、事务返回机制)

三.使用python编写自定义模块

1.mkdir /srv/salt/_modules

rhel6.5-saltstack续集(salt-ssh、salt-syndic、事务返回机制)

2.同步模块到minion(python定义函数,master用内置函数名调用此方法)

rhel6.5-saltstack续集(salt-ssh、salt-syndic、事务返回机制)

四.saltstack有很多内置方法

(1)把master的目录发送到minion

rhel6.5-saltstack续集(salt-ssh、salt-syndic、事务返回机制)

(2)查看目录haproxy

rhel6.5-saltstack续集(salt-ssh、salt-syndic、事务返回机制)

(3)把master的文件发送到minion,在这里发送一个脚本文件到minion,脚本可以远程执行

rhel6.5-saltstack续集(salt-ssh、salt-syndic、事务返回机制)

(4)查看文件

rhel6.5-saltstack续集(salt-ssh、salt-syndic、事务返回机制)

五.使用salt-syndic(本来一个master管理多个minion,有了syndic的架构之后,通过master去管理多个syndic,syndic去管理多个minions)

topmaster(也就是master)-->syndics-->minions

1.部署syndic服务(master代理)

实验环境:

172.25.78.11
master+syndic
172.25.78.12
minion
172.25.78.13
topmaster

(1)syndic需要和master同时工作

rhel6.5-saltstack续集(salt-ssh、salt-syndic、事务返回机制)

(2)配置topmaster使其拥有管理低级master的权限

order_masters: True

rhel6.5-saltstack续集(salt-ssh、salt-syndic、事务返回机制)

(3)配置master(指定topmaster,知道去接受那哪台topmaster的调度)

rhel6.5-saltstack续集(salt-ssh、salt-syndic、事务返回机制)

(4)添加syndic节点并重启服务

rhel6.5-saltstack续集(salt-ssh、salt-syndic、事务返回机制)

rhel6.5-saltstack续集(salt-ssh、salt-syndic、事务返回机制)

(5)测试(topmaster不需要编写yaml语言去部署服务,直接就可以用syndic的编写的服务去下发任务,功能还是很强大的,如果有十万台服务部署全放在一台master上面肯定很慢,现在由topmaster去调度,业务量分散处理)

rhel6.5-saltstack续集(salt-ssh、salt-syndic、事务返回机制)

当然也可以推送单个服务

rhel6.5-saltstack续集(salt-ssh、salt-syndic、事务返回机制)

六.使用salt-ssh部署服务

实验环境:

172.25.78.11
master、salt-ssh
172.25.78.12

被管理端(因为这台主机已经不开minion服务

了)

1.关闭minion服务,通过ssh免密登陆minion执行服务

2.安装salt-ssh

rhel6.5-saltstack续集(salt-ssh、salt-syndic、事务返回机制)

3.vim /etc/salt/roster    ##salt-ssh配置文件(通过ssh登陆去执行命令,有点像Ansiable)

指定被管理端、用户密码、用户身份

rhel6.5-saltstack续集(salt-ssh、salt-syndic、事务返回机制)

4.ping测试以及推送服务

rhel6.5-saltstack续集(salt-ssh、salt-syndic、事务返回机制)

Ansiable也是一款管理平台管理工具,服务执行速度可能比saltstack慢几倍,但是服务数据传输更安全