使用 xCAT 简化 AIX 集群的部署和管理

红薯 发布于 2010/09/06 17:29
阅读 2K+
收藏 1

xCAT 简介

xCAT (Extreme Cloud Administration Toolkit) 是一个开源的可扩展的高级集群管理和配置工具,允许使用者通过一个单点控制和管理一个集群系统。xCAT 最先是为 IBM xSeries 系列 Linux Cluster 做的第三方软件。它在简化集群管理的同时,还使集群能够方便地实现快速扩展,从而提高了系统管理员的工作效率。

值得一提的是,xCAT 软件包基本上全部由一系列有用的 perl 脚本构成,所以使用者修改代码后不需要重新再编译和安装,而是可以很方便地根据自己的需求直接修改脚本来定制出自己需要的 xCAT 软件。那么如此实用的工具是怎么工作的呢?

接下来,笔者将用下图来描述 xCAT 的工作流程:xCAT 是基于客户机 / 服务器架构的应用程序,客户端和服务器端的通信主要是由管理节点上运行的 xCAT daemon(xcatd)来控制的,可以说运行于管理节点上的 xCAT daemon(xcatd)就是整个 xCAT 软件正常工作的心脏。 当管理节点上的 xCAT daemon(xcatd)接收到计算节点发送过来的用 XML 封装的的命令时,它将通过 ACL(Access Control Lists)来判定发送者是否有权限执行这些命令。此外,xCAT daemon(xcatd)在安装配置计算节点和各个节点重新启动的时候还会收集各个节点发来的状态和资源信息。

图 1. xCAT 的工作原理结构图
xCAT 的工作原理结构图

  1. 首先,使用者在客户机上通过 xCAT 命令行输入需要 xCAT 完成的一项任务指令,该 xCAT 任务指令接着被客户机封装成 XML 发送给服务器端。
  2. 服务器端管理节点上运行的 xCAT daemon(xcatd)接收到该任务指令后,先解析出命令名、参数、发起命令的用户名、客户主机 ip 地址以及该命令将影响的节点范围等信息。
  3. 接着,服务器端管理节点上的 xCAT daemon(xcatd)通过 ACL 判定出该任务指令发出者是否有权限发起这项 xCAT 任务指令,如果 ACL 判决出该用户有权限发起该任务指令,则该任务就将被放进运行队列中等待执行。
  4. 该任务指令执行后,结果会再被服务器发回给客户机端,并显示在任务指令的发出者的终端屏幕上,从而完成整个任务指令的的执行过程。

管理节点上部署 xCAT 工具环境

下面笔者通过在 IBM® Power 520 Express® (8203-E4A) 上的实践,演示如何使用 xCAT 来简化 AIX 集群的安装和管理的具体方法和步骤。

图 2. 集群网络结构图
集群网络结构图

这里我们提到了 LPAR( 逻辑分区 logic partition):

