乐趣区

并行管理工具Pdsh

levinit linux 笔记

装置

  • 从源装置(以 yum 装置为例)

    #yum 装置确保曾经装置 epel 源,pdhs 位于该源中
    yum install epel-release
    yum install pdsh
    #不同发行版打包的粒度可能不同,rhel/centos 中 pdsh 的相干 mod 独自打包
    #pdsh-mod-dshgroup.x86_64 : Provides dsh-style group file support for pdsh
    #pdsh-mod-genders.x86_64 : Provides libgenders support for pdsh
    #pdsh-mod-netgroup.x86_64 : Provides netgroup support for pdsh
    #pdsh-mod-nodeupdown.x86_64 : Provides libnodeupdown support for pdsh
    #pdsh-mod-torque.x86_64 : Provides support for running pdsh under Torque jobid
    #pdsh-rcmd-rsh.x86_64 : Provides bsd rcmd capability to pdsh
    #pdsh-rcmd-ssh.x86_64 : Provides ssh rcmd capability to pdsh
  • 编译装置

    下载 pdsh 编译。罕用的几个编译选项:

    ./configure --prefix=/usr/local/pdsh --with-ssh --with-machines=/path/to/machines --with-dshgroups --with-timeout=15 
    --with-readline
    • --with-ssh ssh 模块(反对 ssh)
    • --with-dshgroups 反对 dsh 格调的主机分组
    • --with-machines=</path/to/file> 主机列表文件门路

      在该文件中写入主机地址(或主机名——须要在 hosts 中写好主机解析),每行一个。

      存在 machines 文件,应用 pdsh 执行时若不指定主机,则默认对 machines 文件中所有主机执行该命令。

    • --with-exec exec 模块
    • --with-timeout 超时,默认 10s
    • --with-readline 反对交互模式输出
    • --with-nodeupdown 节点宕机性能
    • --with-readline 编译 readline 性能, 反对交互式输出模式

具体可参看文档。

应用

一条 pdsh 命令分为三局部:pdsh + 参数 + 并行执行的命令

参数局部不肯定是必须的,该局部中个别会指定要执行的命令的主机信息。

如果只输出后面两局部,回车后可进入 pdsh 交互式命令行(若是编译装置须要启用--with-readline),再输出并行执行的命令局部。

罕用参数:

  • -w 指定主机 -x 排除指定的主机

    指标主机能够应用 Ip 地址或主机名(确保该主机名曾经在 /etc/hosts 中存在解析)

    多个主机之间能够应用逗号分隔,可重复使用该参数指定多个主机;能够应用简略的正则(参看上面的示例)。

  • g 指定主机组 -G 排除指定主机组
  • -l <username 指标主机的用户名

    如果不指定用户名,默认以以后用户名作为在指标主机上执行命令的用户名。

    例如:以后执行 pdsh 的用户为 root,则以 root 用户在指标主机上执行命令

  • -t <seconds> 超时工夫(单位:秒)
  • -N 用来敞开指标主机所返回值前的主机名显示。
  • -b 禁止 Ctrlc 个性,应用该选项和,按下 Ctrlc 将 kill 所有并行的工作。
pdsh -w 192.168.0.1 -w 172.16.0.1 -w master "hostname"
pdsh -w c[01-10] date            #对 c01--c10 主机执行 date 命令
pdsh -w c[01-10] -x c2 poweroff  #对 c01--c10 但排除 c02 执行关机命令
pdsh -w c01,c10,master reboot    #对 c1,c10,master 执行重启命令
pdsh -w c[01-10] -l test id      #应用 test 用户在 c01--c10 执行 id 命令

主机列表文件

主机列表文件蕴含一个或多个主机信息,当存在该文件时,间接应用 pdsh 命令而不指定主机列表,将默认指定主机列表中的主机执行后续命令。

留神:如果是编译装置,须要 --with-machines 启用该性能并指定主机列表文件门路。

WCOLL环境变量也设置主机列表文件但门路:

export WCOLL=/opt/nodes

主机列表文件中每个主机(应用 ip 或主机名、域名)一行, 例如:

c01

c02

pdsh hostname #主机列表文件中但主机均执行 hostname 命令

主机分组

如果装置有 dshgroup 模块(编译装置须要启用--with-dshgroups),可应用主机分组性能。

默认的主机组定义文件寄存目录是 /etc/dsh/group/~/.dsh/group/,该目录中可蕴含一个或多个主机列表文件。

DSHGROUP_PATH环境变量能够定义主机列表的寄存目录:

export DSHGROUP_PATH=/opt/pdsh/group

例如在主机组目录中增加了 group1group2两个主机列表文件:

pdsh -g group1 hostname  #在 group1 组的主机上执行 hostname 命令
pdsh -g group2 uname -r  #在 group2 组的主机上执行 uname - r 命令

pdcp

pdsh 提供的多主机并行复制工具,该性能须要每个主机都装有 pdsh。

用法相似 cp。


其余环境变量(参看man pdsh

  • PDSH_RCMD_TYPE-R 选项,设置 rcmd 模块(如 ssh 或 rsh)
  • PDSH_SSH_ARGS 设置 ssh 参数
  • PDSH_SSH_ARGS_APPEND 设置追加的 ssh 参数(如 ssh 的 -q 参数)
  • DPATH 设置近程主机的 PATH 变量
退出移动版