Salt介绍
Salt是一个基础平台管理工具
Salt是一个配置管理系统,能够维护预定义状态的远程节点
Salt是一个分布式远程执行系统,用来在远程节点上执行命令和查询数据
Salt核心功能
使命令发送到远程系统是并行的而不是串行的
使用安全加密的协议
使用最小最快的网络载荷
提供简单的编程接口
Salt有点
Saltstack是用python语音编写 相当于设备是轻量级别的
Saltstack通讯采用ZEROMQ实现使得它很快速
Saltstack是开源的 通过python可以自己写模块
Salt端口说明
Salt-master启动时会启动两个端口
4505:为salt的消息发布专用端口
4506:为客户端与服务端通信的端口
由于SaltStack是一种基于C/S架构的服务模式,可以简单地理解为如果我们想使用SaltStack就需要在现有的环境下引入与维护一套C/S架构。在SaltStack架构中服务器端叫作Master,客户端叫作Minion,我们理解的传统C/S架构中,客户端发送请求给服务器端,服务器端接收到请求并且处理完成后再返回给户端。在SaltStack架构中不仅有传统的C/S架构服务模式,而且有消息队列中的发布与订阅(pub/sub)模式。这使得SaltStack应用场景更加丰富。目前在实际环境中一般使用SaltStack的C/S架构进行配置管理。
在Master和Minion端都是以守护进程的模式运行,一直监听配置文件里面定义的ret_port(接受
minion请求)和publish_port(发布消息)的端口。当Minion运行时会自动连接到配置文件里面定义的
Master地址ret_port端口进行连接认证。默认客户端请求id是socket.getfqdn()取到的值,也可以在
Minion启动之前修改Minion的id值。
参考的技术网站
salt功能模块
- 远程执行
- 配置管理
- 云管理
环境说明
角色 主机名 IP
salt-server hzbj-salt-020 192.168.56.20
tomcat-A hzbj-tomcat-021 192.168.56.21
tomcat-B hzbj-tomcat-022 192.168.56.22
一 安装EPEL
由于目前RHEL官网yum源没有Saltstack的安装包,因此先安装EPEL作为部署Saltstack的默认源
[root@hzbj-salt-020 ~]# rpm -Uvh http://mirrors.yun-idc.com/epel/6Server/x86_64/epel-release-6-8.noarch.rpm
二 安装saltstack主服务器
[root@hzbj-salt-020 ~]# yum -y install salt-master
[root@hzbj-salt-020 ~]# chkconfig salt-master on
[root@hzbj-salt-020 ~]# service salt-master start
三 被控制端安装(minion端)
[root@hzbj-tomcat-021 ~]# yum -y install salt-minion
[root@hzbj-tomcat-021 ~]# chkconfig salt-minion on
[root@hzbj-tomcat-021 ~]# service salt-minion start
四 saltstack防火墙配置
如果服务器开启了防火墙 需要开启端口 在主控端添加TCP 4505 4506的规则,而在被控端无需配置防火墙,原理是
被控端直接与主控端的zeromq建立长链接,接收广播到的任务信息 并执行,具体操作是添加两条iptables规则
[root@hzbj-salt-020 ~]# iptables -I INPUT -m state --state new -m tcp --dport 4505 -j ACCEPT
[root@hzbj-salt-020 ~]# iptables -I INPUT -m state --state new -m tcp --dport 4506 -j ACCEPT
五 saltstack配置及安装校验
Saltstack分两种角色,一种为master(主控端),另一种是minion(被控端),安装完毕后需要对两种
角色的配置文件进行修改,下面具体说明。
a) master主控制端配置
更新主控制端关键项配置:
[root@hzbj-salt-020 ~]# vim /etc/salt/master
#绑定Master通信IP
interface: 192.168.56.20
#自动认证 你也可以选择不用开启
auto_accept: True
#指定saltstack文件根目录位置
file_roots:
base:
- /srv/salt
b)重启saltstack 服务器
[root@hzbj-salt-020 ~]# service salt-master restart
c)minion被控端配置
#/etc/salt/minion
#指定master主机IP地址
master: 192.168.56.20
#修改被控端主句识别id,建议使用操作系统主机名来配置
id: hzbj-tomcat-021
其它主机也是这样配置
d)重启minion端
service salt-minion restart
e)校验安装结果
通过test模块的ping方法,可以确认指定被控端设备与主控端是否建立信任关系及连通性是否正常,探测所有被控端采用‘*’来代替
[root@hzbj-salt-020 ~]# salt '*' test.ping
hzbj-tomcat-021:
True
hzbj-tomcat-022:
True
六 master和minion认证过程
(1)、minion在第一次启动时,会在/etc/salt/pki/minion/(该路径在/etc/salt/minion里面设置)下自动生成minion.pem(private
key)和 minion.pub(public key),
然后将 minion.pub发送给master。
(2)、master在接收到minion的public key后,通过salt-key命令accept minion public
key,这样在master的/etc/salt/pki/master/minions下的将会存放以minion id
命名的 public key,然后master就能对minion发送指令了。
七 Master与Minion的连接
(1)、SaltStack
master启动后默认监听4505和4506两个端口。4505(publish_port)为saltstack的消息发布系统,4506(ret_port)为saltstack客户端与服务端通信
的端口。如果使用lsof 查看4505端口,会发现所有的minion在4505端口持续保持在ESTABLISHED状态。
提示 当/etc/salt/master没有配置auto_accept: True时,需要通过salt-key命令来进行证书认证操作,具体操心如下:
- salt-key -L, 显示已经或未认证的被控端id,Accepted Keys为已经认证清单,Unaccepted Keys为未认证清单;
- salt-key -D,删除所有认证主机ID证书
- salt-key -d id,删除单个id证书
- salt-key -A,接受所有id证书请求
- salt-key -a id,接受单个id证书请求