由于zookeeper启动需要在每台虚拟机都进行zkServer.sh start
,很不方便,由此写个shell脚本来进行一个命令全部启动。
前提:配置好ssh免密登录,并且每台虚拟机都可以互通,没配置好的可以看下我的hadoop集群搭建里有免密登录
cd /etc/usr/local//zookeeper/zookeeper-3.4.6/bin
vi start-zk.sh
输入:
echo "start zkServer..."
for i in 1 2 3 4 5
do
ssh chun$i "source /etc/profile;/usr/local/zookeeper/zookeeper-3.4.6/bin/zkServer.sh start"
done
意思就是ssh进入每台机器然后启动zkServer.sh,需要注意一点的是,需要source一下环境变量,因为你ssh进去与主机进入是不一样的,是两个平行界面,而用户登录的时候会自动运行初始化脚本,就会source一下环境变量,但是用脚本进入的时候并不会,所以会找不到环境变量。
别忘记把脚本的权限修改一下,
chmod 777 start-zk.sh
运行试一下:
因为zookeeper已经配置了环境变量所以这里把脚本放在了zookeeper的bin下
直接运行
start-zk.sh
查看状态:zkserver.sh status
可以看到已经启动成功
同理我们是不是可以写一个stop和status的脚本
把代码稍微修改一下即可
stop
cd /etc/usr/local//zookeeper/zookeeper-3.4.6/bin
vi stop-zk.sh
输入:
echo "stop zkServer..."
for i in 1 2 3 4 5
do
ssh chun$i "source /etc/profile;/usr/local/zookeeper/zookeeper-3.4.6/bin/zkServer.sh stop"
done
status
cd /etc/usr/local//zookeeper/zookeeper-3.4.6/bin
vi status-zk.sh
输入:
echo "status zkServer..."
for i in 1 2 3 4 5
do
ssh chun$i "source /etc/profile;/usr/local/zookeeper/zookeeper-3.4.6/bin/zkServer.sh status"
done
修改权限
chmod 777 stop-zk.sh
chmod 777 status-zk.sh
下面我们来看一下为什么需要source才可以
进入
cd ~
查看隐藏文件
ll-a
可以看到这两个文件
-rw-r--r--. 1 root root 176 12月 29 2013 .bash_profile
-rw-r--r--. 1 root root 176 12月 29 2013 .bashrc
然后
cat .bash_profile //查看文件if [ -f ~/.bashrc ]; then
. ~/.bashrc
fi
#User specific environment and startup programs
PATH=$PATH:$HOME/bin