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