2019/03/18
KDDIクラウドプラットフォームサービス(以下、KCPS)、ベアメタルサーバーサービス開発担当の加藤真人です。
近年、クラウドといえば仮想サーバを提供したサービスが多く、さらに上位レイヤーでのサービスが話題の中心となっています。そのようなご時世、IaaSよりも低レイヤーのサービスを開発することは、まるで世の中の流れに逆行しているように思われるかもしれませんが、一方ではベアメタルがベストプラクティスな環境であり必要としているお客様がいるのも現状です。そこで我々がこれまでインフラレイヤーで支えてきた技術を集結し、本サービスを2018年10月にリリースしました。今回はその一部を紹介させて頂きます。
KCPSにおいて、これまで数千台の物理サーバを導入しお客様へ提供してきました。インフラの業務においては、ソフトウエア開発と違い相手がハードウェアになり現地作業や物理的な作業が伴うことが多く、作業手順なども環境や構成によって複雑になります。さらに手順の順番を間違えると、リモートでの操作が出来なくなったり、特権権限を消失するなど、システムの再構築が必要となるケースもあります。これまでの業務の随所に、インフラエンジニアが利用する便利なツールや、考慮しなければならないノウハウが存在します。これらは事前に開発されたものではなく、構築や運用の実務からいわば副産物として作られたものがほとんどです。この副産物を今回のベアメタルサーバーサービスでも活用しています。また、今回採用したサーバはOCP仕様のサーバとなり、サーバメーカが提供する運用ツールなどはあまり存在しておりません。このため、KDDIにてオリジナルなツールや機能を、ハードウェアメーカと共同で開発しています。
インフラをもっと自由に扱いたい、ハードウェアをアプリレイヤで操作したい。そんな思いから始まったベアメタルサーバーサービス開発ですが、ハードウェアレイヤを自動化するには、SWレイヤで動くインフラツールが必要になります。しかし、インフラを構築するには複数のハードウェア機器を組み合わせるため、ツールやインターフェースは各社バラバラになっています。コントロールの仕組みも多岐に渡り、それらを管理するのもまた一苦労です。この問題を解決するために、本サービスではOpenStackを採用しています。OpenStackに対応したツール(Driver)を提供しているハードウェアメーカは多く、新しい機器を導入するたびに新しいツールを開発するのではなく、ハードウェア機器との間にOpenStackを入れることでこれらの課題を解決しています。今回は、サーバ制御ツール(ITRI-BAMPI)との連携部分で利用しており、これまでに比べ新しい管理ツールをゼロから開発するのではなく、既存のツールを活用しての開発が出来ました。
インフラ設備を導入する場合、設置などの構築フェーズから除却フェーズと、開始から終了まで含めたインフラトータル管理を考える必要があります。このトータル管理をKCPSでは「サーバライフサイクルマネージメント」と定義しています。設備を導入構築したら終わりではなく、ラック搭載から機器廃棄までの全ての工程管理を考慮し、EOSLによる機器更改なども含め、システムを永続的に維持することを考え、ライフサイクルと表現しています。本サービスにおいてもこの管理概念を採用しており、ベアメタルサーバーサービス管理画面のメニューにある「LIFECYCLE MANAGEMENT」を選択すると、インフラトータル管理に必要な各種イベントタブ(在庫、構築中、サービス利用中、メンテンス)が存在します。このイベントタブを本サービスでは「ステージ」と定義し、お客様が利用するステージに応じて、利用するツールや考慮内容を実装し、ポータル画面からコントロールできるのが特徴です。
本サービスにおける、お客様が利用可能なステージは下記になります。
3−1.利用準備(在庫ステージ~構築中ステージ)
サーバ在庫一覧にある物理サーバの取得から、ハードウェアの初期設定までを実施するステージになります。ハードウェアの初期設定においては、BIOSの設定、RAID構築、BMC設定など、サーバへOSを導入するために必要な事前設定を行います。また、本ステージにてHW-RAIDの構成選択が可能となっています。利用用途にあわせてHW-RAIDの構成を変更できるのは、ベアメタルサーバーサービスの特徴です。上記に加えて、複数台同じタイプのサーバを同時に構築する機能もあり、仮想化基盤のコンピュートノードやVDI環境などの同一なサーバを複数台構築するには大変便利な機能です。
3−2.サーバの構築(サービス利用中ステージ)
OSの導入に必要なBMC操作、ISOマウントやiKVM画面操作をこのステージで提供しています。本サービスでは、BMC機能をそのままお客様へ提供することを実現しています。これは、仮想化基盤などで利用するオーケストレータなどをターゲットにしており、OpenStackのようなコンピュートノードを自動構築する機能がある場合、BMCに直接リーチ出来る必要があります。(ここ、こだわりの機能の一つなのですが、BMCの機能開発は本当に大変でした。)この機能開発の詳細はボリュームが多くなるため、別途技術説明で行っていきたいと思います。
3−3.サーバの運用管理(メンテナンスステージ)
システムを稼働させるためには、メンテナンス業務は必須になります。構築するシーンよりも、メンテナンスシーンが一番緊張するかもしれません。メンテナンスステージは、お客様が利用するステージとKDDIがお客様の物理サーバをメンテナンスする2ステージ存在します。メンテナンス_お客様ステージにおいては、メンテナンスに必要な複数の機能を提供しています。これらの機能には、サーバが再起動する機能も含まれていますので、誤った操作を防ぐためにも利用の際には対象サーバを利用中ステージからあえてメンテナンスステージへ移動させないとメンテナンス系の機能は利用できません。メンテナンス系の機能の利用は行わず、メンテナンスステージへ移動するだけであれば、サーバを稼働させたまま移動することが可能です。本ステージで特にご紹介したいのが、「スケジュールオーダー」です。この機能では、決められたタスクを指定したスケジュールで実行することができます。サーバOS側のスケジュール機能と併用することで、特定の日時に物理サーバの再起動が必要なBIOSのVerUPや、ファームウェアの更新などの作業を深夜無人で実施することも可能となります。
3−4.サーバの削除
サーバ削除ステージの処理はバックエンドで実行されます。データのクリーニング、各種設定の初期化やファームウェアのチェックなど、再度在庫へ戻すために必要なタスクが非常に沢山あります。このようなクリーニング処理があるため、一度削除されたサーバのデータは復元することは出来ません。物理サーバのデータ削除は、技術的に元に戻せないレベルまでクリーニングが行われますので、削除を実施する場合は注意して実施してください。
今回は、アーキテクトの内容となってしまいましたが、ベアメタルサーバーシステムの場合、仮想化システムと違い、EOSLや障害に対してどうしてもお客様へ直接的な影響が出てしまう特性を持っています。そのため、クラウドサービスとしてお客様のシステムを預かり維持管理していくためには、まだまだ必要な機能が提供出来ていないと感じております。お客様の声を聞きながら、サービスの改善、機能追加を行っていきますので、お気軽にコメントいただけると幸いです。