saltstack:服务器基础架构集中化管理平台,有配置管理、远程执行、监控等功能,基于Python语言开发,结合轻量级消息队列(ZeroMQ)与Python第三方模块(Pyzmq、PyCrypto、Pyjinjia2、python-msgpack和PyYAML等)构建,
优点(1.部署简单便捷;2支持的系统多样;3配置简单,功能强,扩展性好;4基于主从,用证书建立连接,安全性高;5支持API及自定义模块)
认证minion在启动时,会在/etc/salt/pki/minion自动生成minion.pem(private key)和minion.pub(public key) ,然后将minion.pub发给master服务端,master收到key后通过salt-key命令accept minion public key ,这样在master的/etc/salt//pki/master/minions下将会有minion id命名的key ,这时master可对minion发送指令。
连接master服务端 服务默认监听端口4505 4506
4505为saltstack的消息发布系统
4506为saltstack客户端与服务端通信接口
通过lsof查看4505 会发现minion持续保持ESTABLISHED(已建立)状态
SaltStack
Salt类似Ansible,因为它也是基于CLI的工具,采用了推送方法实现客户端通信。它可以通过Git或通过程序包管理系统安装到主服务器和客户端上。客户端会向主服务器提出请求,请求在主服务器上得到接受后,就可以控制该客户端了。
Salt可以通过普通的SSH与客户端进行通信,但如果使用名为minion的客户端代理软件,可以大大增强可扩展性。此外,Salt含有一个异步文件服务器,可以为客户端加快文件服务速度,这完全是Salt注重高扩展性的一个体现。
与Ansible一样,你可以直接通过CLI,向客户端发出命令,比如启动服务或安装程序包;你也可以使用名为state的YAML配置文件,处理比较复杂的任务。还有“pillar”,这些是放在集中地方的数据集,YAML配置文件可以在运行期间访问它们。
你可以直接通过CLI,向客户端请求配置信息,比如内核版本或网络接口方面的详细信息。只要使用名为“grain”的库存元素,就可以描述客户端;这样一来,管理员可以轻松向某一种类型的服务器发出命令,不需要依赖已配置群组。比如说,只要使用一个CLI命令,你就可以向运行某个内核版本的每个客户端发送命令。
与Puppet、Chef和Ansible一样,Salt也提供了大量的模块,以处理特定的软件、操作系统和云服务。自定义模块可以用Python或PyDSL来编写。除了Unix管理外,Salt的确提供Windows管理功能,但它还是更擅长管理Unix和Linux系统。
Salt的Web用户界面Halite非常新,功能不如其他系统的Web用户界面来得全面。它提供了事件日志和客户端状态的视图,能够在客户端上运行命令,但除此之外乏善可陈。
Salt的最大优点在于可扩展性和弹性。你可以有多个级别的主服务器。上游主服务器可以控制下游主服务器及其客户端。另一个优点在于对等系统,让客户端可以向主服务器提出问题,然后主服务器从其他服务器得到答案,提供全面信息。如果需要在实时数据库中查询数据,以便完成客户端的配置,这个优点就很方便。
部署环境
实验环境:
IP地址 | 角色 | 环境 |
10.0.0.30 | master | centos7.3 |
10.0.040 | minion | centos7.3 |
10.0.0.50 | minion | centos7.3 |
设置环境
修改主机名
hostnamectl set-hostname dlp.linuxwang.cn
hostnamectl set-hostname node01.linuxwang.cn
hostnamectl set-hostname node02.linuxwang.cn
在所有主机添加本地解析
[root@dlp ~]# cat /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
10.0.0.30 dlp.linuxwang.cn
10.0.0.40 node01.linuxwang.cn
10.0.0.50 node02.linuxwang.cn
SaltStack的通信模式总共分为2种模式:ZeroMQ、REAT,鉴于REAT目前还不是太稳定,我们选择ZeroMQ模式,本次安装采用源码安装的方式
在master配置(10.0.0.30)
yum -y install epel-release
yum -y install salt-master
for i in enable restart status; do systemctl $i salt-master;done
netstat -utpln |grep -e 4505 -e 4506
tcp 0 0 0.0.0.0:4505 0.0.0.0:* LISTEN 17452/python
tcp 0 0 0.0.0.0:4506 0.0.0.0:* LISTEN 17470/python
在minion配置(10.0.0.40-50)
yum -y install epel-release
yum -y install salt-minion
ping dlp
vi /etc/salt/minion
master: dlp.linuxwang.cn ##修改16行,指定master
:wq
for i in enable restart status;do systemctl $i salt-minion;done
授权
salt-key -L 查看当前的salt key信息
[root@dlp ~]# salt-key -L
Accepted Keys:
node01.linuxfan.cn
node02.linuxfan.cn
Denied Keys:
Unaccepted Keys:
Rejected Keys:
salt-key -A
[root@dlp ~]# salt-key -A
The following keys are going to be accepted:
Unaccepted Keys:
node01.linuxwang.cn
node02.linuxwang.cn
Proceed? [n/Y] Y
Key for minion node01.linuxwang.cn accepted.
Key for minion node02.linuxwang.cn accepted.
授权成功可进行远程操作
测试被控主机的连通性
# salt ‘*‘ test.ping
[root@dlp ~]# salt "*" test.ping
node01.linuxwang.cn:
True
node02.linuxwang.cn:
这时开始涉及我们的saltstack模块的使用, 由一个一个的模块对我们的远程的主机进行操作。
模块介绍
Archive模块:实现系统层面的压缩包调用,支持 gunzip、gzip、rar、tar、unzip等 cmd模块 :实现远程命令行调用执行(默认具备root权限) cp模块 :实现远程文件、目录的复制,以及下载URL文件等操作 cron模块 :实现被控主机的crontab计划任务操作 dnsutil模块:实现被控主机通过DNS相关操作 file模块:被控主机文件常见操作,包括文件读写、权限、查找、校验等 iptables模块:被控主机Iptables支持 network模块:返回被控主机网络信息 pkg包管理:被控主机程序包管理,如 yum 、apt-get等 service服务模块:被控主机程序包管理服务
本文出自 “Haproxy搭建web集群” 博客,请务必保留此出处http://12653557.blog.51cto.com/12643557/1956826
原文地址:http://12653557.blog.51cto.com/12643557/1956826