LPAR( 逻辑分区 logic partition) 是基于 IBM Power 系列硬件的逻辑分区技术,可以将一台硬件服务器通过一些特定硬件或者软件逻辑划分为多态逻辑机器,每台逻辑机器可以作为一台虚拟服务器独立运行。

  1. 准备工作 我们的管理节点是一台安装了 AIX 6.1 TL3 SP2 的 IBM Power 6 p520 服务器。集群中的计算节点是用我们的 HMC(Hardware Management Console,硬件管理控制 台)服务器把一台物理服务器使用 LPAR 划分出的 4 台 IBM Power 6 p520 虚拟服务器。我们都知道,集群的各个节点之间的互联主要通过各种网络,在集群中通过 数据流类型,将不同的数据流归入不同的网络结构中,以实现集群性能的高效。主要的数据流有 :
    • 计算数据流,用于计算节点在计算时的数据交换,通常我们采用 Infiniband 网络。
    • 集群管理数据流,管理集群内的各种具有管理功能的设备及相关控制软件的数据,通常我们采用普通的 EtherNet/IP 网络。
  2. 搭建好集群硬件设施及网络连接后,就可以在管理节点上安装 xCAT 软件了。
    1. 必须确保我们的管理节点上已经安装好 perl、openssl 和 openssh 等等 xCAT 运行所需要的依赖软件。
       # lslpp -l | grep openssl 
      -bash-3.2# lslpp -l | grep openssh
    2. 创建 /install 和 /var 目录,建议最好是将这两个目录建立在单独的分区中,因为它们将会用于存放 xCAT 和 NIM 需要的各种各样的资源,所以需要很大的空间。 在这里,我们使用 crfs 命令在 rootvg 卷组上创建了 jfs2 类型的 /install 文件系统,初始的大小是 5GB,参数 -A 设为 yes 表示系统重新启动时,文件系统自动进行安装。 然后使用命令 mount 加载新生成的 /install 文件系统:
      -bash-3.2# crfs -v jfs2 -g rootvg -m /install -a size=5G -A yes 
      -bash-3.2# mount /install
    3. 从开源网站 http://xcat.sourceforge.net/#download上下载最新的 xcat-core 和 xcat-deps 两个安装压缩包并解压缩到本地磁盘。
      -bash-3.2# tar -xvf dep-aix-2.3-200910121440.tar.gz -C /tmp/xcat/ 
      bash-3.2-1.aix5.2.ppc.rpm
      conserver-8.1.16-2.aix5.3.ppc.rpm
      curl-7.19.6-1ssl.aix5.3.ppc.rpm
      expat-2.0.1-2.aix5.1.ppc.rpm
      expect-5.42.1-3.aix5.1.ppc.rpm
      fping-2.4b2_to-1.aix5.3.ppc.rpm
      libxml2-2.6.21-4.aix5.2.ppc.rpm
      net-snmp-5.4.2.1-1.aix5.3.ppc.rpm
      net-snmp-devel-5.4.2.1-1.aix5.3.ppc.rpm
      net-snmp-perl-5.4.2.1-1.aix5.3.ppc.rpm
      openslp-xcat-1.2.1-1.aix5.3.ppc.rpm
      perl-Crypt-SSLeay-0.57-1.aix5.3.ppc.rpm
      perl-DBD-SQLite-1.13-1.aix5.3.ppc.rpm
      perl-DBI-1.55-1.aix5.3.ppc.rpm
      perl-Digest-MD5-2.36-1.aix5.3.ppc.rpm
      perl-Expect-1.21-1.aix5.3.ppc.rpm
      perl-IO-Socket-SSL-1.06-1.aix5.3.ppc.rpm
      perl-IO-Stty-.02-1.aix5.3.ppc.rpm
      perl-IO-Tty-1.07-1.aix5.3.ppc.rpm
      perl-Net-Telnet-3.03-1.2.aix5.3.ppc.rpm
      perl-Net_SSLeay.pm-1.30-1.aix5.3.ppc.rpm
      popt-1.7-2.aix5.1.ppc.rpm
      rsync-2.6.2-1.aix5.1.ppc.rpm
      tcl-8.4.7-3.aix5.1.ppc.rpm
      tk-8.4.7-3.aix5.1.ppc.rpm
      unixODBC-2.2.15-32bit.aix5.3.ppc.rpm
      wget-1.9.1-1.aix5.1.ppc.rpm
      README
      instoss
      -bash-3.2# tar -xvf core-aix-2.3.4.tar.gz -C /tmp/xcat/
      instxcat
      xCATaixSN.bnd
      xCATaixSN2.bnd
      xCATaixSSH.bnd
      xCATaixSSL.bnd
      perl-xCAT-2.3-snap200910291815.aix5.3.ppc.rpm
      xCAT-2.3-snap200910291816.aix5.3.ppc.rpm
      xCAT-UI-2.3-snap200910291816.aix5.3.noarch.rpm
      xCAT-client-2.3-snap200910291815.aix5.3.ppc.rpm
      xCAT-rmc-2.3-snap200910291816.aix5.3.ppc.rpm
      xCAT-server-2.3-snap200910291815.aix5.3.ppc.rpm
    4. 先用解压出来的 instoss 脚本安装 Open Source Software (OSS),再用解压得到的 instxcat 脚本安装 xCAT 软件。 这两个辅助脚本将所有必需的安装包全部安装到 /opt 目录下,所以必须确保 /opt 目录有足够的空间。除此外,instxcat 还会修改 /etc/profile 文件,定义 xCAT 软件必须的环境变量。
      -bash-3.2# /tmp/xcat/instoss 
      ...
      -bash-3.2# /tmp/xcat/instxcat
      ...
      -bash-3.2# cat /etc/profile
      ...
      # xCAT setup
      XCATROOT=/opt/xcat
      PATH=$PATH:$XCATROOT/bin:$XCATROOT/sbin
      MANPATH=$MANPATH:$XCATROOT/share/man
      export XCATROOT PATH MANPATH
    5. 最后检验 xCAT 是否安装成功,xCAT daemon(xcatd)是否已经成功地运行起来。
      -bash-3.2# lsdef -t site -l 
      Setting the name of the site definition to 'clustersite'.

      Object name: clustersite
      consoleondemand=yes
      installdir=/install
      master=192.168.186.1
      tftpdir=/tftpboot
      useSSHonAIX=no
      xcatdport=3001
      xcatiport=3002

      -bash-3.2# ps -aef |grep xcat|grep -v grep
      root 483400 507916 0 02:19:50 - 0:00 xcatd: install monitor
      root 504060 507916 0 02:19:50 - 0:00 xcatd: UDP listener
      root 507916 1 0 02:19:50 - 0:00 xcatd: SSL listener
      root 516350 507916 0 02:19:50 - 0:00 xcatd: DB Access
  3. 配置 xCAT 参数
    1. 定义集群网络对象:包括配置集群中所有网络的网络地址、掩码和网关等等。在这里,我们使用 mkdef 命令定义一个名为 net1 的 network 对象, 网络地址是 192.168.186.0,子网掩码是 255.255.255.0,网关是 192.168.186.1:
      -bash-3.2# mkdef -t network -o net1 net=192.168.186.0 
      mask=255.255.255.0 gateway=192.168.186.1
      Object definitions have been created or modified.
    2. 选择远程命令执行(Remote Command Execution)。xCAT 默认是在 AIX 集群节点上建立 Secure Shell(SSH),如果要改用的 Remote Shell(RSH)话,可以 chdef 命令来修改:
      -bash-3.2# lsdef -t site -l 
      Setting the name of the site definition to 'clustersite'.

      Object name: clustersite
      consoleondemand=yes
      installdir=/install
      master=192.168.186.1
      tftpdir=/tftpboot
      useSSHonAIX=yes
      xcatdport=3001
      xcatiport=3002
      -bash-3.2# chdef -t site -o clustersite useSSHonAIX=no
      Object definitions have been created or modified.
    3. 配置网络名称解析。可以选择同步各个节点的 /etc/hosts,或者也可以直接采用一个 DNS 域名服务器。 如果采用 /etc/hosts 的机制,则可以在创建 xCAT 各个节点定义后再运行 makehosts 脚本,从而自动生成得到 /etc/hosts 文件。 我们采用直接建立一个 DNS 域名服务器的方法(例如 DNS 服务器 IP 地址是“9.181.2.1”,管理节点的 IP 地址是“192.168.186.1”时):
      -bash-3.2# chdef -t site domain= mycluster.com nameservers= 192.168.186.1 
      forwarders=9.181.2.1
      Object definitions have been created or modified.
      -bash-3.2# cat /etc/resolv.conf
      search mycluster.com
      nameserver 192.168.186.1
      -bash-3.2# mkdef -t network -o net1 net=192.168.186.0 mask=255.255.255.0
      gateway=192.168.186.1
      Object definitions have been created or modified.
      -bash-3.2# makedns
      Setup of DNS complete.
      -bash-3.2# startsrc -s named
      0513-059 The named Subsystem has been started. Subsystem PID is 372810.
    4. 修改文件大小限制。因为用于安装节点所用的各种 AIX/NIM 资源文件一般都比较大,所以有必要将 root 帐号的文件限制设置为不限制。在这里,可以使用 chuser 命令,参数 fsize=-1 表示对大小没有限制:
      -bash-3.2# /usr/bin/chuser fsize=-1 root
    5. 检查 xCAT 所依赖的系统服务是否正常运行。查看 /etc/inetd.conf 文件,检查 inetd 服务是否已经包含 telnet, ftp, bootp/dhcp 等等服务,还要检查用于给各个集群节点安装系统时候需要的 NFS 和 TFTP 服务是否正常运行。可以使用 lssrc 命令查看各个服务是否处于 active 状态:
      -bash-3.2# lssrc -ls inetd 
      Subsystem Group PID Status
      inetd tcpip 229540 active
      Debug Not active
      Signal Purpose
      SIGALRM Establishes socket connections for failed services.
      SIGHUP Rereads the configuration database and reconfigures services.
      SIGCHLD Restarts the service in case the service ends abnormally.
      Service Command Description Status
      pmv5 /etc/pmdv5 pmdv5 active
      xmquery /usr/bin/xmtopas xmtopas -p3 active
      wsmserver /usr/websm/bin/wsmserver wsmserver -start active
      time internal active
      daytime internal active
      time internal active
      daytime internal active
      ntalk /usr/sbin/talkd talkd active
      tftp /usr/sbin/tftpd tftpd -n active
      bootps /usr/sbin/bootpd bootpd /etc/bootptab active
      exec /usr/sbin/rexecd rexecd active
      login /usr/sbin/rlogind rlogind active
      shell /usr/sbin/rshd rshd active
      telnet /usr/sbin/telnetd telnetd -a active
      ftp /usr/sbin/ftpd ftpd active
      -bash-3.2# lssrc -s nfsd
      Subsystem Group PID Status
      nfsd nfs 307350 active
      -bash-3.2# lssrc -s tftpd
      Subsystem Group PID Status
      tftpd tcpip 315546 active
    6. 将我们的 HMC 服务器的定义加入 xCAT 数据库中:使用 mkdef 命令创建名为 myhmc 的 node 类型对象,其中该对象的属性采用 groups 为 all 的对象的默认属性, nodetype 节点类型为 hmc,mgt 硬件管理采用 hmc,并指定用户名及密码。然后就可以运行 xCAT 脚本 rscan 收集得到由该 HMC 服务器管理的所有 LPAR 节点的硬件信息了。 将得到的所有节点的硬件信息同样使用 mkdef 命令定义到 xCAT 数据库的节点对象中。最后,可以使用 nodels 命令列出已经定义成功的节点名。
      -bash-3.2# mkdef -t node -o myhmc groups="all" nodetype=hmc mgt=hmc 
      username=hscroot password=abc1234
      Object definitions have been created or modified.
      -bash-3.2# lsdef -t node -o myhmc -l
      Object name: myhmc
      groups=all
      mgt=hmc
      nodetype=hmc
      password=abc1234
      username=hscroot
      -bash-3.2# rscan myhmc -z > /tmp/mystanzafile
      -bash-3.2# cat /tmp/mystanzafile | mkdef -z
      Object definitions have been created or modified.
      -bash-3.2# nodels
      myhmc
      IBMPServer-8203-E4A-SN0681864
      lparp520s1
      lparp520s2
      lparp520s3
      lparp520s4
  4. 到此,我们的 xCAT 环境就在管理节点上搭建好了,接着就可以开始集群里各个计算节点操作系统的安装和管理工作了。

