「オープンソース」を使ってみよう (第23回 DevStackでラクラク導入! OpenStackを使ってみよう編)

No Comments
このエントリーをはてなブックマークに追加

—————————————
日本OpenStackユーザ会
中島
—————————————

Table of Contents
=================
1 OpenStackとは?
 1.1 OpenStackでできること
 1.2 開発の経緯
 1.3 OpenStackを構成するコンポーネント
2 OpenStackのインストール方法
3 環境の準備
 3.1 Ubuntuインストール時の流れ
 3.2 インストール後の作業
4 devstackを使ったインストール
 4.1 gitのインストール
 4.2 DevStackの取得
 4.3 DevStack環境設定
 4.4 DevStack実行
5 使ってみる
 5.1 Webからのアクセス
 5.2 コマンドラインからの操作
6 OpenStackの再起動
7 発展
8 最後に
9 情報源

1. OpenStackとは?




OpenStackは完全なオープンソースでIaaS環境を実現するためのCloud環境のことです。

1.1 OpenStackでできること

OpenStackを使うことでAmazon EC2/S3相当の環境を手元に作ることが可能です。
好きな時に好きなスペックの仮想マシンを作成し、使い終わったら削除できます。マルチテナントをサポートしており、複数の組織で安全にシェアして利用することが可能です。

仮想マシンの管理だけでは他の仮想化管理ソフトウェアと変わりませんが、OpenStackは仮想マシンの管理に加え、付随するネットワークやストレージとも連携します。これにより大規模環境の管理を自動化し効率的な運用が可能になります。

以上の様な特徴を持つため、OpenStackは各国の通信キャリアやサービスプロバイダ等の大規模にサービスを展開したい事業者に好んで採用されています。

1.2 開発の経緯

OpenStackは今から約2年前に、NASA(米航空宇宙局)とRackspace Hosting社によって開発がスタートしました。
当初はNASAが開発していたNebula(Amazon EC2相当)と、Rackspace Cloud Servers(Amazon S3相当)という2つのソフトウェアをマージするところからスタートし、NovaとSwiftが誕生しました。

その後、5回のメジャーバージョンアップを行った今では、Nova, Swiftに加え、Glance, Keystone, horizonという新しいコンポーネントが開発されました。また次のメジャーバージョンアップ(2012.10予定)ではQuantum, Cinderといった新しいコンポーネントの追加も計画されております。

1.3 OpenStackを構成するコンポーネント

OpenStackは複数の独立したコンポーネントが連携することでIaaS環境を実現します。
各コンポーネントの機能を簡単に解説します。

(1) nova
仮想マシンや簡易的なネットワーク・ボリューム機能を実現します。
(2) swift
オブジェクトストレージ機能を実現します。
(3) glance
仮想マシンのテンプレートやスナップショットの機能を提供します。
(4) keystone
OpenStack全体の認証・認可の機能を提供します。
(5) horizon
Webのダッシュボードを提供します。
(6) quantum
より先進的なネットワーク機能を提供します。
(7) cinder
高度なボリューム機能を提供します。

これらのコンポーネントは単独でも利用することが可能です。
今回はこのOpenStackを実際に動かして、どんなソフトウェアなのか体験してもらえればと思います。

2. OpenStackのインストール方法

OpenStackをインストールするにはいくつかの方法があります。

(1) DevStack(開発者用の簡易インストーラー)
(2) apt-get, yum/rpm を使う
(3) githubからのソースを利用する

1の難易度が最も低く、3が最も高くなります。
今回は「まずは使ってみよう」という事で、DevStackを使ってOpenStack環境を構築してみましょう。

3. 環境の準備

OpenStack環境は実行環境を選ばず、さまざまな環境上にインストールできますが、
今回は仮想化対応の実機にインストールしていこうと思います。

インストールに使用したマシンは以下の通りです。

機種:HP ML350 G5
CPU :Xeon L5335 2GHz 1P/4C
ストレージ:SAS 15K 72GB *4(RAID5)
メモリ:12GB

機種:HP ML115 G1
CPU :AMD Opteron 1210 1.8Ghz
ストレージ:SATA 80GB
メモリ:8GB

インストールの環境として、仮想環境上の Ubuntu12.04 Server(x64) を利用します。
インストールメディアは公式サイトより ubuntu-12.04-server-amd64.iso をダウンロードしてください。
http://www.ubuntu.com/

3.1 Ubuntuインストール時の流れ

実機にUbuntu Serverをインストールします。
Ubuntu Serverのインストールは以下の流れで行ってください。

(1) インストーラー言語の選択
→ “English” を選択



(2) インストールディスクの起動メニュー
→ “Install Ubuntu Server” を選択



