OpenLMIによるシステム管理

2015年2月5日(木)
古賀 政純

今回は、CentOS 7で新しく搭載された管理ツール「OpenLMI」について解説します。

CentOS 7のOpenLMIによるシステム管理

Linuxシステムの管理には、様々なコマンドがあります。例えば、OSの論理ボリュームを管理するLVM一つをとっても、物理ボリュームやボリュームグループの管理コマンド、論理ディスクの管理コマンドなど様々なコマンドやオプションを覚えなければなりません。OSの管理コマンドもバージョンによってオプションや書式が変わるものも少なくありません。また、管理コマンドをいくつも駆使する場合は、ユーザーがバッチ処理用のスクリプトを個々に作成しなければならず、一連の管理の自動化を行うためには、管理者のコマンドの利用知識とスクリプト開発のスキルに依存している場合が殆どです。近年、Linuxシステムを取り巻く世界では、管理の簡素化、自動化を実現するための標準化の必要性が高まってきています。一連の定型作業は、できるだけ標準化・自動化し、様々な種類の作業を単一のコマンド体系に集約することで、ユーザーのスキル習得の負担を減らし、簡素なものにしなければならないという考え方です。また、ローカルのLinuxシステムの管理の簡素化だけではなく、遠隔管理の仕組みも含めた標準化が検討されています。例えば、遠隔地にあるデータセンターのサーバーの電源管理やコンソール出力管理、不正侵入の監視システムのための通報の仕組みなどをいかに標準化できるかについて議論され始めています。Linuxシステム全体の管理の標準化は、まだ発展途上の初期段階ですが、Linuxベースの管理・監視の仕組みが大きく見直されようとしており、その一つが今回取り上げるOpenLMIです。

2014年4月にサンフランシスコで開催されたRed Hat Summit 2014のレッドハット社の展示ブースで披露されたOpenLMIのデモの様子。RHEL7で認識されたストレージデバイスをOpenLMIで簡単に管理できることが紹介されていた

図1:2014年4月にサンフランシスコで開催されたRed Hat Summit 2014のレッドハット社の展示ブースで披露されたOpenLMIのデモの様子。RHEL7で認識されたストレージデバイスをOpenLMIで簡単に管理できることが紹介されていた

OpenLMIのアーキテクチャ

OpenLMI(Open Linux Management Infrastructure)は、管理エージェントの集合体です。システムの状態を表示や変更を簡単に行うことができます。また、遠隔のLinuxサーバーの管理・監視のための標準的なAPIも提供しています。管理サーバーまたはクライアント側は、コマンドラインやスクリプト、python、Java、C/C++などから呼び出すことができます。一方、遠隔地にある管理対象サーバーは、APIを通じて、各種コマンドと通信を行います。OpenLMIでは、この管理対象サーバー側に存在する各種コマンド類(例:nmcli、yum、lvcreate、mkfs.xfs、parted、systemctl等)を抽象化・隠蔽します。OpenLMIは、OpenPegasusと呼ばれるオブジェクトブローカーを利用します。オブジェクトブローカーであるOpenPegasusは、コマンドやクエリ、イベント等を管理します。また、OpenPegasusは、WBEM(Web-Based Enterprise Management)にも対応しており、情報セキュリティ上の懸念点が指摘されているSNMPにとってかわるプロトコルで通信を行うことができます。OpenLMIは、ジョブの終了、ストレージのハードディスクドライブの故障、NICの構成変更の通知、パスワード変更の通知といったイベント処理が可能です。OpenLMIは、遠隔のLinuxサーバーの管理・監視も考慮しているため、セキュリティについても考慮されており、TLS(https)を使用し、暗号化通信を行います。また監視対象にすべきかどうかの判断についての認証の仕組みも取り込まれています。OpenLMIでは、管理対象サーバーのユーザーのアカウントが利用されますので、全管理対象サーバーにおいてユーザー作成とパスワード設定等を一つ一つ行うことで管理は可能ですが、大規模システムにおいては、統合的なユーザーID管理ソフトウェアの導入が強く推奨されています。

OpenLMIによるシステム管理の概念図。OpenLMIが提供する管理コマンドやスクリプト等を使って、遠隔にある管理対象サーバーを管理する

図2:OpenLMIによるシステム管理の概念図。OpenLMIが提供する管理コマンドやスクリプト等を使って、遠隔にある管理対象サーバーを管理する

