大量のサーバを管理するために、IPMIのお話|サイバーエージェント 公式エンジニアブログ

■ IPMIとは

IPMIは、Intelligent Platform Management Interface の略称です。システム管理の為のインタフェースを指していて、Intel、Hewlett-Packard、NEC、Dellが中心となってつくられた規格です。

最新版はこちらのIntelのサイトで公開されています。

ただ、IPMIという言葉より、各ベンダーの製品で認識している方も多いかと思います。各サーバベンダーはIPMIという規格に準拠しつつも、独自のシステム管理製品と組み合わせて、ソリューションとして提供しています。

弊社ではシステム管理にもOSSを積極的に使用していますので、今回はOpenIPMIの話題を中心に取り上げます。

■ 弊社での使い方

このブログのために、今自分が担当になっている本番のサーバ台数(物理ノード)を数えてみたのですが、だいたい100台前後ありました。

また、設置場所も分散されていますので、なんでもかんでもデータセンターに飛んでいって作業するというのは非現実的です。極力リモートでできることは増やしたいものです。

弊社はOSSを推進していると同時に、マルチベンダーを指向しています。そのときによいサーバを採用するというポリシーのため、必然的に、導入されているサーバーは多様となっています。

(リモートからの電源オン/オフやモニタリングが可能なラック用電源タップが導入されているサーバ群もあります。)

上記のような環境の中で、IPMIは以下の3点のために使用することが多いです。

  • リモートからの電源ON/OFF
  • ハードウェアの状態の確認
  • コンソールリダイレクション(SOL)
  • 今回は、リモートからの電源ON/OFFとIPMIツールを利用したハードウェア情報の確認まで解説します。SOLについては、機種ごとのBIOSの設定がどうしても必要なため割愛します。

    (他にも、watchdog timerなどもIPMIを利用して実行できます。)

    ■ OSSでIPMIを使う

    IPMIの使用自体は、各ベンダーが提供しているツールを介して使うこともできますが、それだとマルチベンダー環境の場合、サーバごとに各ベンダーのツールを使う必要が出てきてしまい厄介です。IPMIは公開されている規格ですので、操作の為のツールもOSSで公開されています。代表的なものはいくつかあり、「ipmitool」「ipmiutil」「freeipmi」「OpenIPMI」などが有名です。それぞれの比較については、ipmiutilのサイトにわかりやすい表がありましたので、参考にしてみてください。

    今回は、弊社で比較的ポピュラーなOpenIPMIを使って説明します。なお、今回の記事は以下の環境を前提としています。

    機種 DELL R310
    OS CentOS 5.4 64bit
    IPMI Ver 2.0
    備考 今回はDRACを使用せず、BMCでできることだけの紹介です

    ● OpenIPMIの導入

    IPMIは管理対象のサーバにドライバ等を入れておく必要はありませんが、OSからドライバ経由でIP設定などする場合は必要ですので、そういった場合は以下の手順でツールを入れてください。

    yum install OpenIPMI.x86_64yum install OpenIPMI-tools.x86_64

    以下のデバイスファイルが作られていればハードウェアとして認識されています。

    /dev/ipmi0

    その場合は下記のように起動させてください。

    /etc/init.d/ipmi start

    認識されていない場合は以下のカーネルモジュールが読み込まれていないケースが多いと思います。手動でロードしてください。

    /sbin/modprobe ipmi_si/sbin/modprobe ipmi_devintf

    以下のようになっていればOKです。

    # /sbin/lsmod |grep ipmiipmi_devintf           44753  0 ipmi_si                77965  0 ipmi_msghandler        72985  2 ipmi_devintf,ipmi_si

    ● ユーザの設定、IPアドレスの設定

    サーバベンダーのツールや、BIOSからIPMIのIPアドレスとユーザの設定ができる機種が多いかと思います。そちらは、各種マニュアルを参照していただくとして、今回はドライバ経由で設定する方法をご紹介します。

    ドライバ経由で設定する方法ですと、動いているサーバを再起動させてBIOS画面を立ち上げたりしなくてもよい利点があります。

    ・現在のユーザリストipmitool user list "user id"・ユーザの設定ipmitool user set name "user id" "user name"・パスワードの設定ipmitool user set password "user id" "password"・admin権限の付与(ユーザID,権限の付与等は環境に応じて変えてください。)ipmitool user priv "user id" 4 1・作成したユーザの有効化ipmitool user enable "user id"
    ・現在の設定の確認ipmitool lan print "channel id"・staticにするipmitool lan set "channel id" ipsrc static・IPアドレス設定ipmitool lan set "channel id" ipaddr "IP ADDRESS"・サブネットマスク設定ipmitool lan set "channel id" netmask "NETMASK"・DefaultGateway設定ipmitool lan set "channel id" defgw ipaddr "IP ADDRESS"・アクセス許可ipmitool lan set "channel id" access on

    以上でユーザの設定、IPアドレスの設定が完了し使用できる状態になりました。

    (IPMI 1.5では残念ながらタグVLAN環境にて使用することはできません。ネイティブのIPアドレスを付与してご使用ください。2.0では可能です。)

    ● ipmitoolの使用例(1)電源のON/OFF

    実際の使用例は以下のようになります。当たり前ですが、ipmitoolをインストールした端末からリモートで実行しています。

    ・電源OFFipmitool  -H "IP ADDRESS" -U "USER NAME" power off・電源ONipmitool  -H "IP ADDRESS" -U "USER NAME" power on

    これで、サーバが落ちてしまった!!なんてときにも、DCに走らなくてもよくなりました。よかったよかった。(ハード故障のときはだめなケースもありますが…)

    ● ipmitoolの使用例(2)ハードウェアの情報の確認

    また以下のコマンドでハードウェアの各種情報を取得することができます。

    ・BMCログの確認ipmitool  -I lan -H "IP ADDRESS" -U "USER NAME" sel list・センサデータの確認(※)ipmitool  -I lan -H "IP ADDRESS" -U "USER NAME" sdr

    この他にも、さまざまなオプションがあるので試してみてください。

    ※サーバの電力や、温度が表示されます。ファームウェアのバージョンによってうまくいかないこともありますが…

    ■ これからやりたいこと

    構成管理のデータを引っ張ってきて、ラック別の電源モニタリングツールを作ろうかと思っています。また、chefのようなツールと連携させて、サーバ導入時にPXEブートからのシームレスな構築(IPMIのIP設定、ユーザ設定、SOL設定)を実現したいと考えています。

    今回は比較的ハード寄りのネタになりました。もし次の機会があれば、検証しているKVSの話なども書いてみたいと思います。ではでは!

広告

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中