linux运维、架构之路-SaltStack快速入门
一、SaltStack介绍
SaltStack是一个服务器基础架构集中化管理平台,SaltStack基于Python语言实现,也是基于C/S架构,结合轻量级消息队列(ZeroMQ)与Python第三方模块(Pyzmq、PyCrypto、Pyjinjia2、python-msgpack和PyYAML等)构建,SaltStack整合了Puppet和Chef的功能,更适合大规模批量管理服务器,配置简单。
三大主要功能:远程执行、配置管理、云管理
运行方式:local、Master/Minion、Salt SSH
二、SaltStack工作原理
salt-master服务启动后会开启两个端口:4505和4506,minion没有端口,通过“双向密钥交换”(可通过tree /etc/salt/pki命令查看)来实现安全管理。salt-master每执行一条命令,所有minion均可收到。
[root@m01 haproxy]# lsof -n -i:
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
salt-mini root 24u IPv4 0t0 TCP 172.16.1.61:->172.16.1.61: (ESTABLISHED)
salt-mast root 12u IPv4 0t0 TCP *: (LISTEN)
salt-mast root 14u IPv4 0t0 TCP 172.16.1.61:->172.16.1.7: (ESTABLISHED)
salt-mast root 15u IPv4 0t0 TCP 172.16.1.61:->172.16.1.61: (ESTABLISHED)
salt-mast root 16u IPv4 0t0 TCP 172.16.1.61:->172.16.1.3: (ESTABLISHED)
[root@m01 haproxy]# lsof -n -i:4506 #所有的minion都与master通信,而回复的时候,master则使用4506端口
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
salt-mini root 13u IPv4 0t0 TCP 172.16.1.61:->172.16.1.61: (ESTABLISHED)
salt-mast root 20u IPv4 0t0 TCP *: (LISTEN)
salt-mast root 27u IPv4 0t0 TCP 172.16.1.61:->172.16.1.61: (ESTABLISHED)
salt-mast root 28u IPv4 0t0 TCP 172.16.1.61:->172.16.1.7: (ESTABLISHED)
salt-mast root 29u IPv4 0t0 TCP 172.16.1.61:->172.16.1.3: (ESTABLISHED)
三、SaltStack安装部署
1、环境
[root@m01 ~]# cat /etc/redhat-release
CentOS release 6.9 (Final)
[root@m01 ~]# uname -r
2.6.32-696.el6.x86_64
2、master服务端安装
rpm -ivh http://mirrors.zju.edu.cn/epel/6/x86_64/epel-release-6-8.noarch.rpm#安装epel源
yum install salt-master salt-minion -y
sed -i 's/#master: salt/master: 172.16.1.61/g' /etc/salt/minion#修改minion配置文件指定master
/etc/init.d/salt-master start
/etc/init.d/salt-minion start
chkconfig salt-master on
chkconfig salt-minion on
3、minion客户端安装配置
yum install salt-minion -y
sed -i 's/#master: salt/master: 172.16.1.61/g' /etc/salt/minion#直接替换指定master地址
/etc/init.d/salt-minion start
chkconfig salt-minion on
4、SaltStack常用命令参数
常用命令参数 |
命令说明 |
salt-key -L |
查看minion列表 |
salt-key -A |
同意接管所有的minion |
salt-key -a |
同意接管指定的一个minion |
salt-key -D |
删除所有认证的minion |
salt-key -d |
删除指定的minion |
salt-run manage.up |
查看存活的minion |
salt-run manage.down |
查看死掉的minion |
salt-run manage.status |
查看minion的相关状态 |
salt-run manage.versions |
查看salt的所有master和minion的版本信息 |
salt -d |
查看帮助文档 |
salt '*' sys.doc |
查看帮助文档 |
salt -d|grep service |
查看service相关模块命令 |
salt '*' service.get_all |
获取minion所有服务 |
salt '*' service.reload sshd |
重新加载sshd服务 |
salt '*' pkg.list_pkgs |
显示软件包版本列表 |
salt '*' pkg.version python |
显示软件包版本信息 |
salt '*' pkg.install httpd |
安装软件包 |
salt '*' service.status mysql |
查看mysql服务状态 |
salt '*' service.start mysql |
启动mysql服务 |
salt '*' sys.list_modules |
模块列表 |
salt-cp'*'/etc/hosts /etc/hosts |
分发hosts文件到所有minion端 |
salt'*'file.copy/tmp/zabbix.sls /tmp/sls |
把服务端对应文件拷贝到minion端相应目录下 |
salt '*' cp.get_dir salt://zabbix /tmp |
把服务端对应目录拷贝到minion端相应目录下 |
5、远程执行
①cmd.script远程执行脚本
salt '*' cmd.script salt://scripts/runme.sh
salt '*' cmd.script salt://scripts/runme.sh 'arg1 arg2 "arg 3"'
②cmd.shell远程执行命令
salt '*' cmd.shell "ls -l | awk '/foo/{print \$2}'"
salt '*' cmd.shell template=jinja "ls -l /tmp/{{grains.id}} | awk '/foo/{print \$2}'"
③测试到客户端的连通性
[root@m01 ~]# salt '*' test.ping
m01:
True
haproxy01:
True
web02:
True
④遇到的问题
#问题
salt-minion dead but pid file exists
#解决
rm -fr /etc/salt/pki/minion/minion_master.pub
/etc/init.d/salt-minion restart
最新文章
- java 利用JAX-RS快速开发RESTful 服务
- 揭秘PHP匿名函数
- Asp文件锁定脚本
- javaIO(二)
- ajax注释
- 推荐开源Api文档生成工具——Doxygen
- 彻底搞清js中闭包(Closure)的概念
- form不提交问题
- 如何将angular-ui的图片轮播组件封装成一个指令
- 分布式文件系统FastDFS如何做到高可用
- java 有序数组合并
- idea在maven打包时运行Test测试, 导致打包失败, 乱七八糟的错误
- Cesium 实践
- 一步步Cobol 400上手自学入门教程05 - 表
- Spring配置文件引入xml文件: <;import resource="; "; />;标签使用总结
- Gerrit安装配置
- 东北育才 NOIP模拟赛第1场
- python实现八大排序算法
- Spring Boot CRUD+分页(基于Mybatis注解方式)
- http知识点 前端
热门文章
- 阶段1 语言基础+高级_1-3-Java语言高级_06-File类与IO流_09 序列化流_3_对象的反序列化流_ObjectInputStream
- 阶段1 语言基础+高级_1-3-Java语言高级_04-集合_08 Map集合_6_Map集合遍历键值对方式
- 接口开发01--mock接口
- python中pycharm中.py文件调用一个.py文件的函数
- Java-XML解析第一篇主流开源类库解析XML
- 大数加减(51nod)
- java _static 关键字
- 10、应用机器学习的建议(Advice for Applying Machine Learning)
- Python自学第二天学习之《元组与字典》
- Django forms组件的校验