在一套完整的CMDB系统中,需要能对整个服务器集群进行统一的管理。在RDS中,我们选用了SaltStack来管理所有的数据库服务器和上面的实例
一SaltStack简介
SaltStack是一款Python编写的,结合了消息队列服务ZeroMQ,用于大规模批量管理服务器的工具,支持在管理端主节点(Master)执行命令来远程配置复数客户端从节点(Minion),包括执行特定命令、传输文件、安装服务、配置定时任务等常用操作。
一个完整的通讯流程包括如下几步:
1.Master执行salt命令,命令通过salt.client.LocalClient.cmd_cli方法发送到Master,Master生成一个jid,并根据jid等待获取执行结果。
2.Master将salt命令通过ret_port端口,发送给客户端Minion。
3.Minion收到消息后发起一个线程执行salt命令,调用Minion._return_pub方法将执行结果返回给Master。
4.Master接收Minion返回的结果,并调用 Master.handle_aes将结果写入文件中。
5.salt.client.LocalClient.cmd_cli通过轮询获取到Job执行结果,并将结果输出到终端。
一次salt请求执行完毕,下面我们安装并部署服务。
二安装部署
我们选择两台主机:Master:10.0.0.1,Slave:10.0.0.2(Minion1)来演示部署SaltStack服务的流程。
在Master节点部署服务
[root@10.0.0.1 ~]# yum install –y epel-release
[root@10.0.0.1 ~]# yum install –y salt-master salt-minion
[root@10.0.0.1 ~]# vi /etc/salt/master
cachedir: /var/cache/salt
keep_jobs: 24
file_roots:
base:
- /srv/salt/
dev:
- /srv/salt/dev/services
- /srv/salt/dev/states
prod:
- /srv/salt/prod/services
- /srv/salt/prod/statesq
publish_port: 4505
ret_port: 4506
/etc/salt/master是salt-master的默认配置文件,每次修改后都需要重启该服务。在这里我们主要关注如上几个参数,并可根据需求进行修改:
1.cachedir:放置salt命令执行的缓存信息,大量的调用会使该目录存在过多缓存,可以更换存放路径
2.keep_jobs:cachedir中保持缓存信息的时间,默认为24小时
3.file_roots:salt执行文件时默认的脚本所在地址,后文涉及到的sls文件也在该目录中
4.publish_port,ret_port:代表salt的消息发布系统端口和节点间通信端口,默认为4505,4506,请避免这两个端口被占用。
配置完成后启动salt-master服务
[root@10.0.0.1 ~]# service salt-master start
[root@10.0.0.1 ~]# service salt-master status
● salt-master.service - The Salt Master Server
Loaded: loaded (/usr/lib/systemd/system/salt-master.service; enabled; vendor preset: disabled)
Active: active (running) since Mon 2018-07-16 19:30:59 CST; 3 weeks 6 days ago
在Minion节点部署服务
[root@10.0.0.2 ~]# yum install –y salt-minion
[root@10.0.0.2 ~]# vi /etc/salt/minion
master: 10.0.0.1
id: Minion1
/etc/salt/minion是salt-minion的默认配置文件,需要修改两个参数:
1.master:可以配置为Master主机的IP或是hostname。
2.id:Minion的标识,Master通过Minion的id发送命令,请根据业务关系进行配置。
启动salt-minion服务
[root@10.0.0.2 ~]# service salt-minion start
[root@10.0.0.2 ~]# ser