zoukankan      html  css  js  c++  java
  • 使用pdsh、ClusterSSH和mussh管理集群系统[08年11月刊]

    使用pdsh、ClusterSSH和mussh管理集群系统[08年11月刊] - 电子杂志 - 技术新知 Linux时代 - 开源、自由、共享 - 中国最大的Linux技术社区

    使用pdsh、ClusterSSH和mussh管理集群系统[08年11月刊]
     
    来源:
    Linux论坛
    日期:
    2009.02.11 18:40 (共有条评论) 我要评论  

    北京生命科学研究所马路遥 maluyao@gmail.com

    当我们管理数以十计或者更多的集群系统时,往往需要在每台机器上执行同样的命令,或者拷贝同样的文件,这时,我们就可以考虑使用三个小工具,分别是pdshClusterSSHmussh

    Fedora系统上,我们可以直接通过yum安装这三个软件。

    yum install clusterssh pdsh pdsh-rcmd-ssh pdsh-rcmd-rsh mussh

    如果是其他Linux系统,也可以到http://clusterssh.sourceforge.net http://sourceforge.net/projects/pdshhttp://www.sourceforge.net/projects/mussh下载相应的软件。

    无论是clusterssh还是pdshmussh,我们都应该相应的设置无密码登录目标系统,这方面的内容,有很多介绍,本文不再提及。

    一、pdsh 首先介绍一下pdsh,首先必须在管理节点和每台目标机器上都安装pdsh软件包。pdsh可以在指定的一组机器上执行同一个命令。例如需要管理下列机器,机器名分别为node211,node232,node233,node234,node240

    命令格式如下:

    pdsh -w [SSH_OR_RSH]:USERNAME@node[211,232-234,240] [COMMAND]

    其中大写的部分应该被实际内容所取代。例如希望以maluyao用户的身份,在每台机器上执行hostname命令,使用ssh方法进行连接,则结果如下:

    [tt@node111 ~]$ pdsh -w ssh:maluyao@node[211,232-234,240] hostname

    node240: node240.hn.org

    node233: node233.hn.org

    node234: node234.hn.org

    node232: node232.hn.org

    node211: node211.hn.org

    这样可以非常清楚的看到每台机器上执行的结果。

    另外一些时候,我们可以希望在每台机器上执行一组也许不确定的命令,这时我们可以省略[COMMAND]部分,用法如下:

    [tt@node111 ~]$ pdsh -w ssh:maluyao@node[211,232-234,240]

    pdsh> hostname

    node240: node240.hn.org

    node234: node234.hn.org

    node233: node233.hn.org

    node232: node232.hn.org

    node211: node211.hn.org

    pdsh> date

    node234: Mon Oct 27 14:59:37 CST 2008

    node240: Mon Oct 27 14:59:37 CST 2008

    node232: Mon Oct 27 14:59:37 CST 2008

    node233: Mon Oct 27 14:59:37 CST 2008

    node211: Mon Oct 27 14:59:38 CST 2008

    pdsh> exit

    pdsh软件包还自带了pdcp命令,可以将文件拷贝到一组机器上,用法如下:

    pdsh -w [SSH_OR_RSH]:[USERNAME]@node[211,232-234,240] SOURCE_FILE DESTINATION

    想将文件x.org拷贝到上述机器的/home/maluyao/当中,可执行下列命令:

    pdcp -w ssh:maluyao@node[211,232-234,240] x.org /home/maluyao/

    如果要拷贝的是目录,则需使用-r参数,例如将目录abc拷贝到/home/maluyao,执行命令如下:

    pdcp -r -w ssh:maluyao@node[211,232-234,240] abc /home/maluyao/

    二、ClusterSSHclusterssh是另外一个集群管理软件,可以同时打开多个窗口进行操作。例如最简单的用法可能如下:

    cssh root@node211 root@node232 root@node234

    不过当管理数以十计或数以百计机器的时候,在命令行就很难添加如此众多的机器名了。这时的办法是使用一个配置文件进行管理。首先生成一个配置文件,命令为:

    cssh -u > ~/.csshrc

    这个~/.csshrc文件里可以定义如干个组,例如在此文件结尾处添加

    clusters=ibm hp inspur

    ibm=root@node211 root@node232 root@node233 root@node234 root@node240

    hp=root@hp211 root@hp232 root@hp233 root@hp234 root@hp240

    inspur=root@inspur211 root@inspur232 root@inspur233 root@inspur234 root@inspur240

    这样就可以使用cssh hp cssh ibm来连接指定的群组了。clusterssh的不便之处在于,管理机器越多,则打开的窗口越多,如果屏幕太小,就非常难受了。









    三、musshmussh也是Fedora系统自带的一款管理多主机的ssh软件,和上述两种软件类似,可以互为补充。

    mussh可以让你把本地的脚本,在多台ssh目的机器上执行。格式如下

    mussh [OPTIONS] <-h host.. | -H hostfile> [-c cmd] [-C scriptfile]

    例如想在多个机器上执行hostname命令,可以执行如下命令:

    [tt@node111 ~]$ mussh -h root@node211 root@node212 -c hostname

    root@node211: node211.hn.org

    root@node212: node212.hn.org

    如果想执行本地脚本test.sh,可以执行如下命令:

    [tt@node111 ~]$ mussh -h root@node211 root@node212 -C test.sh

    另外还可以通过建立hostfile的方式,使得命令执行时更为简化,例如在hostfile01.txt中写入:

    [email=root@node211]root@node211[/email] [email=root@node212]root@node212[/email]

    [tt@node111 ~]$ mussh -H hostfile01.txt -c hostname

    root@node211: node211.hn.org

    root@node212: node212.hn.org

    笔者日常负责管理不到两百台Linux系统,配合一些监控软件,感觉有上述几个管理工具,基本就足够了。完全没有必要使用商业管理软件。

  • 相关阅读:
    python拆包与装包-*args,**kwargs
    mybatis学习4-CRUD操作
    mybatis学习3-入门案例,注解方式
    mybatis学习1-前置,复习Jdbc
    spring框架学习-aop
    spring学习1-第一个spring项目
    spring概述
    idea的一些个人设置
    maven的一些个人设置
    VBA文件对话框的应用(VBA打开文件、VBA选择文件、VBA选择文件夹,VBA遍历文件夹)
  • 原文地址:https://www.cnblogs.com/lexus/p/2368907.html
Copyright © 2011-2022 走看看