最近搭建了一个5节点的hadoop集群,这个过程中,涉及到各个节点间做ssh等效性、时间同步、服务启动和停止。我的做法是使用SCRT打开5个窗口远程到各个节点,然后在各个窗口中输入同样的命令,启动同样的服务。刚开始还好,到了后面我需要在各个节点上来回的切换用户,然后执行一些命令,然后再切换回root用户做一些授权的操作,尽管使用sudo可以提升普通用户的权限,但是我仍感到无比的麻烦,更重要的是目前是5个节点,如果集群是50个节点甚至是500个节点时,我仍要用这种方法吗?显然是愚蠢的做法!我渴望对着一个黑窗口,噼里啪啦一阵狂敲,所有的节点都嗷嗷叫,为了能够装Bigger,我决定学习一个自动化运维的工具。
纠结:saltstack or puppet
因为听说google内部使用的是puppet,所以刚开始晕着头把puppet搭建起来,尝试学习使用它,无奈一段时间以后,发现自己真是屌丝一枚,无法真正领略puppet的惊艳,更准确的来说,是因为自己内心迫切的想体验使用这样的工具来实现自己的统帅N多节点的快感,因此,放弃使用puppet,改为更为轻量的saltstack,而且配置简单,saltstack的核心功能是:配置管理和远程执行。你可以在master节点上一条命令,然后所有的节点都嘚啵嘚啵的开始执行,更重要的是你可以在master的控制台看到各个节点的返回结果。puppet 10 节点以上开始收费,而saltstack完全免费。学习的过程中,顺便记录下过程,方便自己也服务他人。
好,开始正题,首先看我的环境:
节点操作系统均为centos6.5,使用centos自带网络yum源+epel扩展源
hadoop0.updb.com 192.168.0.100 master
hadoop1.updb.com 192.168.0.101 minion
hadoop2.updb.com 192.168.0.102 minion
hadoop3.updb.com 192.168.0.103 minion
hadoop4.updb.com 192.168.0.104 minion
hadoop5.updb.com 192.168.0.105 minion
1、在master和minion上安装软件
master:
yum install salt-master -y
minion
yum install salt-minion -y
2、修改minion的配置文件,让minion能够找到master,每个minion都要修改,以hadoop1为例
vi /etc/salt/minion ## minion配置文件中只修改两行
#master: salt -->改为master: 192.168.0.100
#id: -->改为id: hadoop1
需要注意这里的id是给minion起的别名,作为唯一标识,各个minion不能重复
3、启动各minion节点的服务
/etc/init.d/salt-minion start
4、启动master节点服务,并通过认证minion keys实现master和minion之间的通信
/etc/init.d/salt-master start
使用salt-key -L 列出所以没有认证,认证过,拒绝认证的证书
[root@hadoop0 ~]# salt-key -L
Accepted Keys:
Unaccepted Keys:
hadoop1
hadoop2
hadoop3
hadoop4
hadoop5
Rejected Keys:
使用salt-key -A来签名所有状态为Unaccepted的证书
[root@hadoop0 ~]# salt-key -A
The following keys are going to be accepted:
Unaccepted Keys:
hadoop1
hadoop2
hadoop3
hadoop4
hadoop5
Proceed? [n/Y] y
Key for minion hadoop1 accepted.
Key for minion hadoop2 accepted.
Key for minion hadoop3 accepted.
Key for minion hadoop4 accepted.
Key for minion hadoop5 accepted.
验证,发现所有的minion证书已经被master签名
[root@hadoop0 ~]# salt-key -L
Accepted Keys:
hadoop1
hadoop2
hadoop3
hadoop4
hadoop5
Unaccepted Keys:
Rejected Keys:
5、测试通信是否正常
[root@hadoop0 ~]# salt '*' test.ping
hadoop4:
True
hadoop3:
True
hadoop2:
True
hadoop5:
True
hadoop1:
True
返回结果全为True,通信功能正常。
6、牛刀小试,我想在master上查看所有节点的当前时间,如下
[root@hadoop0 ~]# salt '*' cmd.run "date"
hadoop1:
Sun Oct 26 16:16:09 CST 2014
hadoop3:
Sun Oct 26 08:16:08 GMT 2014
hadoop5:
Sun Oct 26 08:16:09 GMT 2014
hadoop4:
Sun Oct 26 08:16:09 GMT 2014
hadoop2:
Sun Oct 26 08:16:08 GMT 2014
看到这个结果,老脸盛开的像朵菊花,心里那个爽啊!saltstack既然号称神器,当然不可能只会显示时间,接下来,慢慢体会并会持续记录。ok,engoying!
转载于:https://blog.51cto.com/quenlang/1568770