使用 xCAT 给集群节点安装 AIX 操作系统

说到安装 AIX 操作系统,我们就不得不提到 NIM(Network Installation Management)工具。 xCAT 给计算节点安装 AIX 操作系统是基于 NIM 工具的,实质上就是对 NIM 各个命令的打包。 xCAT 支持 diskfull 有盘(即 standalone)和 diskless 无盘两种安装模式。

使用 xCAT 安装 AIX standalone 节点

  1. 第一步当然是制作系统启动镜像文件。 首先使用 gencopy 命令将 AIX 安装光盘内容拷贝到管理节点的本地磁盘,参数 -U 表示根据标准更新目录结构,-X 表示如果空间不够自动扩展文件系统, -d 指定源文件目录,-t 指定目标文件目录,all 表示拷贝所有源目录的 image。然后就可以使用脚本 mknimimage 从源镜像目录 /myimages 构造出命名为 610BaseImage 的 AIX 独立系统启动镜像文件了:
    -bash-3.2# gencopy -U -X -d /dev/cd0 -t /myimages all 
    -bash-3.2# mknimimage -s /myimages 610BaseImage
  2. 添加 SSH、SSL 等 AIX 计算节点必备的各种软件。 SSH、SSL 等软件是管理节点上 xCAT 工具对客户机实施管理和监控的必需软件。将这些所需要的各种软件安装包拷贝到 /tmp/images 目录下,然后使用“nim -o update”命令找到正确的系统目录,并更新到相应的 lpp_source 资源。 xCAT 还提供了两个 installp bundle 文件(xCATaixSSL.bnd 和 xCATaixSSH.bnd),这两个文件可以从 xCAT 的安装包 core-aix-2.3.4.tar.gz 解压后得到。Installp Bundle 安装是一种支持多种软件格式的安装方式。用户可以编辑 Bundle 文件,指定所要安装软件的名称,相应软件格式等信息,通过 SMIT,geninstall 或者 NIM 等安装工具调用 Bundle 文件,实现软件安装。在这里我们采用 NIM 安装工具,nim 的参数 -o 表示操作,-t 表示资源类型,-a 表示属性, 我们分别定义 define 了目标在 NIM 主控机上的 /install/nim/installp_bundle/xCATaixSSL.bnd 和 /install/nim/installp_bundle/xCATaixSSH.bnd 的名为 xCATaixSSL 和 xCATaixSSH 的 installp_bundle 资源。最后使用 chdef 命令把 它们添加到 610BaseImage 对象的定义中 :
    -bash-3.2# nim -o update -a packages=all -a source=/tmp/images 
    610BaseImage_lpp_source
    -bash-3.2# cp /tmp/xcat/xCATaixSSL.bnd /install/nim/installp_bundle/
    -bash-3.2# cp /tmp/xcat/xCATaixSSH.bnd /install/nim/installp_bundle/
    -bash-3.2# nim -o define -t installp_bundle -a server=master
    -a location=/install/nim/installp_bundle/xCATaixSSL.bnd xCATaixSSL
    -bash-3.2# nim -o define -t installp_bundle -a server=master
    -a location=/install/nim/installp_bundle/xCATaixSSH.bnd xCATaixSSH
    -bash-3.2# chdef -t osimage -o 610BaseImage installp_bundle=”xCATaixSSL,xCATaixSSH”
    Object definitions have been created or modified.
  3. 确认集群中的各个节点的主机名和主机 IP 地址都已经添加到 /etc/hosts 文件中。
    -bash-3.2# cat /etc/hosts 
    127.0.0.1 loopback localhost # loopback (lo0) name/address
    192.168.186.1 myaixxcat
    192.168.186.21 myhmc
    192.168.186.33 lparp520s1.mycluster.com lparp520s1
    192.168.186.34 lparp520s2.mycluster.com lparp520s2
    192.168.186.35 lparp520s3.mycluster.com lparp520s3
    192.168.186.36 lparp520s4.mycluster.com lparp520s4
  4. 获取主机 MAC 地址 所有等待着被安装操作系统的目标节点,它们的适配器 MAC 地址也是必须获取后添加到 xCAT 数据库中的,这些地址之后还将被加到 NIM 资源定义中。 通过运行 xCAT 的 getmacs 脚本从节点获取 MAC 地址。这个脚本可以获取到目标节点的以太网适配器的 MAC 地址。在调用这个脚本之前有必要先调用 makeconservercf 脚本(该脚本用来生成一个新的 conserver 配置文件并且重新启动 conserver daemon,所以每次集群的节点变化后都有必要运行该脚本。)
    -bash-3.2# makeconservercf 
    -bash-3.2# getmacs all
  5. 初始化 NIM 资源的定义 通过调用 xCAT 的 xcat2nim 脚本并以 xCAT 数据库里的信息为依据创建出 NIM 节点和组的定义。例如,我们如果打算在 lparp520s1 节点上安装 AIX 独立系统, 先用 xcat2nim 命令根据 xcat 中的 node 类型对象 lparp520s1 生成 nim 对象,接着可以使用 lsnim 来查看新创建对象的属性,最后使用 nimnodeset 命令初始化该节点对象。
    -bash-3.2# xcat2nim -t node lparp520s1 
    NIM operations have completed successfully.
    -bash-3.2# lsnim -l lparp520s1
    lparp520s1:
    class = machines
    type = standalone
    connect = shell
    platform = chrp
    netboot_kernel = 64
    if1 = net1 lparp520s1 00215E7AF9E2 ent
    cable_type1 = N/A
    Cstate = ready for a NIM operation
    prev_state = ready for a NIM operation
    Mstate = not running
    -bash-3.2# nimnodeset -i 610BaseImage lparp520s1
    AIX/NIM nodes were initialized.
  6. 初始化网络启动 运行 xCAT 的 rnetboot 脚本初始化目标节点 lparp520s1 的启动信息。当返回成功信息后,可以调用“lsnim -l lparp520s1”查看节点的安装过程。
    -bash-3.2# rnetboot lparp520s1 
    Success
  7. 清理工作 前面步骤创建出的各种 NIM 资源的定义,系统是不会自动清除的,所以系统管理员要定期清除不再需要的 NIM 资源定义。
    -bash-3.2# xcat2nim -t node -r lparp520s1 
    -bash-3.2# rmnimimage 610BaseImage

