Parallel :部署任务到多台linux机器

1 篇文章 0 订阅
1 篇文章 0 订阅

问题场景描述

跑测试的时候,经常需要将任务部署到多个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指令

通过parallel执行python程序或者shell脚本

执行方式

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已成功收到指令,并在执行中 

问题解决

希望对大家有帮助

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

qin147896325

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值