Parallel 部署任務到多台linux機器

2021-09-25 03:51:00 字數 2550 閱讀 6150

跑測試的時候,經常需要將任務部署到多個client端,發起對集群的測試。我們很熟悉xargs這個命令,這個命令可以10路併發建立100個檔案,但是xargs對於單台linux非常好用,但是無法部署任務到多台機器,如果需要部署任務到多台機器,則需要parallel來幫忙了,如果呢說多往remote client部署任務,執行指令,必須解決的乙個問題是ssh 免密登陸,否則任務無法執行,也順便說一下ssh免密的實現

先在發起任務的主機檢查有沒有安裝parallel的deb包

先檢查當前系統有沒有安裝parallel包

安裝parallel包

sudo apt-get install parallel
通常我們通過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檔案中

成功實現免密登陸

1. 通過parallel下發sleep命令

seq 100 | parallel -j 5 -s 172.17.37.170 sleep {}

2. 在remote client監控成功收到sleep指令

執行方式

1. 在當前node執行程式 / 指令碼

parallel ::: 'python3 create_5m_file.py'

parallel ::: 'bash ss.sh'

2. 在多個遠端node執行程式 / 指令碼

seq 2 | parallel -j 2 -s 172.17.37.131 -s 172.17.37.170 python3 create_5m_file.py

3. 在多個remote client部署linux命令

seq 100 | parallel -j 5 -s 172.17.37.131 -s 172.17.37.170 touch /root/test/{}

4. 在乙個遠端node部署任務【一定記得通過:::指定引數】

parallel -j 1 -s 172.17.37.170 ::: 'python3 /root/create_5m_file.py'

remote已成功收到指令,並在執行中

希望對大家有幫助

C 並行任務Parallel

我們知道,在計算機執行程式的時候,大多數情況下都是序列執行,也即乙個任務完成後在接著執行下乙個任務,當然有用到過執行緒thread,或者執行緒池threadpool,還有就是task.這次我們認識乙個新東西parallel,這個是微軟在.net4.0中推出的,其在命名空間system.threadi...

Jenkins 多伺服器自動部署,發布到多台伺服器

目的 多台伺服器 自動上傳部署 能用ftp的絕對不用命令,能用拖動檔案的,絕對不手寫字母,能用工具實現 上傳打包編譯的,絕對不用手動打包編譯,能自動化的,絕對不用原始工具。風來了.呆狐狸 環境 centos 6.6 lanmps環境套裝 www.lanmps.com php5.2.x mysql10...

Jenkins多伺服器自動部署,發布到多台伺服器

目的 多台伺服器 自動上傳部署 能用ftp的絕對不用命令,能用拖動檔案的,絕對不手寫字母,能用工具實現 上傳打包編譯的,絕對不用手動打包編譯,能自動化的,絕對不用原始工具。風來了.呆狐狸 環境 centos 6.6 lanmps環境套裝 www.lanmps.com php5.2.x mysql10...