当搭建集群后,每次重新启动都需手动启动每台服务器的zookeeper,当服务器数量增多后,这样会显得很繁琐,所以就需要有一个脚本,通过一台机器,利用集群机器间传输命令ssh即可实现一键启动。
首先贴上脚本底层所需知识。
#export A=1 定义的变量,会对自己所在的shell进程及其子进程生效 (相当于java中的把局部变量升级为全局变量)
#B=1 定义的变量,只对自己所在的shell进程生效(定义在外界为全局变量,定义在文件里就相当于局部变量)
#在script.sh中定义的变量,在当前登录的shell进程中 source script.sh时,脚本中定义的变量也会进入当前登陆的shell进程(source后相当于升级为全局变量)
下面贴出启动脚本:
#!/bin/bash echo "start zkServer..." for i in 1 3 4 do ssh min$i "source /etc/profile;/root/apps/zookeeper/bin/zkServer.sh start" done
#min$i 即我要启动的集群服务器包括min1,min3,min4
source /etc/profile 的目的是将profile中的JAVA_HOME路径提升为全局变量才能到相应的服务器启动具体操作:
免密登录,通过生成公钥与私钥
ssh-keygen一直回车
然后ssh-copy-id min1/ssh-copy-id min2/ssh-copy-id min4 输入密码即可配置完成免密登录