OpenLMIのインストール手順

以下では、CentOS 7におけるOpenLMIを使った具体的な管理・監視手順を述べます。ただし、OpenLMIは、まだ発展途上であるため、従来のコマンド群を直接使用したほうがよい場合も存在します。それらの留意点も含めて解説します。まずは、CentOS 7にOpenLMIをインストールしてみましょう。CentOS 7において、OpenLMIは、RPMパッケージで提供されており、をyumコマンドでインストールできます。管理対象サーバーにインストールしてください。

# yum install -y openlmi

OpenLMIに必要なサービスを起動します。OpenLMIに含まれるtog-pegasusサービスを起動します。

# systemctl start tog-pegasus
# systemctl enable tog-pegasus

OpenLMIはポート番号5989を使用しますので、firewall-cmdコマンドで、当該ポートを開放します。また、今回は、SELinuxを無効にしてあります。

# firewall-cmd --add-port=5989/tcp
# firewall-cmd --permanent --add-port=5989/tcp
# firewall-cmd --reload
# setenforce 0

top-pegasusパッケージをインストールすると、pegasusユーザーが作成されていますので、pegasusユーザーのパスワードを設定します。pagasusユーザーは、管理対象サーバーが遠隔にある場合に、リモートアクセスを行うために必要となります。OpenPegasusで提供されるCIMOMは、rootまたは、pegasusユーザーでHTTP及びHTTPSによるアクセスを許可します。標準では、pegasusユーザーがCIMOM にアクセスできる設定になっています。

# passwd pegasus

OpenLMIは、CentOS 7のEPELリポジトリに、スクリプト類が用意されていますので合わせてインストールしておきます。

# yum install -y http://dl.fedoraproject.org/pub/epel/7/x86_64/e/epel-release-7-5.noarch.rpm
# yum install -y openlmi-scripts*

【注意】

2015年1月時点でのEPELのリポジトリで提供されているファイルは、epel-release-7-5.noarch.rpmですが、今後のアップデートによりファイルのバージョンが新しくなりURLが変更される可能性があります。そのため、上記のURLに存在するepel-release RPMパッケージの最新を事前に確認してください。

OpenLMIにおいて、PEM形式の証明書ファイルをコピーします。証明書ファイルをコピーしたら、CA(Certificate Authority)の証明書を管理するupdate-ca-trustコマンドを使ってルート証明書を追加します。

# cp /etc/Pegasus/server.pem /etc/pki/ca-trust/source/anchors/managed-machine-cert.pem
# update-ca-trust extract

【注意】

上記の例は、公式の認証機関による署名入りの証明書を利用する手順ではなく、自己証明書による設定例となります。本番環境においては、公式の認証機関におる署名入り証明書を使うようにして下さい。

OpenLMIによるハードウェア情報の取得

OpenLMIを使って管理対象サーバーのハードウェア情報を取得してみます。管理対象サーバーにログインし、ローカルホストの情報を取得してみます。OpenLMIは、主にlmiコマンドで管理を行います。

# lmi -h localhost hwinfo
Hostname:         centos70n02.jpn.linux.hp.com

Chassis Type:     SMBIOS Reseved
Manufacturer:     HP
Model:            Not Specified (ProLiant DL385p Gen8)
Serial Number:    CN7230040Z
Asset Tag:        CN7230040Z
Virtual Machine:  N/A

Motherboard info: N/A

CPU:              AMD Opteron(TM) Processor 6238
Topology:         2 cpu(s), 24 core(s), 24 thread(s)
Max Freq:         3500 MHz
Arch:             x86_64

Memory:           32.0 GB
Modules:          8.0 GB, DDR3 (DIMM), 1333 MHz, HP, Not Specified
                  8.0 GB, DDR3 (DIMM), 1333 MHz, HP, Not Specified
                  8.0 GB, DDR3 (DIMM), 1333 MHz, HP, Not Specified
                  8.0 GB, DDR3 (DIMM), 1333 MHz, HP, Not Specified
Slots:            4 used, N/A total

OS上で設定されたホスト名の他に、管理対象サーバーの製造元のメーカー名や、サーバーのモデル名、CPUの種類、CPUソケット数、CPUコア数、CPU動作周波数、メモリ容量などの情報が取得できていることがわかります。メモリモジュールの情報やメモリの動作周波数も、人間にとって分かりやすい形で表示されています。従来であれば、cat /proc/cpuinfoやvmstatコマンド等の各種コマンドやオプション、書式を覚える必要がありましたが、OpenLMIが提供するlmiコマンドでこれらの情報を一括取得することができ、管理者のスキル習得の手間を大幅に削減することができます。

