一、 集羣分發介紹:
將一臺主機上的配置、文件分發到其它主機上,避免重複操作。
二、 集羣分發工具:
1. scp的安裝: yum -y install openssh-clients ,所有主機都要安裝。
命令格式:scp [參數] 本地文件 遠程帳戶@遠程 IP 地址:遠程目錄,參數如下
-v 顯示詳細的連接進度
-P 指定遠程主機的 sshd 端口號
-r 用於傳送文件夾
-6 使用 IPv6 協議
添加主機名與 IP 映射
編輯文件 vim /etc/host ,添加主機名與 ip 的映射,即可直接使用 主機名傳輸文件
2. rsync 的使用:centos7默認已安裝,格式同 scp ,參數說明參考上文,相當於 scp 升級版。
3. ansible:自動運維工具,本文暫不作介紹。
三、 集羣分發腳本編寫:
利用 rsync 編寫一個腳本,自動將文件分發到所有主機的同一文件夾。
1. 編寫文件:在 /usr/local/bin 下新建一個文件,命名爲 xsync,文件內容如下。
cd /usr/local/bin
vim xsync
注意根據實際情況修改第 5 部分的 host 值和主機名。
#!/bin/bash
if [[ -x $(command -v rsync) ]]; then
echo yes > /dev/null
else
echo no rsync found!
exit 1
fi
#1. 獲取輸入參數個數;如果沒有參數,直接退出
pcount=$#
if (( pcount==0 )); then
echo no args!
exit
fi
#2. 獲取文件名稱
p1=$1
fname=$(basename $p1)
echo fname=$name
#3. 獲取文件絕對路徑
pdir=$(cd -P $(dirname $p1); pwd)
echo pdir=$pdir
#4. 獲取當前用戶名
usr=$(whoami)
#5. 循環體
for (( host = 2; host < 4; host++ )); do
echo ---node${host}---
rsync -rvl $pdir/$fname ${usr}@node${host}:${pdir}
#statements
done
2. 添加權限:編寫完以後保存,給文件添加可執行權限。
chmod a+x xsync
3. 使用方法:進入要分發的文件所在的文件夾,輸入 xsync filename 即可。
示例:將 node1 上的 demo3 文件分發給 node2 和 node3
完成分發後即可在其它主機同一文件夾下看到文件