JujuとMAASで機械学習基盤を展開・管理する
はじめまして!キスモインターン生の鈴木健太です.
今年の5月からインフラエンジニアとして働いています.
今回,オンプレの機械学習基盤の管理を効率化するシステムを組んだのでご紹介します.
モチベーション
今回のシステムを組むに至ったのは,
- 何度も同じ構築作業をしたくない
- 人為的なミスを削減したい
- マシンの設定を一貫させたい
という思いがあったためです.
新しい計算機が手に入るたびに,同じセットアップ作業を繰り返していては時間の無駄ですし,見落としや作業を行う人による差異などが発生しかねません.
そこで,構成管理ツールなどを用いた計算資源の管理を行うことにしました.
アーキテクチャ
今回は以下のようなシステムを構築しました. 以前ご紹介したように,キスモの機械学習インフラにはRancherを使用してます. その構築をJuju + MAASで行い,各ノードの監視・管理をLandscapeで行うという形になっています.
このシステムの提供する主な機能は,以下の通りになります.
- Jujuによる構成管理
- MAASによるOS展開
- Landscapeによるパッケージ管理・モニタリング
Jujuによる構成管理
JujuとはChef,Ansible,Puppetなどと同じ構成管理ツールの一種です.数ある構成管理ツールの中でもJujuを選んだ理由は,OSの展開から自動化したいという思いがあり,それを実現するMAASとの相性が良かったためです.
JujuはCharmというアプリケーションの構築手順書を使用し,パブリッククラウドやプライベートクラウドにアプリケーションを展開します.ここで言うパブリッククラウドとはAWSやGCPなどを,プライベートクラウドとは後述するMAASなどを指します.
Charmには単一のアプリケーションの構成,各種動作などが定義されており,「構築」「スケーリング」「アップグレード」「削除」などの操作をコマンド1つで実行可能にします.
e.g.) Rancherのサーバ展開
juju deploy rancher-server
弊社では,Rancherと後述するLandscapeの展開に使用しています.
MAASによるOS展開
MAASとはベアメタルへのOSのインストールを自動化するシステムです.IPMIによるPCの電源操作やOSのインストール,RAIDセットアップなどを自動化してくれます.
内部にPXEサーバ,DHCPサーバなどを備えており,MAASの管理するネットワーク上でPXEブートしたマシンを自動的に登録し,GUIからの操作だけで指定したOSイメージをマシンへインストールできるようにします.
JujuはこのMAASが提供するAPIを使用することで,アプリケーションの展開に必要なマシンへのOS展開の指示などを行います.
Landscapeによるパッケージ管理・モニタリング
Landscapeとは,Canonicalが開発しているコンピュータの管理・監視ツールです. 主な機能としては,
- パッケージの一元管理
- サーバ上のユーザ管理
- 各種ハードウェア情報のモニタリング
- サーバ上でのスクリプト実行
が挙げられます.これらの操作はGUIから行うことができます.また,複数のサーバに対して同じ操作を同時に行うことができるため,サーバの数が増えたとしても,操作の実行に必要な手数はほとんど変わりません.
弊社では,先程紹介したJujuを用いてLandscapeのサーバを展開すると共に,Rancherが動いているノード上にLandscapeのクライアントを展開することで,クラスタに属する各ノードのパッケージ管理,モニタリングなどを行っています.
今後の課題
このシステムではログの一元管理ができておらず,障害発生時にJujuやLandscapeだけで原因が特定できない場合,サーバから直接ログを収集するしかない状況です.なので,今後はログの管理や障害検知の仕組みを工夫していけたらと考えています.
最後に
今回は社内で構築した計算資源の管理を効率化するシステムを紹介させていただきました. 今後もキスモの社内環境の整備に尽力していきますので,また何かまとまれば紹介していきたいと思います.
それでは,最後までお付き合いいだだきありがとうございました!