(3) 言語の選択
→ “English” を選択
(4) 地域の選択
→ “Other” → “Asia” → “Japan” を選択
(5) ロケールの選択
→ “United States” を選択
(6) キーボードの自動検出
→ ”No” を選択
(7) キーボードの選択
→ 自分のキーマップにあったものを選択
(8) ホスト名 を入力
→ 自分の好きなホスト名を設定
(9) 一般ユーザを作成
→ ユーザを作成
(10) タイムゾーンの選択
→ “Asia/Tokyo” を選択
(11) パーティションの作成
→ “Guided – use entire disk and set up LVM” を選択
(12) パーティションの確認
→ / 領域に20GB以上割り当てられている事を確認
(13) HTTP Proxyの選択
→ 必要であれば設定
(14) Taskselの設定
→ “No automatic updates” を選択
(15) ソフトウェアの選択
→ “OpenSSH Server” のみ選択
(16) Grubのブートローダーをインストール
→ “Yes” を選択
(17) インストールの終了
→ “Continue” を選択して再起動

以上でUbuntu Serverのインストールが終了します。
正常に起動することを確認します。

3.2 インストール後の作業

インストール後のUbuntu ServerはDHCPサーバーから動的なIPを取得した状態で起動しますので、
OpenStackのホストに固定IPを割り当ててください。

Ubuntu ServerでIPアドレスを設定するには、以下のファイルを編集します。

以下はローカルエリアネットワーク「192.168.128.0/24」上に構築する例を示しています。
OpenStack環境はIP:192.168.128.100を設定します。

$ sudo vi /etc/network/interfaces

# The primary network interface
auto eth0

#iface eth0 inet dhcp
(上記をコメントアウトして以下のように追記)
iface eth0 inet static
address 192.168.128.100
netmask 255.255.255.0
gateway 192.168.128.1
dns-nameservers 192.168.128.1

IP設定が終わったら、ネットワークを再起動します。

$ sudo ifdown eth0
$ sudo ifup eth0

4. DevStackを使ったインストール

OpenStackホストの準備ができたらいよいよOpenStackの導入に入ります。
なお、これ以降のインストール作業は、インストール時に作成した一般ユーザで行います。

4.1 gitのインストール

まずgitをインストールします。

 
$ sudo apt-get update
$ sudo apt-get install -qqy git

4.2 DevStackの取得

githubよりDevStackを取得します。

 
$ cd ~
$ git clone https://github.com/openstack-dev/devstack.git
$ cd ~/devstack

安定版のEssexを使うようにブランチを取得します。

 
$ git checkout -b essex remotes/origin/stable/essex

上記コマンドを実行して成功すると、以下のように標準出力されます。

 
:
Branch essex set up to track remote branch stable/essex from origin.
Switched to a new branch 'essex'

以上で、DevStackのインストールは終わりです。
次にDevStackの設定を行ないます。

4.3 DevStack環境設定

まずは、localrcファイルを作成します。
localrcファイルに環境変数を設定する事で、DevStackの動作環境を設定できます。

 
$ cd ~/devstack
$ vi localrc

■基本的な設定事項

以下のようにlocalrcに記述してください。

 
ADMIN_PASSWORD=openstack
MYSQL_PASSWORD=stackdb
RABBIT_PASSWORD=stackqueue
SERVICE_PASSWORD=$ADMIN_PASSWORD
HOST_IP=192.168.128.100
SERVICE_TOKEN=tokentoken
FLAT_INTERFACE=br100
 

※HOST_IPには固定化した自分自身のアドレスを指定します。

■導入するOpenStackバージョンの指定

DevStackは標準で開発版(最新版)のOpenStackをインストールしようとします。
以下のようにlocalrcを記述して、安定版をインストールするように指定します。

 
GLANCE_BRANCH=stable/essex
HORIZON_BRANCH=stable/essex
KEYSTONE_BRANCH=stable/essex
NOVA_BRANCH=stable/essex
GLANCE_BRANCH=stable/essex
QUANTUM_BRANCH=stable/essex
SWIFT_BRANCH=1.4.8

以上でDevStackの設定は完了です。
次にDevStackを実行して、OpenStack環境の導入を行ないましょう。

4.4 DevStack実行

DevStackの実行にはstack.shというシェルスクリプトを実行します。

 
$ cd ~/devstack
$ ./stack.sh

インストールを実行する際は、ホスト側でゲスト側でも端末にscreenを使わないようにしましょう。
DevStackのインストール中に内部でscreenが起動するため、screenの中でscreenが起動して面倒なためです。

