[実践編] MaaSとJujuによるOSS配備、Ubuntu Serverの運用・管理(後編)

2014年3月26日(水)
古賀 政純

前編では、スケールアウト基盤にOSを簡単にベアメタル配備するためのMaaSサーバーの構築手順を解説しました。後編ではOSSのオーケストレーションを実現するJujuを解説します。

Jujuを使ったOSSオーケストレーション

OSSクラウド基盤では、ユーザーの要求や自社の業務要件によって、ベアメタルでのOS環境や仮想化環境にサービスを素早く配備する必要があります。個々のOSSを人間が手動で構築し、サービスを展開することも可能ですが、OSSスタックや連携が複雑になると、構築やメンテナンスの工数が増える傾向にあります。

特にOSSの場合、各種OSSのバージョンの組み合わせによって動作が不安定になる場合や、サービスが稼働できない場合もあるため、OSSの組み合わせの事前検証作業は重要です。また、利用するユーザーアカウントや設定ファイルの記述の整合性チェックにも手間がかかります。例えば、Webサーバー、アプリケーションサーバー、データベースサーバーからなる典型的な3層構成のプライベート・クラウド環境の構築を行う場合、データベースサーバーのアカウントの作成やアプリケーションサーバーとの紐付け、Webサーバーの業務用LANへの公開設定の有無等、OSSの連携の整合性を保ちながら設定する必要があります。

Canonical社が提供するJujuは、OSS環境をGUIによって簡単に紐付けて連携させることができます。一般的に、OSSに限らず、クラウド基盤において様々なコンポーネントを連携させて一つの目的を持ったサービスやシステムを自動的に構築・稼働させることを「オーケストレーション」といいます。ハードウェアベンダーは、クラウド・アプライアンスにおいて、様々なハードウェアコンポーネントとOSの配備、連携を自動化する「オーケストレーション」の仕組みを提供しており、Canonical社のJujuもこれと同様のコンセプトを持っています。

図1:クラウド基盤におけるIaaSやSaaSのオーケストレーションでは、セルフ・サービス・ポータルによる分かりやすいGUIが特徴的である(クリックで拡大)

Jujuは、物理環境だけでなく、パブリック・クラウド環境へのOSS配備にも対応します。さらに、手間のかかる「OSSのオーケストレーション」をマウス操作で簡単に行える点が革新的と言えます。Jujuの配備先としては、大きく分けて3種類あります。

  1. ベアメタル環境におけるUbuntu ServerとOSS配備(MaaSを利用)
  2. クラウドへのOSS配備(Amazon、OpenStack、HP Cloud、Windows Azure等を利用)
  3. ローカルマシンの仮想化環境へのOSS配備(Juju-localとLinuxコンテナーを利用)

1. は、近年の超省電力のカートリッジ型のスケールアウト・サーバーを利用し、仮想化を行わない物理サーバー環境でOSSのオーケストレーションを行う場合が当てはまります。Ubuntu Serverの配布は、MaaSで行い、物理サーバー上に配備されたUbuntu ServerにJujuを使ってOSSを配備します。

2. は、自社内の物理サーバーを使わずにクラウド環境へのOSS配備を行います。OSSの迅速な配備を物理サーバー資産無しに行いたい場合に有用な方法です。

3. は、単体のサーバー上にLinuxコンテナーによる仮想化基盤を有し、Linuxコンテナー上でOSSサービスを提供する形態です。1台の物理サーバー上にインストールされたUbuntu Server上でJujuを利用します。ローカルの物理マシン上のLinuxコンテナー環境を利用するため、1. と2. のJujuと区別し、「juju-local」と呼ばれます。Juju-localは、煩雑なLinuxコンテナーのコマンドラインによる操作を隠ぺいするため、OSSを使ったサービスの提供を目的としたLinuxコンテナーによる仮想化基盤導入のハードルを下げる役割も担っています。