OS情報、ファイヤウォール、ネットワークインタフェース等のシステム概要の表示

OpenLMIは、ハードウェア情報だけでなく、管理対象サーバーのOSに関連するシステムの概要を表示することが可能です。lmiコマンドを使って、ハードウェア情報に加え、OS情報、ファイヤウォール、ネットワークインタフェース等のシステム情報をまとめて表示するには、以下のようにします。

# lmi -h localhost system
Computer Name:    centos70n02.jpn.linux.hp.com
Hardware:         HP ProLiant DL385p Gen8
Processors:       2x AMD Opteron(TM) Processor 6238
Memory:           32.0 GB
OS:               CentOS Linux release 7.0.1406 (Core)
Kernel:           3.10.0-123.el7.x86_64
Firewall:         on (firewalld)
Logging:          on (journald)
 
Networking
  NIC 1
    Name:         br0
    Status:       In Service
    IPv4 Address: 172.16.3.82
    IPv6 Address: fe80::2e76:8aff:fe5d:f36c
    MAC Address:  2C:76:8A:5D:F3:6C
  NIC 2
    Name:         eth0
    Status:       In Service
    MAC Address:  2C:76:8A:5D:F3:6C
  NIC 3
    Name:         eth1
    Status:       In Service
    IPv4 Address: 16.147.201.23
    IPv6 Address: fe80::2e76:8aff:fe5d:f36d
    MAC Address:  2C:76:8A:5D:F3:6D
  NIC 4
    Name:         eth2
    Status:       Starting
    MAC Address:  2C:76:8A:5D:F3:6E
  NIC 5
    Name:         eth3
    Status:       Starting
    MAC Address:  2C:76:8A:5D:F3:6F
  NIC 6
    Name:         docker0
    Status:       Starting
    MAC Address:  56:84:7A:FE:97:99
  NIC 7
    Name:         virbr0
    Status:       Starting
    MAC Address:  16:54:77:BE:DA:2D

CPU、メモリ、NIC以外にも、OSで稼働中のカーネルのバージョン、ファイヤウォール、ロギングの有無の情報が取得できていることがわかります。

OpenLMIによるストレージ管理

次に管理対象サーバーに接続されているローカルのストレージについての情報を取得してみます。

# lmi -h localhost storage tree
Name        Size         Format
/dev/sda    599932844032 MS-DOS partition table
┣/dev/sda1 524288000    xfs
┣/dev/sda2 16852713472  swap
┣/dev/sda3 53687091200  xfs
┣/dev/sda4 1024         Unknown
┗/dev/sda5 528866082816 xfs

lmiコマンドを使ったストレージデバイスの表示。デバイス/dev/sda上に作成された各パーティション、サイズ、フォーマットを分かりやすく一覧表示できる

上記の例では、ローカルに接続されたストレージデバイスとして、MS-DOSパーティションテーブルを含む/dev/sdaの配下に、/dev/sda1から/dev/sda5までの5つのパーティションが存在することがわかります。以下のように、ローカルに接続されているストレージの一覧を取得することもできます。

# lmi -h localhost storage list
Name                                               Size         Format
/dev/sda1                                          524288000    xfs
/dev/sda2                                          16852713472  swap
/dev/sda3                                          53687091200  xfs
/dev/sda4                                          1024         Unknown
/dev/sda5                                          528866082816 xfs
/var/lib/docker/devicemapper/devicemapper/data     107374182400 Unknown
/var/lib/docker/devicemapper/devicemapper/metadata 2147483648   Unknown
/dev/loop0                                         107374182400 ext4
/dev/loop1                                         2147483648   Unknown
/dev/sda                                           599932844032 MS-DOS partition table
/dev/sr0                                           599932844032 Unknown

しかし、2015年1月下旬時点でのCentOS 7に対応した最新のOpenLMIでは、RAIDコントローラの種類や光学デバイス(/dev/sr0)の機種等の詳細な情報を取得することができない点に留意する必要があります。CentOS 7において、RAIDコントローラや光学デバイスの機種の情報を取得するには、現時点で、以下のようにOpenLMIではなく、lsscsiパッケージに含まれるlsscsiマンドを使用する必要があります。

