IT・技術研修ならCTC教育サービス

サイト内検索 企業情報 サイトマップ

研修コース検索

コラム

クラウド時代のオープンソース実践活用

CTC 教育サービス

 [IT研修]注目キーワード   Python  UiPath(RPA)  最新技術動向  Microsoft Azure  Docker  Kubernetes 

第25回 その「クラウドOS」にはpsコマンドがありますか? (中井悦司) 2013年8月

はじめに

 最近、「クラウドOS」という言葉を耳にすることがあります。これまでは、「単なるはやり言葉」と思って聞き流していたのですが、最近、理由があって、クラウドOSについてまじめに考えてみました。言葉通りに、「 OS = Operating System = 操作システム(?)」と考えれば、「クラウドを操作するソフトウェア」となります。しかしながら、操作できないクラウドなんて意味がありませんので、それだけでわざわざ「OS」と呼ぶ必要はないでしょう。
 従来のOSは、コンピュータ上のハードウェアリソースを抽象化して、複数のプロセスに割り当てるという独自の役割と仕組みを持っています。クラウドOSについても、クラウドに特有の役割があるはずです。今回は、従来のOSの機能と対比することで、クラウドOSに求められる機能について考えます。簡単に言うと、「Linuxのようにクラウドが操作できたらどうなるだろう?」 ―― そんなことを想像してみる話です。

クラウドにおける構成管理

 この話には、背景が1つあります。先日、「VIOPS-8 Workshop」の「System automationパネル・セッション」に参加して、環境構築の自動化について話をさせていただいたのですが、この時、参加者の方から興味深い質問をいただきました。 ――「自動化されたクラウドにおける構成管理はどうあるべきでしょうか?」
 もちろん、従来からある構成管理ツールを利用することはできますし、クラウドの基本的な管理機能だけでも仮想マシンの一覧程度は確認できます。ただ、なにか重要な要素が欠けている気がします。たとえば、自動化の適用が進んでいくと、クラウド上で仮想マシンが勝手にできたり・消えたりする世界がやってきます。アクセスの増減に応じて、Webサーバを自動的に増減する「オートスケール」などはその典型です。
 この時、頭に浮かんだのが「クラウドOS」という言葉、もうすこし正確に言うと、従来のOS環境との対比です。よく考えれば、アクセスに応じてリソースを増減する仕組みは、1台のサーバ上でも普通に実現されています。Webサーバのhttpデーモンは、アクセスが増えると子プロセスをフォークして増やしていきます。アクセスが減れば、子プロセスを終了して減らします。「オートスケール」は、クラウドだけに特有の考え方ではありません。
 この対比で考えると、クラウド上の仮想マシンは、OS上の「プロセス」のような位置づけになりそうです。「クラウドOS」を利用すれば、psコマンドで仮想マシン一覧が表示される。そんな世界が想像できないでしょうか? 複数の仮想マシンは、親プロセス/子プロセスのような関係で紐付けられて、pstreeコマンドを使えば、どの仮想マシンどうしが連携するかが一目でわかる・・・ようになるかも知れません。

DCKサーバのプロトタイプを実装

 妄想ばかり膨らませても仕方ありませんので、まずは、「クラウドOS」の使用感を体験してみようということで、簡単なプロトタイプを作成してみました。操作対象のクラウドは、たまたまオフィスにあった、デモ用のOpenStack環境です(*1)。
 通常は、OpenStackのREST APIを使用して仮想マシンを操作するわけですが、ここでは、フロントに「DCKサーバ」を配置します(図1)。DCKサーバのREST APIに対して、psコマンド(に相当する命令)を投げると、仮想マシンの一覧が返ってくるという算段です。

fig01

