saltstack 任务管理和集群(三)
1 Job管理和Runner
1 任务管理
1.1 查看正在运行的任务
[root@salt-node4 ~]# salt '*' saltutil.running
salt-node4.damaicha.org-204:|_----------arg:fun:state.highstatejid:20170318082805017980pid:52413ret:tgt:*tgt_type:globuser:root
test-node3.damaicha.org-203:|_----------arg:fun:state.highstatejid:20170318082805017980pid:44995ret:tgt:*tgt_type:globuser:root
[root@salt-node4 ~]#
1.2 停止正在运行中的任务
[root@salt-node4 ~]# salt '*' saltutil.kill_job 20170318082805017980
2 将master上返回的结果写在数据库里。
前面使用了插件,让Minnion的数据写到数据库里。
现在让master上的数据直接写在文件里。
返回的数据在这里/var/cache/salt/master/jobs 是他自己的保存方式。
安装 MySQL-python
[root@salt-node4 ~]# yum -y install MySQL-python
- 修改master配置文件,在文件结尾处添加如下:
salt库里的相关的建表语句请看salt一第一部分总结笔记
mysql.host: '127.0.0.1'
mysql.user: 'salt'
mysql.pass: 'salt@pw'
mysql.db: 'salt'
mysql.port: 3306
重启master服务,让配置文件生效。
systemctl restart salt-master
3、测试。
[root@salt-node4 /srv]# mysql -usalt -psalt@pw
...
MariaDB [(none)]> select * from salt.salt_returns;
...
3 job 和 runner
3.1 job
salt-run jobs.list_jobs
salt-run jobs.lookup_jid jid号
例子:[root@salt-node4 /srv]# salt-run jobs.list_jobs
20170318125522221559:----------Arguments:- ifconfigFunction:cmd.runStartTime:2017, Mar 18 12:55:22.221559Target:*Target-type:globUser:root
20170318125618022528:----------Arguments:- ifconfigFunction:cmd.runStartTime:2017, Mar 18 12:56:18.022528Target:test-*Target-type:globUser:root
20170318125633831619:----------Arguments:- ifconfigFunction:cmd.runStartTime:2017, Mar 18 12:56:33.831619Target:test-*Target-type:globUser:root
[root@salt-node4 /srv]# salt-run jobs.lookup_jid 20170318125633831619
test-node3.damaicha.org-203:eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500inet 10.0.0.203 netmask 255.255.255.0 broadcast 10.0.0.255inet6 fe80::20c:29ff:fe79:7aa7 prefixlen 64 scopeid 0x20<link>ether 00:0c:29:79:7a:a7 txqueuelen 1000 (Ethernet)RX packets 608231 bytes 219740452 (209.5 MiB)RX errors 0 dropped 0 overruns 0 frame 0TX packets 452636 bytes 99942459 (95.3 MiB)TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536inet 127.0.0.1 netmask 255.0.0.0inet6 ::1 prefixlen 128 scopeid 0x10<host>loop txqueuelen 0 (Local Loopback)RX packets 187130 bytes 13223278 (12.6 MiB)RX errors 0 dropped 0 overruns 0 frame 0TX packets 187130 bytes 13223278 (12.6 MiB)TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
3.2 runner
[root@salt-node4 /srv]# salt-run manage.status
down:
up:- test-node3.damaicha.org-203- salt-node4.damaicha.org-204
[root@salt-node4 /srv]# salt-run manage.up
- test-node3.damaicha.org-203
- salt-node4.damaicha.org-204
[root@salt-node4 /srv]# salt-run manage.down
[root@salt-node4 /srv]# salt-run manage.versions
Master:2016.11.3
Up to date:----------salt-node4.damaicha.org-204:2016.11.3test-node3.damaicha.org-203:2016.11.3
2 无Master和多Master
1 masterless 无master
files_roots pillar_roots 和master的一样,区别在预不从master获取数据,改成了从本地。
1 修改minion的配置文件。
[root@test-node3 ~]# vim /etc/salt/minion
..
530 file_client: local
..[root@test-node3 ~]# systemctl restart salt-minion
2 测试
[root@test-node3 ~]# salt-call test.ping
local:True
2 多master
需要注意的事项。
1 需要共享的东西(使用nfs),结合git做版本管理。
<br/>keys: master minion<br/>file_roots里的所有文件<br/>pillar_root <br/>
####2 minion的配置。
- 10.0.0.203
- 10.0.0.204
3 Syndic
1 逻辑图
2 原理
发布任务:将先生要干一件事,他将要做的事情传给sydic(小秘),sydic再将要做的事情给陈浩南,陈浩南收到信息后再将事情指派给下面的小弟去做。
返回数据: 小弟干完事情后,将结果反馈给陈浩南,此时小秘(sydic)和陈浩南在一块,小秘听到后将消息转给蒋先生(不需要陈浩南反馈)
3 应用场景
多机房
注意:syndic的file_roots pilar_roots必须和saltmaster的保持高度一致。
4 配置安装
4.1角色部署
10.0.0.204 saltmaster+syndic minion
10.0.0.203 saltmaster 将先生
4.2 安装salt-syndic 10.0.0.204
[root@salt-node4 ~]# yum -y install salt-syndic
4.3 修改master配置文件,告诉陈浩南老大是将先生。10.0.0.204
[root@salt-node4 ~]# vim /etc/salt/maste
...
865 syndic_master: 10.0.0.203
...
[root@salt-node4 ~]# systemctl restart salt-master
[root@salt-node4 ~]# systemctl start salt-syndic
4.4 修改master配置文件,告诉将先生,小弟是陈浩南。10.0.0.203
[root@test-node3 ~]# vim /etc/salt/master
...
857 order_masters: True
...
[root@test-node3 ~]# systemctl restart salt-master
4.5 接受saltmaster+syndic 发来的key(收小弟)
[root@test-node3 ~]# salt-key -A
The following keys are going to be accepted:
Unaccepted Keys:
salt-node4.damaicha.org-204
Proceed? [n/Y] y
Key for minion salt-node测试
[root@test-node3 ~]# salt '*' test.ping
salt-node4.damaicha.org-204:True
test-node3.damaicha.org-203:True
##4 saltstack-SSH
1 安装salt-ssh
[root@salt-node4 ~]# yum -y install salt-ssh
2 编辑配置文件/etc/salt/roster
[root@salt-node4 ~]# vim /etc/salt/roster
#添加如下:
test-node3.damaicha.org-203:host: 10.0.0.204user: rootpasswd: 123..abcport: 52113salt-node4.damaicha.org-204:host: 10.0.0.203user: rootpasswd: 123..abcport: 52113
3 测试
# 执行相当于c/s模式时的cmd.run (第一次使用时,这么玩。)
[root@salt-node4 ~]# salt-ssh '*' -r 'ifconfig' -i# 执行高级状态
[root@salt-node4 ~]# salt-ssh '*' state.highstate
拓展
拓展:
关闭ssh,key更换时提示的错误信息。
cd ~/.ssh
echo StricHostKeyChecking no >config
5 API
配置步骤
- https 证书
- 配置文件
- 验证。使用pam验证
- 启动salt-api
1 安装https证书(生产环境是需要购买的)
# 新建本地用户,后面调用api的时候会用到
[root@salt-node4 ~]# useradd -M -s /sbin/nologin saltapi
[root@salt-node4 ~]# echo 'saltapi'|passwd --stdin saltapi# 本机产生https证书
[root@salt-node4 ~]# cd /etc/pki/tls/certs/
[root@salt-node4 /etc/pki/tls/certs]# make testcert 密码123123 然后一路回车
[root@salt-node4 /etc/pki/tls/certs]# cd /etc/pki/tls/private/
[root@salt-node4 /etc/pki/tls/private]# openssl rsa -in localhost.key -out salt_nopass.key 密码是123123
[root@salt-node4 /etc/pki/tls/private]# ls
localhost.key salt_nopass.key
2 安装CherryPy 和saltapi
[root@salt-node4 ~]# yum -y install python-pip salt-api
[root@salt-node4 ~]# pip install --upgrade pip
[root@salt-node4 ~]# pip install CherryPy==3.2.6 ``# ps: 如果不能安装这个版本就用yum来进行安装 yum install python-cherry*``
我遇到的梗:
如果salt-api启动报错,记得看日志。如果是cherrypy的问题,就重装pip install CherryPy
[root@salt-node4 ~]# vim .pip/pip.conf
#更新pip源为淘宝的:
[global]
index-url = http://mirrors.aliyun.com/pypi/simple/
[install]
trusted-host=mirrors.aliyun.com
3 修改master配置文件
[root@salt-node4 ~]# vim /etc/salt/master
...12 default_include: master.d/*.conf
...[root@salt-node4 ~]# cd /etc/salt/master.d/
[root@salt-node4 /etc/salt/master.d]# vim api.conf
rest_cherrypy:host: 10.0.0.204port: 8000ssl_crt: /etc/pki/tls/certs/localhost.crtssl_key: /etc/pki/tls/private/salt_nopass.key[root@salt-node4 /etc/salt/master.d]# vim eauth.conf
[root@salt-node4 /etc/salt/master.d]# cat eauth.conf
external_auth:pam:saltapi:- .* # 代表能执行所有模块- '@wheel' # 代表salt-key- '@runner' # runner看机器是否存活。重启saltmaster 和api
[root@salt-node4 /etc/salt/master.d]# systemctl restart salt-master
[root@salt-node4 /etc/salt/master.d]# systemctl restart salt-api
4 获取token
[root@salt-node4 master.d]# curl -k https://10.0.0.204:8000/login \-H "Accept: application/x-yaml" \-d username='saltapi' \
-d password='saltapi' \
-d eauth='pam'-----
return:
- eauth: pamexpire: 1490041767.050187perms:- .*- '@wheel'- '@runner'start: 1489998567.050187token: 3d625f75a04cb066e7d1f975d140ff5f96a56a47user: saltapi
获得token后,我们使用获得的token查询minion的10.0.0.203的信息。它返回的是一个字典
curl -k https://10.0.0.204:8000/minions/test-node3.damaicha.org-203 \
-H "Accept: application/x-yaml" \
-H 'X-Auth-Token: 3d625f75a04cb066e7d1f975d140ff5f96a56a47'通过runner查看那些机器活着
curl -k https://10.0.0.204:8000 \
-H "Accept: application/x-yaml" \
-H 'X-Auth-Token: ef0b60cceb33fd66ab1ab3a8344671c461445d1c' \
-d client='runner' \
-d fun='manage.status'
--------------
return:
- down: []up:- test-node3.damaicha.org-203- salt-node4.damaicha.org-204test.ping
[root@test-node3 sysconfig]# curl -k https://10.0.0.204:8000 \
-H "Accept: application/x-yaml" \
-H 'X-Auth-Token: ef0b60cceb33fd66ab1ab3a8344671c461445d1c' \
-d client='local' \
-d tgt='*' \
-d fun='test.ping'
----
return:
- salt-node4.damaicha.org-204: truetest-node3.damaicha.org-203: true执行高级状态,有同步和异步,下面的是同步的比较慢。异步的是async
curl -k https://10.0.0.204:8000 \
-H "Accept: application/x-yaml" \
-H 'X-Auth-Token: ef0b60cceb33fd66ab1ab3a8344671c461445d1c' \
-d client='local' \
-d tgt='*' \
-d fun='state.highstate'查看jobs
curl -k https://10.0.0.204:8000/jobs \
-H "Accept: application/x-yaml" \
-H 'X-Auth-Token: ef0b60cceb33fd66ab1ab3a8344671c461445d1c'查看指定的jid 的执行内容
curl -k https://10.0.0.204:8000/jobs/20170320163206321875 \
-H "Accept: application/x-yaml" \
-H 'X-Auth-Token: 3d625f75a04cb066e7d1f975d140ff5f96a56a47'推荐oms
https://github.com/binbin91/omsdashboard推荐
https://github.com/yueyongyue/saltshaker
转载于:https://blog.51cto.com/damaicha/2116651
saltstack 任务管理和集群(三)相关推荐
- Oracle RAC集群三种心跳机制
Oracle 集群心跳机制: Oracle集群如何维护集群的一致性,所谓的集群一致性就是指集群中每个成员能够了解其他成员的状态,而且每个成员获得的集群中其他节点的状态和集群中节点成员列表 ...
- FreeBSD下安装配置Hadoop集群(三)
先给自己做个广告: 开源Hive管理工具phpHiveAdmin今日更新0.05 beta2 ChangeLog: 1. sql查询页全部重写,复杂查询现在可以用异步非阻塞的方式实时的查看map/re ...
- Hadoop集群三种作业调度算法介绍
Hadoop集群中有三种作业调度算法,分别为FIFO,公平调度算法和计算能力调度算法 先来先服务(FIFO) Hadoop中默认的调度器FIFO,它先按照作业的优先级高低,再按照到达时间的先后选择被执 ...
- delete kubectl pod_使用kubectl管理k8s集群(三十)
原标题:使用kubectl管理k8s集群(三十) 前言 Foreword 在搭建k8s集群之前,我们需要先了解下kubectl的使用,以便在集群部署出现问题时进行检查和处理.命令和语法记不住没有关系, ...
- redis 高可用(持久化、主从复制、哨兵、集群)以及集群的三种模式
Redis高可用定义 在web服务器中,高可用代表服务器可以正常访问的时间,一般使用百分比来衡量多长时间内可以提供正常服务 但是在redis中,高可用的定义还要更广泛一点,除了提供正常的服务(如主从分 ...
- 容器编排技术 -- Kubernetes从零开始搭建自定义集群
容器编排技术 -- Kubernetes从零开始搭建自定义集群 1 设计和准备 1.1 学习 1.2 Cloud Provider 1.3 节点 1.4 网络 1.4.1 网络连接 1.4.2 网络策 ...
- redis集群扩容和缩容_redis集群cluster搭建,扩容缩容
1. 概要说明 1.1. 概述 本文旨在说明平台部署环境搭建的过程和详细步骤说明,为后面系统部署提供清晰的参考依照. 以下搭建部署的环境,为一个小型的分布式集群环境.满足负载均衡和单点故障 ...
- Elasticsearch-03 CentOS7 / Windows上部署Elasticsearch5.6.16集群模式
文章目录 概述 CentOS上部署ES集群 集群组成 关键配置信息 Master节点搭建 Slave1节点搭建 Slave2节点搭建 Windows 部署 ES集群 elasticsearch.yml ...
- c# 链接mongDB集群实战开发
出处:http://blog.csdn.net/zuoming120/article/details/25639157 最近看着公司的项目是在太悲剧了看不下去了.各种供跨库调用各种卡,想换一种思路模式 ...
最新文章
- BZOJ 1592. Making the Grade(思维,数据结构优化DP,以及三个拓展问题)[Usaco2008 Feb]【BZOJ计划】
- 单片机模块学习之数码管
- python处理excel奖金_60万行的Excel数据,Python轻松处理
- shell--指“提供使用者使用界面”的软件(命令解析器)
- UpdatePanel的内容中出现自定义多语言运行异常
- fork()和多线程
- UITableView介绍 之 复杂cell的高度计算
- 在.NET开发中的单元测试工具之(2)——xUnit.Net
- python查询手册_Python 手册
- MatLab imhist
- Django中文文档-The Django Book
- python基本快捷键
- 干货!软考高级网络规划设计师备考经验分享
- cad画正弦曲线lisp_cadlisp基础教程.pdf
- PostgreSQL extension 参数
- 短视频拍摄流程-----今抖云创
- ES6 Symbol基本用法
- 域名查询服务商的方法
- C#-调试记Log文件
- C语言结构体字节对齐规则
热门文章
- 插值法补齐缺失数据_数据挖掘非常重要的一步:数据预处理
- 统计一个数字在排序数组中出现的次数
- JavaScript 中的函数介绍
- Android开发:《Gradle Recipes for Android》阅读笔记(翻译)5.2——使用Android Testing Support Library进行测试...
- django源码阅读
- 分页查询的SQL语句
- c#怎么设置一个字符串中某个字符的颜色
- [语]××语录@××--第1篇
- SpringMVC自学日志03(SpringMVC注解)
- SpringBoot集成Log4j2框架