# lsscsi
[0:0:0:0]    disk    HP       LOGICAL VOLUME   4.68  /dev/sda
[0:3:0:0]    storage HP       P420i            4.68  -  ←HP SmartArray P420i RAIDコントローラ
[3:0:0:0]    cd/dvd  HP       DV-W28S-W        G.W3  /dev/sr0 ←DVDドライブの機種「DV-W28S-W」

OpenLMIによるソフトウェアRAIDの管理

OpenLMIでは、ソフトウェアRAIDの管理が可能です。以下では、物理ディスク/dev/sdb、/dev/sdc、/dev/sddを使ってソフトウェアRAID5を構成する例を紹介します。まず、CentOS 7上から認識されているストレージデバイス/dev/sdb、/dev/sdc、/dev/sddを使ってRAID5を構成するRAIDセット「myraid001」を作成します。

# lmi storage raid create --name myraid001 5 sdb sdc sdd

RAIDセット「myraid001」からボリュームグループ「myvg001」を作成します。

# lmi storage vg create myvg001 myraid001

ボリュームグループ「myvol001」から論理ボリューム「myvol001」を作成します。今回は、論理ボリュームのサイズは400GBとします。論理ボリュームは、/dev/mapperディレクトリ配下に作成されます。

# lmi storage lv create myvg001 myvol001 400G
# ls -l /dev/mapper/myvg001-myvol001
lrwxrwxrwx 1 root root 7 11月 17 15:36 /dev/mapper/myvg001-myvol001 -> ../dm-2

論理ボリューム「myvol001」からファイルシステムを作成します。ファイルシステムは、XFSでフォーマットします。

# lmi storage fs create xfs myvol001

マウントポイント/myvol001ディレクトリを作成し、フォーマットした論理ボリュームをマウントします。

# mkdir /myvol001
# lmi storage mount create /dev/mapper/myvg001-myvol001 /myvol001/

作成したRAIDボリューム「myraid001」の情報を確認します。デバイス名やRAIDレベル、構成する物理デバイス等を確認することが可能です。

# lmi storage raid show
/dev/disk/by-id/md-name-centos70n02:myraid001:
Name         Value
Type         MD RAID
DeviceID     /dev/disk/by-id/md-name-centos70n02:myraid001
Name         /dev/md/myraid001
ElementName  myraid001
Total Size   1717043200000
Block Size   512
RAID Level   5
RAID Members /dev/sdb /dev/sdc /dev/sdd
Data Format  software RAID

最後に、論理ボリュームが指定したファイルシステムで正常にマウントされているかをdfコマンドで確認後、データの読み書きができるかを確認してください。

OpenLMIによるネットワークデバイス管理

lmiコマンドを使って、オンボードNIC、追加NICに関係なく、管理対象サーバーに装着されているNICや仮想的なインタフェースを表示することができます。インタフェース名、現在の状態、MACアドレスの一覧を取得することができます。また、コンテナーで作成した仮想的なインタフェースである「docker0」やブリッジインタフェースの「br0」、KVMで利用される仮想的なインタフェース「virbr0」についての情報も分かりやすい形で表示できます。

# lmi -h localhost net device list
ElementName OperatingStatus MAC Address
br0         In Service      2C:76:8A:5D:F3:6C
docker0     Starting        56:84:7A:FE:97:99
eth0        In Service      2C:76:8A:5D:F3:6C
eth1        In Service      2C:76:8A:5D:F3:6D
eth2        Starting        2C:76:8A:5D:F3:6E
eth3        Starting        2C:76:8A:5D:F3:6F
lo          Not Available   00:00:00:00:00:00
virbr0      Starting        16:54:77:BE:DA:2D

OpenLMIによるパッケージ管理

一般的に、CentOS 7におけるパッケージ管理は、rpmやyumコマンドを使いますが、OpenLMIのlmiコマンドを使ってパッケージ管理も行うことができます。パッケージのインストールには、lmiコマンド「sw install」とパッケージ名を付与します。以下は、Apache Webサーバーを実現するhttpdパッケージをローカルの管理対象サーバー上にインストールする例です。

# lmi -h localhost sw install httpd

管理対象サーバーにインストールされたhttpdパッケージの情報を表示してみます。パッケージ情報の表示は、lmiコマンドに、「sw show pkg」を付与します。