使用 xCAT 安装 AIX diskless 节点

上面我们介绍了 diskfull 有盘节点的系统安装,xCAT 同时还支持 diskless 无盘节点的系统安装。例如,我们在 HMC 上使用 LPAR 划分 lparp520s4 节点时候,只给其定义了虚拟以太网, 并没有定义任何的虚拟 SCSI 适配器给它。这个 diskless 无盘节点的系统文件是需要从 NIM 主机通过 NFS-mount 挂载的。

  1. 第一步同样是制作 diskless 无盘系统启动镜像文件。 diskless 无盘计算节点在启动时候是从 NIM 主机获取操作系统文件并加载的。NIM 主机通过 NFS 给无盘节点提供网络启动镜像、root 文件目录以及 /usr 文件目录,也就是 Shared Product Object Tree (SPOT)。下面我们通过前面已经创建出的 diskfull 有盘节点 610BaseImage 系统镜像的 lpp_source 资源来创建 diskless 无盘计算节点的 Shared Product Object Tree (SPOT)。 同样使用的是 mknimimage 命令:-t 参数指明镜像类型,默认是 diskfull 的,所以这里要指定为 diskless;-s 指定源目标文件位置,创建命名为 610_diskless 的无盘系统镜像。
    -bash-3.2# mknimimage -t diskless -s 610BaseImage_lpp_source 610_diskless 
    Creating a NIM SPOT resource. This could take a while.

    The following xCAT osimage definition was created. Use the xCAT lsdef command
    to view the xCAT definition and the AIX lsnim command to view the individual
    NIM resources that are included in this definition.
    Object name: 610_diskless
    dump=610_diskless_dump
    imagetype=NIM
    lpp_source=610BaseImage_lpp_source
    nimtype=diskless
    osname=AIX
    paging=610_diskless_paging
    root=610_diskless_root
    spot=610_diskless
  2. 安装 SSH、SSL 等 AIX 计算节点必备的各种软件到 SPOT。 对于 diskfull 有盘计算节点,这些软件是直接安装到 LPAR 节点的本地磁盘的;对于 diskless 无盘节点,只能是安装到 SPOT 中了。可以使用 chcosi 系统命令来达到目的。 chcosi 命令是用来管理通用操作系统镜像(COSI)文件的,其中参数 -i 表示将被 install 安装的软件,-s 指定镜像的源文件位置,-b 指定 nim 的 installp_bundle 的资源, 610_diskless 即是我们正要操作的操作系统镜像名称。
    -bash-3.2# chcosi -i -s 610BaseImage_lpp_source -b xCATaixSSL 610_diskless 
    ...
    -bash-3.2# chcosi -i -s 610BaseImage_lpp_source -b xCATaixSSH 610_diskless
    ...
  3. 获取主机 MAC 地址 与 diskfull 有盘计算节点的该步安装步骤相同,所以这里不再描述。
  4. 初始化 NIM 资源的定义 与 diskfull 有盘计算节点的该步安装不同的是,这里我们使用 mkdsklsnode 命令来初始化 NIM 资源的定义,其中 -i 参数用来指定将用于初始化目标节点 lparp520s4 的镜像名称:
    -bash-3.2# mkdsklsnode -i 610_diskless lparp520s4 
    Copying NIM resources to the xCAT service nodes. This could take a while.
    Creating a SPOT resource on lparp520s4. This could take a while.
    lparp520s4: Initializing NIM machine 'lparp520s4'. This could take a
    while. Fri Apr 16 05:07:18 CDT 2010
    lparp520s4: AIX/NIM diskless nodes were initialized.
  5. 初始化网络启动 与 diskfull 有盘计算节点的该步安装步骤相同,所以这里不再描述。
  6. 清理工作 与 diskfull 有盘计算节点的该步安装不同的是,这里我们使用 rmdsklsnode 命令来清除 NIM 资源的定义:
    -bash-3.2# rmdsklsnode lparp520s4 
    -bash-3.2# rmnimimage 610_diskless