今回は、1. のMaaSによるベアメタル配備とJujuを組み合わせたOSSのオーケストレーション手順を解説します。

Jujuを利用するためには、MaaSノードとは異なる別のサーバーに「Jujuブート・ストラップノード」を構築します。MaaSサーバー上にインストールしたjujuコマンドを使い、管理対象サーバーをPXEブートさせてOSとJujuを自動インストールし、Jujuブート・ストラップノードを構築します。JujuのWeb画面(Juju GUI)はJujuブート・ストラップノードで提供することが可能です。MaaSとJujuのシステム構成例を以下に示します。

図2:MaaSサーバーによりUbuntu Serverの配布を行う。Juju GUIによりOSSの配備やオーケストレーションを行う(クリックで拡大)

以下にMaaSとJujuの構築手順を示します。MaaSサーバーとは別のサーバーにJujuブートストラップノードを構築する点に注意して下さい。

[Jujuの構築手順]

  1. MaaSサーバーを1台構築する
  2. MaaSサーバーに管理対象サーバーを1台登録する
  3. MaaSサーバーにjuju-coreをインストールする
  4. MaaSサーバー上でjuju bootstrapを実行する(管理対象サーバーがPXEブートされる)
  5. 管理対象サーバーにOSとJujuが配備され、Jujuブート・ストラップノードになる
  6. jujuコマンドを使い、Jujuブート・ストラップノードにJuju GUIをインストール
  7. Juju GUIにクライアントからWebブラウザでアクセスする

MaaSサーバーにJujuの管理用コマンドをインストールするため、リポジトリを追加し、パッケージリストを更新します。

# add-apt-repository ppa:juju/stable -y
# cat /etc/apt/sources.list.d/juju-stable-precise.list
deb http://ppa.launchpad.net/juju/stable/ubuntu precise main
deb-src http://ppa.launchpad.net/juju/stable/ubuntu precise main
# apt-get update

Jujuをインストールします。パッケージ名として、juju-coreを指定します。

# apt-get install juju-core -y
# dpkg -l |grep juju
ii  juju-core 1.16.6-0ubuntu1~ubuntu12.04.1~juju1 Juju is devops distilled - client

Jujuの設定ファイルの雛型を生成します。

# juju generate-config

上記のコマンドによって、~/.juju/environments.yamlが生成されます。environments.yamファイルを編集します。

# vi ~/.juju/environments.yaml
...
default: maas	  ←ベアメタル配備のmaasを指定
...
  maas:
    type: maas
    maas-server: 'http://172.16.12.1/MAAS/' ←MaaSサーバーのURLを指定
    maas-oauth: 'HMRP9emyLw6x6MnT7z:bJDpxXEdj2wbDxNmUF:NRVqCF2jhwQ8yByRtRrVC7d3YCmyDRxL' ←MaaSのWebインタフェースからMaaS Keyをコピーペースト
    admin-secret: e84ec394ac3c2cd83a6879fe0cd4187e ←Juju GUIのパスワード
    default-series: precise
    authorized-keys-path: ~/.ssh/authorized_keys ←公開鍵のファイル名を指定
...

雛型のenvironments.yamlファイルの「default:」の行には、「amazon」が指定されていますが、物理マシンへのベアメタル配備環境を標準の環境とする場合は、「maas」を記述します。jujuコマンドでオプションを付与することにより、Amazon Web ServiceやHP Cloudなどの配備先を切り替えることが可能ですが、今回は、「maas」のみを使用します。

次に、ファイルの下部の「maas-server:」の行には、MaaSサーバーのURLを指定します。「maas-oauth:」の行には、MaaS Keyを指定します。MaaS Keyは、MaaSサーバーのWeb管理画面にある管理者アカウントの「Preferences」のページで「Generate MaaS Key」をクリックすると生成できますので、マウス操作によりコピーして張り付けて下さい。「admin-secret:」の行は、JujuのGUI画面にログインするときのパスワードになります。