図1 DCKサーバによる「クラウドOS」環境

 具体的な使用例を筆者のBlogに掲載していますので、詳細はこちらを参照ください。ここでは、概要を紹介しておきます。
 まず、仮想マシンを起動する際は、元になるテンプレートイメージを指定する必要があります。一方、通常のOSでプロセスを起動する際の大元は、実行ファイルです。そこで、lsコマンドで実行ファイルを見るのと同様に、DCKサーバに「lsコマンド」を投げると、テンプレートイメージの一覧が返るようにしました。
 また、通常のOSでプロセスを起動する際は、親プロセスからフォークで子プロセスを生成します。すべてのプロセスの大元になるのは、PID(プロセスID)=1の「initプロセス」です。そこで、この環境では、(実際には存在しない)ダミーの仮想マシンをPID=1の「init仮想マシン」として登録してあります。DCKサーバに対して、これを親プロセスとする、新規の仮想マシンの作成を依頼すると、仮想マシンが起動すると同時に、PID=2、PPID(親プロセスのPID)=1という情報が記録されます。この際、使用するテンプレートイメージと併せて、ゲストOSのアプリケーションを自動構成するための「User Data」も指定します。
 「User Data」は、Amazon EC2でも用いられる機能です。仮想マシンを起動する際に投入したテキストを元に、ゲストOS内部のCloud-Initというツールがさまざまな初期設定を行います。
 続いては、仮想マシンの「フォーク」です。既存の仮想マシンついて、「その仮想マシンをフォークする」という指示をDCKサーバに投げると、同じテンプレートイメージと「User Data」を持つ仮想マシンが新たに起動します。「User Data」でアプリケーションを構成しますので、これによって、同じ構成の仮想マシンが自動で複製されることになります。
 突貫で作ったプロトタイプですので、今回実装した機能はこれだけですが、「従来のOSとの対比」で考えると、追加するべき機能がいろいろと思い浮かぶのではないでしょうか? 特に興味を引かれるのが「プロセス間通信」の機能です。

プロセス間通信で仮想マシンを連携?

 複数の仮想マシンを自動構成する際によく課題となるのが、仮想マシンの連携処理です。「DBサーバが起動したのを確認してから、Webサーバを起動してDBに接続する」というような処理になります。スクリプトなどで自動化することも可能ですが、クラウドにおける「定番」となるツールはまだありません。
 一方、通常のOSの世界では、プロセスを連携させる定番ツールは、プロセス間通信です。そこで、DCKサーバに対して、仮想マシン間の情報交換を中継する「プロセス間通信」の機能を搭載すればどうでしょうか? DCKサーバのREST APIを使用すれば、仮想マシンのゲストOSからDCKサーバに指示を出すことができますので、親プロセスから子プロセスにプロセスシグナルを送る感覚で、DBサーバからWebサーバに起動完了通知が投げられるかもしれません。
 ちなみに、もう1つ、最近耳にする言葉に、「Programmable Infrastructre(プログラム操作可能なインフラ)」があります。しかしながら、クラウドインフラを操作する上でどのようなプログラムを書くのがよいのか、すなわち、「プログラミングモデル」に関する議論は、あまりなされていない気がします。DCKサーバを利用すれば、従来の「マルチプロセス・プログラミングモデル」を利用して、クラウドの自動化プログラミングができるようになるかも知れません。

次回予告

 そういえば、「DCKサーバ」の名前の由来を説明していませんでした。私の友人が「データセンタを1台のコンピュータとみなして考える」という事をよく言っているのですが、彼と議論をしている中で、「コンピュータを操作する中核はOSカーネルだから、データセンタ(クラウド)を操作する中核はデータセンタカーネルだよね」というような話になりました。そこで、今回のプロトタイプを「DCK=Data Center Kernel」と名付けてみました。
 このプロトタイプは、PythonのFlaskというフレームワークを使っています(*2)。REST APIを持つサーバアプリケーションを非常に手軽に作成できますので、一度、みなさんも試してみてください。
 次回は、少し夏休みをいただいて、8/29(木)に掲載の予定です。夏休み中に仕入れた、新しい「ネタ」をお届けしたいと思います。

参考資料

*1)「第23回 RDOとPackstackでOpenStackを手軽に実体験!
 RDOによるOpenStackのデモ環境構築手順が参考資料として紹介されています。

*2)「Designing a RESTful API with Python and Flask
FlaskでREST APIサーバを作成するチュートリアルです。

 

++ CTC教育サービスから一言 ++
このコラムでLinuxや周辺技術の技術概要や面白さが理解できたのではないかと思います。興味と面白さを仕事に変えるには、チューニングやトラブルシューティングの方法を実機を使用して多角的に学ぶことが有効であると考えます。CTC教育サービスでは、Linuxに関する実践力を鍛えられるコースを多数提供しています。興味がある方は以下のページもご覧ください。
 CTC教育サービス Linuxのページ
 http://www.school.ctc-g.co.jp/linux/
 

Linux研修トレーニングならCTC教育サービス


 

筆者書籍紹介

Software Design plusシリーズ
「独習Linux専科」サーバ構築/運用/管理
  ――あなたに伝えたい技と知恵と鉄則

本物の基礎を学ぶ!新定番のLinux独習書

中井悦司 著
B5変形判/384ページ
定価3,129円(本体2,980円)
ISBN 978-4-7741-5937-9
詳しくはこちら(出版社WEBサイト)
「独習Linux専科」サーバ構築/運用/管理

 [IT研修]注目キーワード   Python  UiPath(RPA)  最新技術動向  Microsoft Azure  Docker  Kubernetes