マシンスペックや回線速度に依存しますが、約15分ほどでOpenStackのインストールが終わりますので、インストールが終わるまでしばし待ちましょう。

OpenStackのインストールが成功すると、以下のようなメッセージが表示されます。

 
:
Horizon is now available at http://192.168.128.100/
Keystone is serving at http://192.168.128.100:5000/v2.0/
Examples on using novaclient command line is in exercise.sh
The default users are: admin and demo
The password: openstack
This is your host ip: 192.168.128.100
stack.sh completed in 926 seconds.

DevStackの設定が完全でなかったり、正しくなかったりした場合、stack.shの実行中に停止したり、エラー終了となることがあります。stack.shが完走しない場合は設定を見直してください。

シェルスクリプトが完走したらOpenStack環境の導入は完了です。
次で早速使ってみましょう。

5. 使ってみる

OpenStack環境の導入が終わったら早速使ってみましょう。

5.1 Webからのアクセス

ブラウザからhorizonというWebインターフェイスにアクセスします。
今回の例ではURLはhttp://192.168.128.100/です。

ユーザーアカウントは以下の通り入力してログインしてください。

  • ユーザ名:admin
  • パスワード:openstack




ログインすると以下のような画面が表示されるはずです。

仮想マシンの作成や、ボリュームの作成等の基本的な操作が行えます。



立ち上げたインスタンスはWebインターフェイスから操作することもできます。


■キーマップの設定

DevsStackが導入するnova.confの初期設定では正しいキーマップが設定されていません。
Webインターフェイスで正しく操作するには設定を以下のようにファイルの末尾に追記してください。
設定変更後はいったんOpenStackホストを再起動してください。

 
$ sudo vi /etc/nova/nova.conf
vnc_keymap=ja

VNCコンソールの操作がキーボードのキーマップが日本語配列に設定されます。
ただし、デフォルトの状態ではCirrosは日本語キーマップで操作できませんので注意してください。

5.2 コマンドラインからの操作

OpenStackのCLIは多くのコマンドとそのサブコマンドから構成されています。
CLIでの操作には大きく2つの方法があります。
一つがOpenStack標準のコマンドを使う方法と、Euca2oolsというAmazon EC2用のツールを利用する方法です。
OpenStackはAmazon EC2/S3互換のAPIを備えるため、Euca2oolsを利用することができます。

今回は利用方法がシンプルなEuca2oolsを紹介します。

まず利用には環境変数の設定が必要になります。DevStackでは予め設定ファイルが準備されています。

$ cd ~/devstack
$ source eucarc

sourceコマンドを使ってeucarcファイルを読み込んだあとは以下のようなコマンドをそれぞれ利用可能です。

・仮想マシンテンプレートの一覧を確認する

$ euca-describe-images

・仮想マシンを起動する(ami-1は一覧で表示されたテンプレートの識別子)

$ euca-run-instances ami-1

・仮想マシンの一覧を取得する

$ euca-describe-instances

・仮想マシンを停止する(i-4は一覧で表示されてたテンプレートの識別子)

$ euca-terminate-instances i-4

※インスタンスの識別子の0は省略可能です。

6. OpenStackの再起動

DevStackで作った環境はOSの再起動を行なっても、自動的に各デーモンが起動してきません。
OSを再起動後にOpenStackを起動するには、rejoin-stack.sh スクリプトを使用します。

$ cd ~/devstack
$ ./rejoin-stack.sh

このスクリプトを起動すると、screenが起動し各仮想コンソールでOpenStackの各デーモンが起動し、ログが標準出力に出力されます。
screenから通常のコンソールに戻るには、Ctrl-a d として、screenをデタッチします。
(screenの使い方については「GNU screen」で検索してください)

7. 発展

これで一通りのOpenStackの機能を試してみることができました(・・・でしょうか?)

OpenStackをサービスや社内で使ってみたいと思った方がいらっしゃいましたら、次のステップとして実際に使うOS(RHELやCentOS、Ubuntu等)で動かすことに挑戦したり、Githubから入手したソースからの構築に挑戦してみてください。DevStackのコードがインストールの助けになるはずです。
それがうまく動かせるようになったら、次はコンポーネントを分散させ、そして2重化の構成へと挑戦してみてください。

更にその先にはソースコードを読んで、不満な部分を改善したり、新しい機能をコミュニティに提案したりと、楽しむ要素はまだまだあります。

8. 最後に

OpenStackは活発に開発が進行しているソフトウェアであり、次々と新しい機能が取り込まれています。
皆様もOpenStackを使うだけでなく、ぜひ開発にも参加してみてください。

9. 情報源

以下はOpenStack関連のリンク集です。
こちらも是非ご覧ください。

Comments are closed.