实际生产环境中,会因业务原因,一个包需要在多台机器上面对业务系统进行打补丁,升级等操作,可通过shell脚本,实现批量操作。
环境:CentOS 7.4
ip:192.168.1.10,192.168.1.20,192.168.1.30
hostname:Master,node1,node2
操作步骤:
一,校正机器时间,通过ntpdate设置集群机器时间同步服务。
二,设置机器主机名:systemctl set-hostname 主机名
三,配置hosts文件,在各机器上配置hosts文件
vim /etc/hosts
Master 192.168.1.10
node1 192.168.1.20
node2 192.168.1.30
四,配置ssh服务设置免密登录
1.)在Master上面生成ssh公钥。
ssh-keygen (出现如下界面,连续回车即可)
2.)复制Maseter节点公钥到node节点上。
在master机器上执行:
ssh-copy-id -p 22 -i .ssh/id_rsa.pub root@192.168.1.20
ssh-copy-id -p 22 -i .ssh/id_rsa.pub root@192.168.1.30
3.)在master节点ssh远程登录验证。
ssh -p 22 root@192.168.1.20
ssh -p 22 root@192.168.1.30
五,编写脚本。
#!/bin/bash
host=( "Master" "node1" "node2" )
app=$1
for i in ${host[@]};
do
echo $host
ssh -p 22 root@$i "cd /usr/local/ && yum -y install nginx"
scp -P 22 -r $app root@$i :/usr/local/
if [ $? -ne 0 ];then
echo "failed"
else
echo "success"
fi
done