Chinaunix
标题: 用salt管理一到上万台服务器 [打印本页]
作者: xjq1986 时间: 2013-12-23 10:13
标题: 用salt管理一到上万台服务器
本帖最后由 xjq1986 于 2014-01-09 15:41 编辑
本文是使用salt管理一台虚拟机,从而引出管理一万台服务器的思路.^_^
1. 安装salt服务端
2. 安装salt 客户端
3. 配置salt 服务端
4. 配置salt客户端
5. Salt-key确认
6. 执行测试在线命令
7. 执行远程命令
8. 查看帮助
9. 执行远程脚本
10. 扩展
11. 管理更多服务器
本文从这个网址得到启发http://wiki.saltstack.cn/docs
测试环境,salt服务端IP:192.168.1.1 salt客户端IP:192.168.1.2
1. 安装salt服务端
- curl -L http://bootstrap.saltstack.org | sudo sh -s -- -M -N
复制代码
2. 安装salt 客户端
- wget -O - http://bootstrap.saltstack.org | sudo sh
复制代码
3. 配置salt 服务端
Salt服务端一般不需要配置,直接启动即可
- /etc/init.d/salt-master start
复制代码4. 配置salt客户端
编辑 /etc/salt/minion文件
a.修改master的IP为服务端IP: 192.168.1.1
Master:192.168.1.1
b.修改客户端标识id, 这个是验证和管理时使用的名称
id:cn-gd-gz-0001
c.启动客户端
- /etc/init.d/salt-minion start
复制代码
5. Salt-key确认
这时候服务端已经接受到客户端的验证请求
使用命令salt-key查看
AcceptedKeys:已经接受的客户端
UnacceptedKeys:还没有验证的客户端
RejectedKeys:拒绝的客户端
这时候看到cn-gd-gz-0001在未验证那里显示
执行命令接受管理这个客户端,会提示是否接受,按Y即可
- salt-key -a cn-gd-gz-0001
复制代码
6. 执行测试在线命令
格式: * 代表所有客户端,把*换成id代表只是选中这个id的客户端
返回true说明客户端在线,无响应大家懂的
7. 执行远程命令
在cn-gd-gz-0001这台客户端执行命令uname –a
- salt 'cn-gd-gz-0001' cmd.run 'uname -a'
复制代码
8. 执行远程脚本
上面cmd.run可以执行远程命令,但是有时我们想执行很多命令,例如一键安装lnmp,怎么办?
9. 查看帮助
可以查看帮助文档来解决这个问题,帮助文档太多了,重定向到一个文件再看
- salt '*' sys.doc > man.txt
复制代码
查看cmd.开头的模块
会发现有一些以cmd. 开头的模块
cmd.exec_code:
CLIExample:
salt '*' cmd.exec_code ruby 'puts "cheese"'
演示:
- salt 'cn-gd-gz-0001' cmd.exec_code ruby 'puts "cheese"'
复制代码
这个客户端没有ruby,返回找不到这个命令
- salt 'cn-gd-gz-0001' cmd.exec_code python 'print "cheese"'
复制代码
正确显示
用法是: salt ‘目标’ 执行语言 对应语言的代码
cmd.run 这个前面说了
cmd.script
这个是比较强大的命令,意思是可以从远程下载一个脚本在客户端执行
CLIExample:
salt '*' cmd.script salt://scripts/runme.sh
salt '*' cmd.script salt://scripts/runme.sh 'arg1 arg2 "arg 3"'
帮助文档说Thescript can be located on the salt master file server or on an HTTP/FTP server.
所以配置一下salt服务端, 把脚本放在服务端
编辑/etc/salt/master,打开下面的注释,保存后重启服务端
file_roots:
base:
- /srv/salt
如果没有/srv/salt/script目录就创建一个
cd/srv/salt/scripts
写一个shell脚本保存为1.sh
- #!/bin/bash
- echo "test salt" > /tmp/testsalt.txt
复制代码
执行远程命令
- salt 'cn-gd-gz-0001' cmd.script salt://scripts/1.sh
复制代码
显示的信息还是很直观的,stdout没有信息显示是因为脚本语句没有显示文本,可以加多一句echo “ok”再执行多一次就可以看到输出了.
看帮助好像还可以在执行脚本时添加命令行参数,试试
修改脚本为
- #!/bin/bash
- echo "test salt" > /tmp/testsalt.txt
- echo $1
- echo $2
- echo $3
- if [ "$3"x = "yy"x ]
- then
- echo "ok ???????????????"
- fi
复制代码再次执行远程命令
- salt 'cn-gd-gz-0001' cmd.script salt://scripts/1.sh "aa bb cc"
- salt 'cn-gd-gz-0001' cmd.script salt://scripts/1.sh "aa bb yy"
复制代码看起来传递的参数有效的
10.扩展
grep 'cmd.' man.txt这个命令可以查出帮助文档中还有其它 cmd. 大概有10个,童鞋们可以研究研究
除了这个远程执行之外,salt还有很多已经做好的模块,在这里就不一一介绍了
11. 管理更多服务器
基本思路是: 把需要执行的脚本放在服务端,然后让客户端下载回去自己执行.......然后就可以喝杯茶了
这里演示是管理一台虚拟机。。。。。。。。能不能很方便管理一百台服务器?一千台服务器?一万台服务器?
笔者也没有一万台服务器环境,只能说管理几百台机器还是轻松加愉快的^_^ 如果你有更好的想法和建议,请告诉我,谢谢.
作者: xjq1986 时间: 2013-12-26 09:18
自己顶。。。。。。。。。。。。。。
作者: ttt4011 时间: 2013-12-26 19:14
这个稳定吗?
作者: yuhongchun 时间: 2013-12-26 22:02
提示: 作者被禁止或删除 内容自动屏蔽
作者: xjq1986 时间: 2013-12-27 09:06
salt挺稳定的,推荐使用,哈哈,谢谢版主
作者: wenhq 时间: 2013-12-27 12:50
不错,支持。
作者: wenhq 时间: 2013-12-27 12:50
不错,支持。
作者: 2009532140 时间: 2013-12-27 18:46
必须来涨下姿势!
作者: shanxiaoxi 时间: 2014-01-17 11:39
好文章,自己下了一个salt-0.17.4的安装包,不知道这个在没有外网直连的情况下可以局域网内安装么?
作者: xuliya282 时间: 2014-02-18 23:28
好帖子必须顶
作者: defcon 时间: 2014-03-17 09:59
学习了,很不错的文章
作者: qq5910225 时间: 2014-03-18 11:03
顶起,是我想要的东西。
作者: tingfengmanbu 时间: 2014-03-24 09:53
支持,收藏了
作者: wsbg2008 时间: 2014-03-25 14:48
必须来涨下姿势。。。。。。。
作者: shjhcx 时间: 2014-05-16 13:03
准备测试下
作者: yyf1986 时间: 2014-05-22 13:10
我也在测试,用着感觉不错。
@shanxiaoxi 可以源码安装的
作者: alonerhu 时间: 2014-05-25 21:35
建议在新的发行版本上使用,老版本有些问题,我在rhel5上传文件和命令都有些问题,在rhel6上就正常了
作者: yyf1986 时间: 2014-05-26 15:27
请问你在生产环境部署过吗?
作者: by917611 时间: 2014-05-29 09:50
主要是学习模块,主要是学习一些配置文件管理推送。定时推送这些
作者: woxizishen 时间: 2014-06-06 09:28
直接使用ssh管理一樣的。ssh可以非交互遠程調用linux下任何命令。
作者: 少林功夫好 时间: 2014-11-03 15:53
这是一个好的系列,欢迎继续。
作者: drakness 时间: 2015-04-29 18:52
不错不错,有空拿来研究研究
欢迎光临 Chinaunix (http://bbs.chinaunix.net/) |
Powered by Discuz! X3.2 |