問題場景描述
跑測試的時候,經常需要將任務部署到多個client端,發起對集羣的測試。我們很熟悉xargs這個命令,這個命令可以10路併發創建100個文件,但是xargs對於單臺Linux非常好用,但是無法部署任務到多臺機器,如果需要部署任務到多臺機器,則需要parallel來幫忙了,如果呢說多往remote client部署任務,執行指令,必須解決的一個問題是ssh 免密登陸,否則任務無法執行,也順便說一下ssh免密的實現
環境準備
先在發起任務的主機檢查有沒有安裝parallel的deb包
先檢查當前系統有沒有安裝parallel包
dpkg -l parallel
安裝parallel包
sudo apt-get install parallel
ssh免密登陸client
通常我們通過ssh登陸其他主機時會提示輸入password,提示如下
可以通過 man ssh-keygen命令查看ssh help
首先生成密鑰
ssh-keygen -t rsa
在/root/.ssh會有如下幾個文件
authorized_keys:存放遠程免密登錄的公鑰,主要通過這個文件記錄多臺機器的公鑰
id_rsa : 生成的私鑰文件
id_rsa.pub : 生成的公鑰文件
know_hosts : 已知的主機公鑰清單
如果希望ssh公鑰生效需滿足至少下面兩個條件:
1) .ssh目錄的權限必須是700
2) .ssh/authorized_keys文件權限必須是600
實現免密登陸
1. 通過ssh-copy-id的方式
ssh-copy-id -i ~/.ssh/id_rsa.pub hostip
【eg: ssh-copy-id -i ~/.ssh/id_rsa.pub 172.17.37.170】
2. 通過scp將公鑰寫入到remote client文件中
scp -p ~/.ssh/id_rsa.pub remote_ip:/root/.ssh/authorized_keys
成功實現免密登陸
通過parallel部署任務到remote client
1. 通過parallel下發sleep命令
seq 100 | parallel -j 5 -S 172.17.37.170 sleep {}
2. 在remote client監控成功收到sleep指令
問題解決
希望對大家有幫助