[実践編] MaaSとJujuによるOSS配備、Ubuntu Serverの運用・管理(後編)
前編では、スケールアウト基盤に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もこれと同様のコンセプトを持っています。
Jujuは、物理環境だけでなく、パブリック・クラウド環境へのOSS配備にも対応します。さらに、手間のかかる「OSSのオーケストレーション」をマウス操作で簡単に行える点が革新的と言えます。Jujuの配備先としては、大きく分けて3種類あります。
- ベアメタル環境におけるUbuntu ServerとOSS配備(MaaSを利用)
- クラウドへのOSS配備(Amazon、OpenStack、HP Cloud、Windows Azure等を利用)
- ローカルマシンの仮想化環境への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のシステム構成例を以下に示します。
以下にMaaSとJujuの構築手順を示します。MaaSサーバーとは別のサーバーにJujuブートストラップノードを構築する点に注意して下さい。
[Jujuの構築手順]
- MaaSサーバーを1台構築する
- MaaSサーバーに管理対象サーバーを1台登録する
- MaaSサーバーにjuju-coreをインストールする
- MaaSサーバー上でjuju bootstrapを実行する(管理対象サーバーがPXEブートされる)
- 管理対象サーバーにOSとJujuが配備され、Jujuブート・ストラップノードになる
- jujuコマンドを使い、Jujuブート・ストラップノードにJuju GUIをインストール
- 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が自動的にインストールされます。
Jujuを使って、複数のアプリケーションを連携させる「オーケストレーション」を行ってみましょう。例として、インターネット百科事典「ウィキペディア」サイトで採用されているウィキ・ソフトウェア「MediaWiki」を構築する例を示します。
MediaWikiは、ウィキペディアと同様のコンテンツ管理システムを作成することができるOSSですが、MySQLとの連携を必要とします。MediaWikiとMySQLでオーケストレーションを行うには、まず、Juju GUIからMySQLとMediaWikiを検索し、Juju GUI上にドラッグ&ドロップします。配備したMediaWikiの図柄上にマウスでポイントすると「Build Relation」と表示されますので、さらにそれをクリックし、MySQLの図柄にマウスを近づけるとMediaWikiとMySQLが線で結ばれます。これにより、MediaWikiとMySQLのリレーションが完成します。
MySQLとリレーションが構築できたので、MediaWikiにWebブラウザでアクセスしてみます。
MediaWikiが提供する管理対象ノードのホスト名を確認するには、配備したMediaWikiサービスの図柄をポイントして表示される右側のウィンドウ内の「1 running units」をクリックします。さらに「mediawiki/0」をクリックすると、サービスが提供するホスト名(IPアドレス)が表示されます。ホスト名が分かったら、Webブラウザでアクセスし、図6のように、ウィキペディアと同様のウィキサイトが表示されていること確認してください。
Ubuntu Server実践編の第2弾では、Ubuntu Serverをスケールアウト基盤に配備するための技術要素、ノウハウについて説明しました。次回は、Ubuntu Serverの運用管理について説明します。
連載バックナンバー
Think ITメルマガ会員登録受付中
全文検索エンジンによるおすすめ記事
- [実践編] MaaSとJujuによるOSS配備、Ubuntu Serverの運用・管理(前編)
- [実践編] Ubuntu Serverをスケールアウト型サーバーに配備する(後編)
- Canonicalのマーク・シャトルワース氏、Jujuによるサービスの抽象化と流通を推進
- [入門編] Ubuntu Serverの基礎(前編)
- [入門編] Ubuntu Serverとその他のサーバーOSを比較する
- Icehouseで追加されたコンポーネント群とは
- JavaScript用パッケージマネージャYarnが公開、MySQL次期メジャーバージョン8.0登場、など
- [入門編] Ubuntu Serverの基礎(後編)
- 注目すべきDockerの周辺技術 PanamaxとKubernetes
- RHEL7やOpenStackなど最新技術が集結するRed Hat Summit 2014 現地レポート(後編)