2020년 1월 28일 화요일

CentOS 환경의 IBM POWER9 서버에 xCAT 설치하기



xCAT은 eXtreme Cluster/Cloud Administration Toolkit의 약자로서, 대형 HPC cluster의 설치와 운영에 사용되는 open source tool입니다.   설치는 IBM POWER9 (ppc64le) 환경에서도 x86 환경과 동일하게 간단합니다.  여기서는 CentOS 7.6 환경에서 수행해보겠습니다.

-bash-4.2# cat /etc/redhat-release
CentOS Linux release 7.6.1810 (AltArch)

먼저 go-xcat script를 다음과 같이 download 받습니다.

-bash-4.2# wget https://raw.githubusercontent.com/xcat2/xcat-core/master/xCAT-server/share/xcat/tools/go-xcat -O - >/tmp/go-xcat

-bash-4.2# chmod a+x /tmp/go-xcat

이제 이 script를 install이라는 argument와 함께 수행합니다.   그러면 Yes를 한번 눌러주는 것 외에는 사실상 더 해줄 것이 없습니다.

-bash-4.2# /tmp/go-xcat install
Operating system:   linux
Architecture:       ppc64le
Linux Distribution: centos
Version:            7
go-xcat Version:    1.0.45


Reading repositories ...... done

xCAT Core Packages
==================

Package Name                Installed                      In Repository
------------                ---------                      -------------
perl-xCAT                   (not installed)                2.15-snap201911041517
xCAT                        (not installed)                2.15-snap201911041517
xCAT-SoftLayer              (not installed)                2.15-snap201911041517
xCAT-buildkit               (not installed)                2.15-snap201911041517
xCAT-client                 (not installed)                2.15-snap201911041517
xCAT-confluent              (not installed)                2.15-snap201911041517
xCAT-csm                    (not installed)                2.15-snap201911041517
xCAT-genesis-scripts-ppc64  (not installed)                2.15-snap201911041517
xCAT-genesis-scripts-x86_64 (not installed)                2.15-snap201911041517
xCAT-openbmc-py             (not installed)                2.15-snap201911041518
xCAT-probe                  (not installed)                2.15-snap201911041517
xCAT-server                 (not installed)                2.15-snap201911041517
xCAT-test                   (not installed)                2.15-snap201911041517
xCAT-vlan                   (not installed)                2.15-snap201911041517
xCATsn                      (not installed)                2.15-snap201911041517

xCAT Dependency Packages
========================

Package Name                Installed                      In Repository
------------                ---------                      -------------
elilo-xcat                  (not installed)                3.14-4
fping                       (not installed)                2.4b2_to-2
goconserver                 (not installed)                0.3.2-snap201909171016
grub2-xcat                  (not installed)                2.02-0.76.el7.1.snap2019051602
ipmitool-xcat               (not installed)                1.8.18-0
lldpd                       (not installed)                0.7.15-6.1
net-snmp-perl               (not installed)                5.7.2-38.el7_6.2
perl-AppConfig              (not installed)                1.66-20.el7
perl-Crypt-CBC              (not installed)                2.33-2.el7
perl-Crypt-Rijndael         (not installed)                1.09-2.ael7a
perl-Expect                 (not installed)                1.21-1
perl-HTML-Form              (not installed)                6.03-6.el7
perl-HTTP-Async             (not installed)                0.30-2
perl-IO-Stty                (not installed)                0.03-1
perl-IO-Tty                 (not installed)                1.10-11.el7
perl-JSON                   (not installed)                2.59-2.el7
perl-Net-HTTPS-NB           (not installed)                0.14-2
perl-Net-Telnet             (not installed)                3.03-19.el7
perl-SOAP-Lite              (not installed)                0.710.08-1
perl-XML-Simple             (not installed)                2.20-5.el7
pyodbc                      (not installed)                3.0.7-1.ael7a
syslinux-xcat               (not installed)                3.86-2
systemconfigurator          (not installed)                2.2.11-1
systemimager-client         (not installed)                4.3.0-0.1
systemimager-common         (not installed)                4.3.0-0.1
systemimager-server         (not installed)                4.3.0-0.3
xCAT-genesis-base-ppc64     (not installed)                2.14.5-snap201811160710
xCAT-genesis-base-x86_64    (not installed)                2.14.5-snap201811190037
xnba-undi                   (not installed)                1.0.3-131028
yaboot-xcat                 (not installed)                1.3.17-rc1

xCAT is going to be installed.
Continue? [y/n] y

....
Install  15 Packages (+95 Dependent packages)

Total download size: 257 M
Installed size: 713 M
Downloading packages:
--------------------------------------------------------------------------------
Total                                              2.9 MB/s | 257 MB  01:29
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
  Installing : perl-Data-Dumper-2.145-3.el7.ppc64le                       1/110
  Installing : 1:perl-Compress-Raw-Zlib-2.061-4.el7.ppc64le               2/110
  Installing : perl-Sys-Syslog-0.33-3.el7.ppc64le                         3/110
  Installing : ksh-20120801-139.el7.ppc64le                               4/110
  Installing : perl-XML-NamespaceSupport-1.11-10.el7.noarch               5/110
  Installing : apr-1.4.8-3.el7_4.1.ppc64le                                6/110
  Installing : perl-XML-Parser-2.41-10.el7.ppc64le                        7/110
  Installing : apr-util-1.5.2-6.el7.ppc64le                               8/110
  Installing : 12:dhcp-libs-4.2.5-68.el7.centos.1.ppc64le                 9/110