使用 xCAT 管理 AIX 集群节点

在单机上面很简单的一些管理功能,对于一个集群而言,有时候却是很麻烦和不方便的。 比如说将集群中所有的节点重新启动这个基本功能,如果是一个大型集群,集群管理员恐怕要不断重复操作,并且还要花费相当长的时间才能手工完成。 现在有了 xCAT 集群管理工具,管理员可就轻松多了。xCAT 对集群的管理功能大致可以分为三个方面:硬件管理、软件管理以及监控功能。

硬件管理

  • 远程硬件控制(rpower 等脚本命令):启动、关闭、重启、状态查询等等。例如可以使用 rpower 命令关闭 off 或是启动 on 某个节点:
    -bash-3.2# rpower lparp520s1 off 
    -bash-3.2# rpower lparp520s1 on
  • 远程终端管理(rcons、wcons 等脚本命令)。例如可以使用 rcons 来控制管理 lparp520s1 目标节点:
    -bash-3.2# rcons lparp520s1 
    [Enter `^Ec?' for help]
    u
    [hosts]
    lparp520s1 * up root@localhost
    [disconnect]
  • 硬件信息收集(getmacs、rscan、rinv、rvitals、reventlog 等脚本命令):网卡 MAC 地址、硬件状态信息、硬件参数信息、硬件日志等等。 例如使用 rscan 收集,其中 -z 参数表示采用 Stanza 格式输出:
    -bash-3.2# rscan -z lparp520s1 > lparp520s1.stanza 
    -bash-3.2# cat lparp520s1.stanza
    lparp520s1:
    objtype=node
    nodetype=lpar
    id=2
    mtm=8203-E4A
    serial=0681894
    hcp=myhmc
    pprofile=06-81894
    parent=
    groups=lpar,all
    mgt=hmc
    cons=hmc
  • 远程自动网络安装:前一个章节“使用 xCAT 给集群节点安装 AIX 操作系统”即是。
  • 无盘工作站方式:前一个章节“使用 xCAT 给集群节点安装 AIX 操作系统”中第二部分“使用 xCAT 安装 AIX diskless 节点”即是。

软件管理

  • 软件安装:
    • 可以将需要安装的软件文件集更新到 lpp_source 文件夹下,从而通过重建 NIM 镜像和操作系统镜像文件(nimnodecust 脚本命令)的办法达到安装软件的目的: 例如首先使用 nim 的 update 操作来更新 610BaseImage_lpp_source 资源:属性参数 source 指定将增加的软件源文件目录的位置,gencopy_flags 指定 gencopy 操作时的属性, packages=ALL 表明增加源文件目录下的所有文件集。接着使用 mknimimage 命令重建出名为 610BaseImage_update 的操作系统镜像文件:-m 参数指定 nim 安装方式,-s 指定资源源文件;
       -bash-3.2# nim -o update -a source=/tmp/openssh -a gencopy_flags=X 
      -a packages=ALL 610BaseImage_lpp_source
      -bash-3.2# mknimimage -m rte -s 610BaseImage_lpp_source 610BaseImage_update
      Creating a NIM SPOT resource. This could take a while.

      The following xCAT osimage definition was created. Use the xCAT lsdef command
      to view the xCAT definition and the AIX lsnim command to view the individual
      NIM resources that are included in this definition.

      Object name: 610BaseImage_update
      bosinst_data=update_bosinst_data
      imagetype=NIM
      lpp_source=610BaseImage_lpp_source
      nimmethod=rte
      nimtype=standalone
      osname=AIX
      spot=update
      -bash-3.2# nimnodecust -s 610BaseImage_lpp_source -b xCATaixSSL,xCATaixSSH
      lparp520s1
    • 也可以采用修改 xCAT 软件的 postscripts 配置脚本,使得所需软件将在节点安装操作系统后接着执行软件的安装: 例如通过 chdef 命令增加 setupntp 系统服务启动到 postscripts。也可以将自行创建 aixOpensslinstall 配置文件, 接着同样使用 chdef 将该启动脚本加入到目标节点 lparp520s1 的 postscripts 中;
      		-bash-3.2# tabdump postscripts 
      #node,postscripts,comments,disable
      "xcatdefaults","syslog,aixremoteshell,otherpkgs,syncfiles",,
      "service","servicenode",,
      -bash-3.2# chdef -t node -o xcatdefaults postscripts="
      syslog,aixremoteshell,otherpkgs,syncfiles,setupntp"
      Object definitions have been created or modified.
      New object definitions 'xcatdefaults' have been created.
      -bash-3.2# cat /install/postscripts/aixOpensslinstall
      #!/bin/ksh
      echo "start aixOpensslinstall script" >>/tmp/aixOpensslinstall.log
      logger -t xcat "start aixOpensslinstall script"
      RESNAME=$NODE
      NFSSERVER=$MASTER
      POSTDIR=/post
      POST_DIR=${INSTALLDIR}${POSTDIR}
      logger -t xcat "Install: mounting /post"
      mkdir $POSTDIR >>/tmp/aixOpensslinstall.log
      mount $NFSSERVER:$POST_DIR $POSTDIR >>/tmp/aixOpensslinstall.log
      sleep 2
      installp -aXg -Y -d$POSTDIR/otherpkgs/AIX openssl.man.en_US openssl.license
      openssl.base >>/tmp/aixOpensslinstall.log
      installp -aXg -Y -d$POSTDIR/otherpkgs/AIX openssh.msg.en_US openssh.license
      openssh.base openssh.base.server openssh.base.client
      >>/tmp/aixOpensslinstall.log
      unmount $POSTDIR
      -bash-3.2# chdef -t node -o lparp520s1 postscripts="aixOpensslinstall"
      Object definitions have been created or modified.
    • 当然也可以直接在管理节点上使用远程命令的方式安装。例如使用 xdsh 命令给远程目标节点 lparp520s1 安装 openssl 和 openssh 软件:
      -bash-3.2# xdsh lparp520s1 installp -aXg -Y -d/post/otherpkgs/AIX 
      openssl.man.en_US openssl.license openssl.base >>/tmp/aixOpensslinstall.log
      -bash-3.2# xdsh lparp520s1 installp -aXg -Y -d/post/otherpkgs/AIX
      openssh.msg.en_US openssh.license openssh.base openssh.base.server
      openssh.base.client >>/tmp/aixOpensslinstall.log
  • 软件配置(sinv 等脚本命令)。例如使用 sinv 命令检测集群中目标节点的软件配置,其中 -c 参数指定执行命令行, -p 参数指定存放 xdsh 命令执行结果的 template 存放路径,-t 参数指定次数,-r 参数指明检测结束后删除 template 文件,-o 指定检测报告输出文件位置:
    -bash-3.2# sinv -c "xdsh lparp520s1 rpm -qa | grep perl" -p /tmp/sinv.template 
    -t 2 -r -o /tmp/sinv.output
    Building Report.

    Command Complete.
    Check report in /tmp/sinv.output.
    -bash-3.2# cat /tmp/sinv.output
    Command started with following input.
    xdsh cmd:xdsh lparp520s1 rpm -qa | grep perl.
    Template path:/tmp/sinv.template.
    Template cnt:2.
    Remove template:YES.
    Output file:/tmp/sinv.output.
    Exactmatch:NO.
    Ignorefirst:NO.
    Seed node:lparp520s1.
    file:None.

    The following nodes match /tmp/sinv.template:
    lparp520s1
  • 分布式执行(pcons、pping、ppping、prsync、pscp、psh、xdcp、xdsh、xdshbak、xcoll 等脚本命令):分布式文件拷贝、分布式命令执行。 例如使用 pping 分布式 ping 存在 lpar 组中的各个目标节点;或是使用 xdcp 分布式拷贝 xcataixscript 到各节点的 /tmp 目录;或是使用 xdsh 分布式在各节点上执行 perl 脚本 xcataixscript。
    -bash-3.2# pping lpar 
    lparp520s1: ping
    lparp520s2: ping
    lparp520s3: ping
    lparp520s4: ping
    -bash-3.2# xdcp lpar /install/postscripts/xcataixscript /tmp
    -bash-3.2# xdsh lpar perl /tmp/xcataixscript

监控功能

  • 节点状态信息监控(nodestat 等脚本命令):xCAT 软件可以维护节点的当前状态。例如使用 nodestat 获取存在于 lpar 组中各节点当前状态:
    -bash-3.2# nodestat lpar 
    lparp520s1: sshd
    lparp520s2: sshd
    lparp520s3: sshd
    lparp520s4: sshd
  • 插件式的第三方监控软件的支持(monadd、moncfg、monls、monstart、monstop 等脚本命令):
    • 第三方软件可以用来提供更加丰富的监控功能。
    • xCAT 通过插件的方式来接收和处理第三方监控软件信息。
    • 当前支持的第三方监控软件(库)有 SNMP、Nagios、Ganglia、RMC 等等。
    例如首先使用 monadd 给 xCAT 集群注册一个 rmcmon 监控插件; 接着使用 moncfg 命令给 lpar 组配置第三方监控模块,-r 参数指定命令同样在远程节点执行; 然后使用 monstart 启动第三方监控模块监控 xCAT 集群;最后 monls 命令是用来列出 xCAT 集群中当前所有可用的第三方监控模块。
    -bash-3.2# monadd rmcmon -a 
    -bash-3.2# moncfg rmcmon lpar -r
    -bash-3.2# monstart rmcmon
    -bash-3.2# monls -a
    rmcmon monitored
    xcatmon not-monitored
    pcpmon not-monitored
    snmpmon not-monitored
    gangliamon not-monitored

总结

本文首先介绍了 xCAT 软件的概念以及它的工作原理, 接着通过笔者自己在 IBM® Power 520 Express® (8203-E4A) 上的实践工作经历,演示了如何使用 xCAT 简化 AIX 集群的部署安装的具体方法和步骤, 然后笔者将自己在使用 xCAT 管理 AIX 集群中用过的各种方法和步骤总结归纳出来,从而方便了 AIX 集群使用者了解 xCAT 相关的问题,以便于更好的管理和维护基于 xCAT 的 AIX 集群。

加载中
返回顶部
顶部