OpenLMIによるシステム管理
この連載が、書籍『CentOS 7 実践ガイド』になりました!
IT技術者のための現場ノウハウ CentOS 7 実践ガイド
CentOS 7を取り巻く市場動向、サーバーシステムの選定、システム設計、構築手順など今回は、CentOS 7で新しく搭載された管理ツール「OpenLMI」について解説します。
CentOS 7のOpenLMIによるシステム管理
Linuxシステムの管理には、様々なコマンドがあります。例えば、OSの論理ボリュームを管理するLVM一つをとっても、物理ボリュームやボリュームグループの管理コマンド、論理ディスクの管理コマンドなど様々なコマンドやオプションを覚えなければなりません。OSの管理コマンドもバージョンによってオプションや書式が変わるものも少なくありません。また、管理コマンドをいくつも駆使する場合は、ユーザーがバッチ処理用のスクリプトを個々に作成しなければならず、一連の管理の自動化を行うためには、管理者のコマンドの利用知識とスクリプト開発のスキルに依存している場合が殆どです。近年、Linuxシステムを取り巻く世界では、管理の簡素化、自動化を実現するための標準化の必要性が高まってきています。一連の定型作業は、できるだけ標準化・自動化し、様々な種類の作業を単一のコマンド体系に集約することで、ユーザーのスキル習得の負担を減らし、簡素なものにしなければならないという考え方です。また、ローカルのLinuxシステムの管理の簡素化だけではなく、遠隔管理の仕組みも含めた標準化が検討されています。例えば、遠隔地にあるデータセンターのサーバーの電源管理やコンソール出力管理、不正侵入の監視システムのための通報の仕組みなどをいかに標準化できるかについて議論され始めています。Linuxシステム全体の管理の標準化は、まだ発展途上の初期段階ですが、Linuxベースの管理・監視の仕組みが大きく見直されようとしており、その一つが今回取り上げる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のインストール手順
以下では、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で稼働中のカーネルのバージョン、ファイヤウォール、ロギングの有無の情報が取得できていることがわかります。