Parallel :部署任務到多臺機器

問題場景描述

跑測試的時候,經常需要將任務部署到多個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指令

問題解決

希望對大家有幫助

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章