# lmi -h localhost sw show pkg httpd
Name=httpd
Arch=x86_64
Version=2.4.6
Release=18.el7.centos
Summary=Apache HTTP Server
Installed=Sat Sep 13/2014  05:52
Description=The Apache HTTP Server is a powerful, efficient, and extensible web server.

上記のように、lmiコマンドによるパッケージ情報の表示では、パッケージ名、アーキテクチャ、パッケージのバージョン、リリースバージョン、概要、インストール日時、説明が表示されます。

OpenLMIによるサービス管理

OpenLMIは、管理対象サーバーの各種サービスの起動、停止、状態確認等の管理が可能です。以下は、管理対象サーバーにインストールされたNGINXの状態を確認する例です。

# lmi service show nginx
Name=nginx
Caption=nginx - high performance web server
Enabled=Yes
Status=Stopped - OK

上記の「Status=Stopped - OK」の出力から、NGINXサービスは、停止していることがわかります。NGINXサービスを起動し、状態を確認してみます。

# lmi service start nginx
# lmi service show nginx
Name=nginx
Caption=nginx - high performance web server
Enabled=Yes
Status=Running

上記より、NGINXサービスが稼働していることがわかります。

今回は、OpenLMIによるCentOS 7のシステム管理・監視について紹介しました。OpenLMIは、管理・監視の仕組みを標準化することで効率化を追求していますが、ハードウェア面も含めた管理機能の成熟度は、まだ発展途上であることは否めません。しかし、今後、ハードウェアレベルも含め、このようなシステム全体に関わる管理コマンドの標準化が進めば、Linuxシステムの管理・監視の仕組みが大幅に簡素化され、Linuxのスキル習得に係るコストの大幅な削減が期待できます。OpenLMIの取り組みは、まだ始まったばかりですが、今後の発展に大いに期待したいものです。

この連載が書籍になりました!
CentOS 7実践ガイド

古賀 政純 著
価格:3,000円+税
発売日:2015年2月25日発売
ISBN:978-4-8443-3753-9
発行:インプレスジャパン

CentOS 7実践ガイド

本書は、CentOS 7を取り巻く市場動向、CentOS 7が利用されるサーバーシステムの選定、CentOS 7の基礎、システム設計、OS管理やCentOS 7に対応したアプリケーションサーバーの構築手順などの勘所をご紹介します。連載では書ききれなかった本の内容、見どころが満載!

  • セキュリティ管理
  • チューニング
  • 自動インストール
  • Hadoop構築
  • GlusterFS
  • Ceph

Amazon詳細ページへImpress詳細ページへ

日本ヒューレット・パッカード株式会社 プリセールス統括本部 ソリューションセンター OSS・Linux担当 シニアITスペシャリスト

兵庫県伊丹市出身。1996年頃からオープンソースに携わる。2000年よりUNIXサーバーのSE及びスーパーコンピューターの並列計算プログラミング講師を担当。科学技術計算サーバーのSI経験も持つ。2005年、大手製造業向けLinuxサーバー提案で日本HP社長賞受賞。2006年、米国HPからLinux技術の伝道師に与えられる「OpenSource and Linux Ambassador Hall of Fame」を2年連続受賞。日本HPプリセールスMVPを4度受賞。現在は、Linux、FreeBSD、Hadoop等のOSSを駆使したスケールアウト型サーバー基盤のプリセールスSE、技術検証、技術文書執筆を担当。日本HPのオープンソース・Linuxテクノロジーエバンジェリストとして講演活動も行っている。Red Hat Certified Engineer、Red Hat Certified Virtualization Administrator、Novell Certified Linux Professional、EXIN Cloud Computing Foundation Certificate、HP Accredited Systems Engineer Cloud Architect、Red Hat Certified System Administrator in Red Hat OpenStack、Cloudera Certified Administrator for Apache Hadoop認定技術者。HP公式ブログ執筆者。趣味はレーシングカートとビリヤード

連載バックナンバー

Think ITメルマガ会員登録受付中

Think ITでは、技術情報が詰まったメールマガジン「Think IT Weekly」の配信サービスを提供しています。メルマガ会員登録を済ませれば、メルマガだけでなく、さまざまな限定特典を入手できるようになります。

Think ITメルマガ会員のサービス内容を見る

他にもこの記事が読まれています