将推送操作返回给数据库
在master端执行完一个job后,结果通过每个minion端返回给master端,这些结果被保存在默认的Job缓存中,除了存放在缓存中,salt还提供了两个额外的机制将结果可以保存在数据库,或本地的日志中
1、External Job Cache
缺点:1.每个minion节点不仅要将数据串送给master端,还要将数据存储在数据库中,压力过大
2.要求每个minion节点到必须进行returner的配置
master端:
[root@server1 jobs]# yum install -y mysql-server
[root@server1 jobs]# /etc/init.d/mysqld start
[root@server1 jobs]# mysql < test.sql 导入从官网下载的数据库
ERROR 1061 (42000) at line 17: Duplicate key name 'jid'
[root@server1 jobs]# vim test.sql
[root@server1 jobs]# mysql < test.sql
ERROR 1007 (HY000) at line 1: Can't create database 'salt'; database exists
在导入数据库时,会出现两个报错,我们需要注释掉前3行和第17行
mysql
minion端:
yum install MySQL-python.x86_64 -y
vim /etc/salt/minion
/etc/init.d/salt-minion restart
测试:
二、在该架构中,minion像往常一样发送数据到master端的job cache中,然后master端使用returnner机制将返回的数据存在在数据库中
yum install -y MySQL-python.x86_64
vim /etc/salt/master
/etc/init.d/salt-minion restart
mysql
自定义模块
salt-syndic 模块
syndic的意思为理事,其实如果叫salt-proxy的话那就更好理解了,它就是一层代理,如同zabbix proxy功能一样,隔离master与minion,使其不需要通讯,只需要与syndic都通讯就可以,这样的话就可以在跨机房的时候将架构清晰部署了
1.在master端去掉server4这个节点
2.让server4充当top-master
yum install salt-master
vim /etc/salt/master
/etc/init.d/salt-master start
在server1上(master):
yum install -y salt-syndic
vim /etc/salt/master
/etc/init.d/salt-syndic start
/etc/init.d/salt-master restart
salt-ssh连接操作
salt-ssh 是 0.17.0 新出现的一个功能,它是依赖 ssh 来进行远程命令执行的工具,好处就是不需要在客户端安装 minion,也不需要安装 master(直接安装 salt-ssh 这个包即可),有些时候你还真的需要 salt-ssh(例如:条件不允许安装 minion、不用长期管理某台 minion) 最重要的是 salt-ssh 并不只是单纯的 ssh 工具,它支持 salt 大部分的功能,如 grains、modules、state 等,需要注意的是,salt-ssh 并没有继承原来的通讯架构 (ZeroMQ),也就是说它的执行是串行模式,速度比传统的master-minion要慢.
server1:
yum install salt-ssh -y
vim /etc/salt/roster
host: # 远端主机的ip地址或者dns域名
user: # 登录的用户
passwd: # 用户密码,如果不使用此选项,则默认使用秘钥方式
vim /etc/salt/master 将之前的数据库模块注释掉
测试:
关闭server3的minion,通过ssh连接,成功
salt-api调用
yum install salt-api
vim auth.conf
vim salt-api.py
chmod +x salt-api.py
./salt-api.py
关闭server2的nginx服务,调用脚本,在server2中查看服务已开启