首先新建文件zkstart.sh
写入内容:
#!/bin/bash
echo “启动zookeeper集群…”
for m in server1 server2 server3(若干个zk集群节点名)
do
ssh $m “/zookeeper路径/bin/zkServer.sh start”
done
加上执行权限:chmod a+rwx zkstart.sh
在运行这个脚本之前需要将export JAVA_HOME=(jdk安装目录) 写入到每个zk集群节点的zkEnv.sh 中
最后运行:./zkstart.sh
关闭集群同理:将zkServer.sh start改为zkServer.sh stop即可
上面为什么要将jdk路径添加到zkEnv.sh中呢?
原因:
在虚拟机启动而启动的shell脚本称之为登入式shell:
加载变量顺序:/etc/profile → /etc/profile.d → .bash_profile → .bashrc → /etc/bashrc
而在虚拟机启动后的shell称之为非登入式shell:
加载变量顺序:.bashrc → /etc/bashrc → /etc/profile.d
因为我的jdk环境变量是在/etc/profile,所以非登入式shell并不会加载jdk的环境变量,因此我们需要手动将jdk环境变量添加到zookeeper相关文件中,利于我们使用脚本启动。
望指教...