...
  tftp.ppc64le 0:5.2-22.el7
  tftp-server.ppc64le 0:5.2-22.el7
  trousers.ppc64le 0:0.3.14-2.el7
  unzip.ppc64le 0:6.0-19.el7
  xCAT-probe.noarch 4:2.15-snap201911041517
  yajl.ppc64le 0:2.0.4-4.el7

Complete!

xCAT has been installed!
========================

If this is the very first time xCAT has been installed, run one of the
following commands to set the environment variables.

For sh:
    source /etc/profile.d/xcat.sh

For csh:
    source /etc/profile.d/xcat.csh



이렇게 설치가 쉬운 이유는 go-xcat이라는 script에서 자동으로 xcat 관련 YUM repository를 만들었기 때문입니다.

-bash-4.2#  yum repolist
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
repo id                                  repo name                                          status
base                                     CentOS-7 - Base                                    7,477
extras                                   CentOS-7 - Extras                                    403
updates                                  CentOS-7 - Updates                                 1,873
xcat-core                                xcat-core                                             21
xcat-dep                                 xcat-dep                                              30
repolist: 9,804


설치 뒤에는 자동으로 xCAT daemon이 수행되는데, 제대로 떠있는지 다음과 같이 확인합니다.

-bash-4.2#  systemctl status xcatd
● xcatd.service - xCAT management service
   Loaded: loaded (/usr/lib/systemd/system/xcatd.service; enabled; vendor preset: disabled)
   Active: active (running) since Tue 2020-01-28 02:48:59 EST; 7min ago
 Main PID: 14973 (xcatd: SSL list)
   CGroup: /system.slice/xcatd.service
           ├─14972 /usr/sbin/in.tftpd -v -l -s /tftpboot -m /etc/tftpmapfile4xcat.conf
           ├─14973 xcatd: SSL listener
           ├─14974 xcatd: DB Access
           ├─14975 xcatd: UDP listener
           ├─14976 xcatd: Discovery worker
           ├─14977 xcatd: install monitor
           └─14978 xcatd: Command log writer

Jan 28 02:48:28 p636-kvm1 xcat[14943]: xcatd is going to start...
Jan 28 02:48:58 p636-kvm1 xcat[14975]: xcatd: UDP listener process 14975 start
Jan 28 02:48:58 p636-kvm1 xcat[14977]: xcatd: install monitor process 14977 start
Jan 28 02:48:58 p636-kvm1 xcat[14978]: xcatd: Command log writer process 14978 start
Jan 28 02:48:58 p636-kvm1 xcat[14976]: xcatd: Discovery worker process 14976 start
Jan 28 02:48:59 p636-kvm1 xcatd[14939]: Starting xcatd [  OK  ]
Jan 28 02:48:59 p636-kvm1 systemd[1]: Started xCAT management service.
Jan 28 02:49:02 p636-kvm1 xcat[15071]: xCAT: Allowing mknb ppc64 for root from localhost
Jan 28 02:49:47 p636-kvm1 xcat[15089]: xCAT: Allowing mknb x86_64 for root from localhost
Jan 28 02:52:45 p636-kvm1 xcat[15209]: xCAT: Allowing lsdef for root from localhost


xCAT daemon의 버전은 다음과 같이 확인할 수 있습니다.

-bash-4.2# source /etc/profile.d/xcat.sh

-bash-4.2# lsxcatd -a
Version 2.15 (git commit 218c6d3acc8bdbd7f72115e48cda2b1a3613d18a, built Mon Nov  4 15:17:59 EST 2019)
This is a Management Node
dbengine=SQLite


이제 간단한 xCAT 명령을 사용해보겠습니다.  xCAT에서 network을 등록하고 관리하는 방법입니다.  아래와 같이 먼저 makenetworks 명령을 통해 이미 구성되어 있는 NIC을 발견하여 network object를 만들어야 하는데, 실은 xCAT이 설치되고 구성될 때 이미 만들어져 있습니다.

-bash-4.2# makenetworks
Warning: [p636-kvm1]: The network entry '129_40_XXX_48-255_255_255_240' already exists in xCAT networks table. Cannot create a definition for '129_40_XXX_48-255_255_255_240'

이 network은 다음과 같이 볼 수 있습니다.

-bash-4.2# lsdef -t network
129_40_XXX_48-255_255_255_240  (network)

이것의 이름을 좀더 쉬운 이름으로 바꾸어 보겠습니다.

-bash-4.2# chdef -t network 129_40_XXX_48-255_255_255_240 -n primary_network
Changed the object name from 129_40_XXX_48-255_255_255_240 to primary_network.

-bash-4.2# lsdef -t network
primary_network  (network)

자세히 보기 위해서는 다음과 같이 할 수 있습니다.

-bash-4.2# lsdef -t network primary_network
Object name: primary_network
    gateway=129.40.XXX.62
    mask=255.255.255.240
    mgtifname=eth0
    mtu=9000
    net=129.40.XXX.48
    tftpserver=<xcatmaster>