每台minion跟存储服务器连接后发送返回数据。在大规模的Minion环境下并不适合企业级应用。也有网友通过event事件实现Master端直接Return到存储服务器。参考地址为:http://pengyao.org/salt-stack_master_retuner_over_event_system.html
使用redis 存储
修改minion的/etc/salt/minion配置文件
redis.db: '0' #redis数据库
redis.host: 'vps.shencan.net' #redis主机(ip地址和域名都行)
redis.port: 6379 #redis端口
minion按照redis客户端 pip install redis
python -c 'import redis; print redis.VERSION'
salt 'Minion' cmd.run 'hostname' --return redis
mysql存储
/usr/lib/python2.6/site-packages/salt/returners/
具体的配置 cat mysql.py
vim /etc/salt/minion(冒号后有空格)
mysql.host: '10.255.254.221'
mysql.user: 'salt'
mysql.pass: '123'
mysql.db: 'salt'
mysql.port: 3306
在10.255.254.221这台mysql服务器上
启动mysql服务
设置mysql用户,salt,密码,123
GRANT ALL PRIVILEGES ON *.* TO 'salt'@'%' IDENTIFIED BY ‘123’;
把以下sql语句保存到/tmp/salt.sql文件中,执行mysql -u root < /tmp/salt.sql
(创建一个salt库,然后在salt库里面创建两个表jids,salt_returns)
GRANT ALL PRIVILEGES ON *.* TO 'salt'@'%' IDENTIFIED BY ‘123’;
CREATE DATABASE `salt`
DEFAULT CHARACTER SET utf8
DEFAULT COLLATE utf8_general_ci;
USE `salt`;
DROP TABLE IF EXISTS `jids`;
CREATE TABLE `jids` (
`jid` varchar(255) NOT NULL,
`load` mediumtext NOT NULL,
UNIQUE KEY `jid` (`jid`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
DROP TABLE IF EXISTS `salt_returns`;
CREATE TABLE `salt_returns` (
`fun` varchar(50) NOT NULL,
`jid` varchar(255) NOT NULL,
`return` mediumtext NOT NULL,
`id` varchar(255) NOT NULL,
`success` varchar(10) NOT NULL,
`full_ret` mediumtext NOT NULL,
`alter_time` TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
KEY `id` (`id`),
KEY `jid` (`jid`),
KEY `fun` (`fun`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
DROP TABLE IF EXISTS `salt_events`;
CREATE TABLE `salt_events` (
`id` BIGINT NOT NULL AUTO_INCREMENT,
`tag` varchar(255) NOT NULL,
`data` varchar(1024) NOT NULL,
`alter_time` TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
`master_id` varchar(255) NOT NULL,
PRIMARY KEY (`id`),
KEY `tag` (`tag`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
保证你的python能够操作mysql数据库
yum install MySQL-python -y
使用mysql作为returner,将结果放入mysql
[root@node1 ~]# salt 'node2' test.ping --return mysql
node2:
True
----------------------------------------------------------------
可以通过salt的schedule去收集minion上的信息。
schedule:
uptime:
function: status.uptime
seconds: 60
returner: mysql
meminfo:
function: status.meminfo
minutes: 5
returner: mysql