在一些大公司,一千台服务器只能算中等,那么这么多服务器如何统一管理。那么今天我们就学习一下如果利用运维工具管理。
现在时间:凌晨一点半,由于我在后面做实验格式出了问题,一直调试,调试了大概一个多小时,终于成功。心累!
开班第四十一天:
今天的课程大纲:
1.认识一下现在比较流行的运维管理工具
2.学习saltstack运维工具
3.saltstack的状态配置管理
详细讲解:
讲解之前呢,首先声明一下,在真实的生产环境中,不会真的把一千台服务器的管理权都交给一台服务器,一是那样不安全,二是即使再好的服务器很难承受这么高的并发。所以在真实的环境中,一般实现的是并发簇,也就是几十台或者几百台同时管理,然后把所有的服务器都归类为一个一个的并发簇,这样的效率不仅会提高,也让管理服务器减轻了很大的压力。今天我讲解肯定不会真的去管理一千台服务器,我可能就会拿两台服务器来管理。
一。认识一下现在比较流行的运维管理工具
运维管理工具,市面上其实有很多,不过常用而且出名的就那几个,我们今天就介绍一下,首先我们要明白为什么要学习运维管理工具,其实我们可以认识为自动化管理配置,一般我们需要实现批量运维。也就是我们要管理很多服务器。现在市场占有率比较高的有以下四个工具,puppet,chef,saltstack,ansible,这四个工具前面两个是用ruby语言写的,后面两个是用python写的,我个人对python比较熟悉,所以我着重讲解一下saltstack,其实saltstack也是我认为最流行的一个工具。
简单的介绍一下四个工具,puppet一个最大的使用者就是google,chef我不是很了解,我们所熟知的维基百科使用的就是saltstack,ansible拥有着非常漂亮的UIweb界面,它的最大的靠山就是红帽redhat。
二。学习saltstack运维工具
学习saltstack这个工具,我们要学习的有两点,第一怎么去找到其中一台或多台服务器,第二就是学习模块,包括状态模块和执行模块,其实也就是学习怎么管理服务器。
我一般把saltstack分为两个部分,第一是远程命令执行,第二是配置管理。首先说一下远程命令执行。什么是远程命令执行,说白了就是管理服务器用ssh连接到被管理服务器上执行响应的操作,然后根据返回的结果判断被管理服务器的状态。
我这里规定一下,我的管理端master是172.16.70.1,两个被管理端minion是172.16.70.3和172.16.70.4
1.首先在管理端安装salt-ssh。(前提是配置好了yum源),yum install salt-ssh,salt-ssh的机制就是在管理端有一个花名册,花名册记录了被管理端所有的帐号密码信息,然后连接执行命令的时候就不要再次认证。
2.安装好之后,我们现在就配置管理端的花名册,vim /etc/salt/roster。写这个配置文件唯一需要注意的是,不能使用制表符tab,你就算按空格也不能使用制表符。
3.写好了花名册,现在我们就用管理端测试一下能不能监控到两个虚拟机。我执行了salt-ssh,*代表我管理的所有主机,当然也可以指定某一个主机,-i表示忽略第一次主机认证,-r后面跟的是我要在虚拟机执行的命令。
4.*也可以换成正则表达式,这样如果有很多虚拟机,我筛选主机也方便一点,但是使用正则表达式要跟上一个-E,例如salt-ssh -E "^.*3$" -i -r "date".这个意思就是我让主机名结尾为3的执行date命令。
说完了远程命令执行,我现在讲一下saltstack的消息队列,前面讲的是管理端主动去连接被管理端,现在我要讲的是被管理端自己送上门,也就是被管理端发了一个请求,你好管理端,我是主机某某某,希望你能管理一下我,管理端这里收到请求之后,感觉这个主机人品还不错,好的,我接受你的请求,我现在开始管理你。现在呢,我们一般称管理端为master,被管理端称为minion。
1。首先配置master。yum install salt-master,安装好之后启动服务,设置开机启动。
2.这里介绍一下master的运行机制,SaltStack master启动后默认监听4505和4506两个端口。4505(publish_port)为saltstack的消息发布系统,4506(ret_port)为saltstack客户端与服务端通信的端口,所以如果你开启了防火墙,那么你需要允许4506端口,如果你关闭防火墙,那么下面的操作你可以不用设置。
3.master已经配置好了,现在开始配置minion,yum install salt-minion。安装好之后,修改配置文件,vim /etc/salt/minion,在里面定义我的master是谁,我自己的id是什么(其实是自己取的名字).
4.重启minion服务,service salt-minion restart,设置开机启动,chkconfig salt-minion on。现在在master上测试一下,看看能否获取到两个虚拟机。salt-key -L 可以看到已经收到两个虚拟机的请求,现在master应该接受这个两个请求。
5.可以使用salt-key -A 接受所有的请求,也可以使用salt-key -a 主机名 接受某一个主机。
6.如果master觉得每次有请求都要确认很麻烦,那么可以直接设置成自动接受,在配置文件中修改auto_accpet: True。既然已经接受了,现在就可以测试了,salt “*” test.ping 测试是否连通,salt "*" cmd.run "命令",执行命令,当然*还是可以换成某个主机,也可以是正则表达式。
7.这里的test和cmd就是salt的执行模块,ping和run就是这两个模块的方法,所以接下来你的任务就是学习salt里的模块和方法。这样你才能更好的应用salt。
三。saltstack的状态配置管理
前面讲的一些运维方法,都是不方便的,假设你要让很多台服务器同时执行一条命令,这可能还简单一点,那么如果我想让我手中的一千台服务器都安装apache,而且部署一个网站,那么这样的需求直接使用命令的话会非常麻烦。
那么怎么才能让这个需求简单一点呢,其实我前面说了salt有执行模块,还有管理配置的状态模块,什么是状态,其实也就是master的一个需求,假设我master有一个需求,各位minion,我这里有一个需求,你们都给我安装上apache,而且你们的首页index.html就是我规定的这个,现在你们开始吧。其实我们把这个需求写成一个状态文件,然后同步到所有的minion上,minion看到这个需求,就知道自己需要干什么,然后就开始执行master的需求。这样不用master主动去执行,minion就已经配置好了
1.首先我们知道了需求,那么我们怎么写这个状态文件呢,首先我们知道安装apache需要有yum源,那么首先的需求就是让所有的主机配置yum源。所有的状态文件都放在/srv/salt/中(没有目录的就新建目录),有一个顶级的状态文件叫做top.sls.内容如下:意思就是所有的主机都要满足配置一个yum源,vm开头的主机要配置httpd服务。
2.现在就要开始编写repo和httpd这两个sls文件了。首先是repo。这个文件是不是就是我们写repo文件一样呢?这样写的规范都是官方文档定的,如果要学习怎么写,看官方文档,如果我讲,估计讲一个星期都讲不完。
3.现在开始编写httpd.sls。在这里呢,我们首先要创建/srv/salt/apache/conf.d目录,而且要在apache目录中写一个index.html文件。这样minion找配置文件的时候就根据source找到master中的文件了。下面这样写呢,其实还有很多的不足,但是基本功能实现了,说白了里面的关键字都不是乱写的,都是官方给出的模块和方法,我们调用。
4.现在写好了状态文件,master就需要把状态文件同步到所有的minion了,使用命令,salt "*" state.apply。在这之前呢,我们知道我们的需求是安装apache,所以我提前把虚拟机中装好的apache卸载了。现在开始测试。图一是软件仓库已经配置好了。图二表示我为vm3配置的apache也配置好了。
5.现在打开浏览器测试一下,输入172.16.70.3,看看vm3的apache服务是否正常运行。测试可以看出,已经正常。
总结:
今天主要学习了运维监控管理工具的使用,在今后的工作中你也会经常接触到这些工具,所以掌握其中的一个是非常有必要的。
头条号:爱家人爱老婆的IT男
QQ群:145252709,我会上传资源,同时会有很多大神跟你们讨论学习分享
微信公众号:程序猿的野生香蕉
微博:爱家人爱老婆的IT男