集群机器众多,每台ssh连接后再启动服务较为繁琐, 所以想在一台机器上执行shell脚本来对其他机器上的服务启动。 1.第一步,需要所有的机器先设置免密登录 2.第二步,在其中一台机器A上设置对其他所有机器的免密ssh连接 3.第三步,在其中一台机器A上执行shell脚本
编写的脚本在放到服务器系统上运行时,需要先修改文件的执行权限:
chmod 755 host_allow.sh
参考链接:https://www.cnblogs.com/parent-absent-son/p/12163725.html
以启动zookeeper、supervisor服务的例子来编写脚本:
#!/bin/bash echo "start zookeeper server..." #hosts里已经安装zookeeper的主机名,必须已经在/etc/hosts文件中将ip地址和主机名对应加上了才能使用 hosts="master node1 node2 node3" #用循环来分别执行zkServer.sh start的脚本 for host in $hosts do echo "--------$host--------" #必须加上source /etc/profile ,否则会报找不到文件的错误 ssh $host "source /etc/profile; /home/hadoop/zookeeper-3.4.10/bin/zkServer.sh start" done
#!/bin/bash echo "start supervisor ..." hosts="node1 node2 node3 node4 " for host in $hosts do echo "--------$host--------" #nohup是后台启动,>${STORM_HOME}/logs/supervisor.log 2>&1 &为了让输出的日志不在控制台显示 ssh $host "source /etc/profile; nohup storm supervisor >${STORM_HOME}/logs/supervisor.log 2>&1 &" done
参考链接:https://blog.csdn.net/jeikerxiao/article/details/84105529 https://blog.csdn.net/CrazyXinma/article/details/83029351
设置完免密登录需要重启ssh服务:
service sshd restart