「authorized-keys-path:」の行には、公開鍵のファイルをフルパスで記述します。Jujuブート・ストラップノードとなる物理サーバーは、MaaSサーバーのWeb管理画面上で「Status」を「Ready」状態にしておきます。また、IPMIの設定を事前に行っておく必要があります。

HP ProLiantサーバーの場合、iLO4管理チップのIPアドレス、管理者ユーザー名、パスワードをMaaSサーバーのWeb管理画面で適切に設定されているかを確認して下さい。MaaSサーバー上にインストールしたjujuコマンドによりJujuブート・ストラップノードの構築を開始します。

# juju bootstrap --show-log

上記コマンドが正常に終了したら、jujuブート・ストラップノードとなる管理対象サーバーの電源がMaaSサーバーによって自動的に投入され、Ubuntu Serverのインストールが開始し、Jujuブート・ストラップノードの構築が始まります。

Jujuブート・ストラップノードの構築が終了したら、jujuコマンドを使用するMaaSサーバー上の/etc/hostsファイルに、Jujuブート・ストラップノードのIPアドレスとホスト名の対応を記述しておきます。IPアドレスとホスト名の対応はMaaSサーバーのWeb管理画面から確認してください。

# vi /etc/hosts
  ...
  172.16.44.3   6bh8q.master # Juju Bootstrap Node
  ...

Jujuブート・ストラップノードの状態を、jujuコマンドをインストールしたMaaSサーバーから確認します。

# juju status --show-log
environment: maas
machines:
  "0":
    agent-state: started
    agent-version: 1.16.5
    dns-name: 6bh8q.master
    instance-id: /MAAS/api/1.0/nodes/node-c65e3c5a-9402-11e3-b009-5254000512c6/
    series: precise

JujuのGUIを利用するためには、「juju-gui」サービスを配備する必要があります。「juju-gui」はJujuブート・ストラップノード上に構築することができます。上記のコマンド出力例の場合、Jujuブート・ストラップノードは、「machines:」の一行下にある「"0":」で表されていますので、jujuコマンドに--toオプションを付与し、juju-guiの配布先ノードとして「0」を指定します。これにより、Jujuブート・ストラップノード上にJuju GUIサービスが配備されます。

# juju deploy juju-gui --to 0

Juju GUIが配備されているかを確認します。

# juju status
...
services:
  juju-gui:
    charm: cs:precise/juju-gui-83
    exposed: true
    units:
      juju-gui/0:
      agent-state: started
      agent-version: 1.16.5
      machine: "0"
      open-ports:
      - 80/tcp
      - 443/tcp
      public-address: 6bh8q.master

上記の「public-address」に示されるホスト名にWebブラウザでアクセスすると、Juju GUIのログイン画面が現れます。MaaSサーバーで設定したenvironments.yamlファイルの「admin-secret:」行に記述されているパスワードを入力してログインして下さい。

Juju GUIを使ったUbuntu ServerとOSSの配備、オーケストレーション

初めてJuju GUIにアクセスすると、Jujuブート・ストラップノードで稼働している「juju-gui」サービスのみが存在します。Juju GUIによるOSS配備を行うためには、配備したいOSSの数だけの管理対象サーバーをMaaSサーバーに事前に登録しておく必要がありますので注意して下さい。

Jujuで導入可能なOSSのコレクション(Juju Charmと言います)は、Juju GUIで検索が可能です。例えば、Hadoopを配備したい場合、Juju GUIの左上にある検索入力フォームに「Hadoop」と打ち込み、Enterキーを入力します。すると、Hadoopに関連するOSS一覧の検索結果が表示されますので、インストールしたいCharmをマウスで右側にドラッグ・アンド・ドロップして下さい。すると、Hadoopに関するパラメーター等を入力するウィンドウが右側に現れますので、「Deploy」をクリックすると管理対象サーバーの電源が自動的に投入され、Ubuntu ServerとHadoopが自動的にインストールされます。

図3:Juju GUIによるHadoopの配備。管理対象サーバーの電源が自動投入され、OSとHadoopが自動インストールされる(クリックで拡大)

Jujuを使って、複数のアプリケーションを連携させる「オーケストレーション」を行ってみましょう。例として、インターネット百科事典「ウィキペディア」サイトで採用されているウィキ・ソフトウェア「MediaWiki」を構築する例を示します。

MediaWikiは、ウィキペディアと同様のコンテンツ管理システムを作成することができるOSSですが、MySQLとの連携を必要とします。MediaWikiとMySQLでオーケストレーションを行うには、まず、Juju GUIからMySQLとMediaWikiを検索し、Juju GUI上にドラッグ&ドロップします。配備したMediaWikiの図柄上にマウスでポイントすると「Build Relation」と表示されますので、さらにそれをクリックし、MySQLの図柄にマウスを近づけるとMediaWikiとMySQLが線で結ばれます。これにより、MediaWikiとMySQLのリレーションが完成します。

図4:MediawikiとMySQLのリレーション構築の様子(クリックで拡大)

MySQLとリレーションが構築できたので、MediaWikiにWebブラウザでアクセスしてみます。

MediaWikiが提供する管理対象ノードのホスト名を確認するには、配備したMediaWikiサービスの図柄をポイントして表示される右側のウィンドウ内の「1 running units」をクリックします。さらに「mediawiki/0」をクリックすると、サービスが提供するホスト名(IPアドレス)が表示されます。ホスト名が分かったら、Webブラウザでアクセスし、図6のように、ウィキペディアと同様のウィキサイトが表示されていること確認してください。

図5:Mediawikiサービスが提供するホストをJuju GUI上で調べる例(クリックで拡大)
図6:Juju GUIで配備したMediawikiサービスが提供するウィキサイトを表示(クリックで拡大)
図7:Jujuを使って、MediawikiによるウィキサイトとWordpressによるブログサイト、HadoopクラスターとNFSサーバーを構築した様子(クリックで拡大)

Ubuntu Server実践編の第2弾では、Ubuntu Serverをスケールアウト基盤に配備するための技術要素、ノウハウについて説明しました。次回は、Ubuntu Serverの運用管理について説明します。

日本ヒューレット・パッカード株式会社 プリセールス統括本部 ソリューションセンター OSS・Linux担当 シニアITスペシャリスト

兵庫県伊丹市出身。1996年頃からオープンソースに携わる。2000年よりUNIXサーバーのSE及びスーパーコンピューターの並列計算プログラミング講師を担当。科学技術計算サーバーのSI経験も持つ。2005年、大手製造業向けLinuxサーバー提案で日本HP社長賞受賞。2006年、米国HPからLinux技術の伝道師に与えられる「OpenSource and Linux Ambassador Hall of Fame」を2年連続受賞。日本HPプリセールスMVPを4度受賞。現在は、Linux、FreeBSD、Hadoop等のOSSを駆使したスケールアウト型サーバー基盤のプリセールスSE、技術検証、技術文書執筆を担当。日本HPのオープンソース・Linuxテクノロジーエバンジェリストとして講演活動も行っている。Red Hat Certified Engineer、Red Hat Certified Virtualization Administrator、Novell Certified Linux Professional、EXIN Cloud Computing Foundation Certificate、HP Accredited Systems Engineer Cloud Architect、Red Hat Certified System Administrator in Red Hat OpenStack、Cloudera Certified Administrator for Apache Hadoop認定技術者。HP公式ブログ執筆者。趣味はレーシングカートとビリヤード

連載バックナンバー

Think ITメルマガ会員登録受付中

Think ITでは、技術情報が詰まったメールマガジン「Think IT Weekly」の配信サービスを提供しています。メルマガ会員登録を済ませれば、メルマガだけでなく、さまざまな限定特典を入手できるようになります。

Think ITメルマガ会員のサービス内容を見る

他にもこの記事が読まれています