Tech Sketch Bucket of Technical Chips by TIS Inc.

OpenStack IcehouseをAll-In-Oneで構築する

Pocket

以前、Tech-Sketchの記事 「OpenStack Havanaを構築してみる」 にて、Packstackを利用してOpenStackのAll-In-One構成を構築する方法について紹介しました。
今回、2014年4月17日にリリースされた最新版(OpenStack Icehouse)を改めて構築してみたので、構築手順のアップデート版を紹介します。


OpenStack Icehouseの概要

2014年4月17日に、 OpenStack の9番目のメジャーバージョンである Icehouse版がリリース されました。前バージョンのHavana版と比較して、約350の新機能追加と約2902のバグフィックスが行われています。個人的に気になった変更点を以下に挙げます。

Nova (Compute)

  • ライブアップグレードに対応しました。制約つきではあるものの、クラウド全体を停止させずに稼働中のコンピュートノードをアップグレードできるようになりました。
  • スケジューラがホスト一覧をキャッシュできるようになり、性能が向上しました。

Keystone (Identify)

  • 新規にv3 APIが実装されました。Icehouse版では、前バージョンのv2 APIも継続してサポートされています。
  • v3 APIの機能として、シングルサインオンや、ユーザが自身のパスワードを変更できるようになりました。

Horizon (Dashboard)

  • 操作メニューがアコーディオン式に変更されました。
  • ネットワークを作成するための一連の操作が、ウィザードで行えるようになりました。
  • 管理画面からしか変更できなかったユーザのパスワードが、管理者でないユーザ自身でも変更できるようになりました。
  • インスタンスやネットワークの一覧をフィルタリングできるようになりました。

Neutron (Networking)

  • 多くの既存プラグインやドライバに修正が行われ、性能や安定性が向上しました。

Heat (Orchestration)

  • テンプレートを編集する際の推奨フォーマットとして、 HOTテンプレート がサポートされました。
  • オートスケール対応のリソースをはじめ、新規リソースが数多く実装されました。

Trove (Database Service)

  • Database as a Serviceを提供する機能であり、Icehouse版からOpenStackのコア・コンポーネントとなりました。
  • 現時点では、MySQLとPerconaの全機能と、全機能ではないもののMongoDB、Redis、Cassandra、Couchbaseについてサポートしています。

PackStackを利用したOpenStackの構築

PackStackRDOコミュニティ が提供しているOpenStackのインストールツールです。RHEL、Fedora、CentOSといったOSに、簡単にOpenStackを構築することができます。 以前の記事 では、PackStackを利用してCentOS 6.5にHavana版のOpenStackを構築しました。
以前の記事では、PackStackのデフォルトパラメータで構築を行ったため、SwiftやHeatがインストールされていませんでした。今回は、PackStackのパラメータを事前に確認し、インストールするコンポーネントやユーザパスワードなど事前に設定する方法を紹介します。

CentOSの環境設定

今回OpenStackを構築した環境は、以下の通りです。

  • OS: CentOS-6.5-x86_64-minimal
  • メモリ: 48GB
  • ディスク: 75GB
  • ネットワーク(デバイス名やIPアドレスは環境に合わせて読み替えてください)

以下の手順はすべてrootユーザで行っています。

DNSの設定

DNSが設定されていない場合は、 /etc/resolv.conf にDNSのIPアドレスを記述します。

Proxyの設定

外部との通信にProxyサーバを経由する場合は、環境変数にProxyの設定を行います。その際は、OpenStackのコンポーネント間での通信がProxyサーバを経由しないよう、自身のIPアドレスを no_proxy に設定しておきます。

NTPの設定

NTPをインストールします。

/etc/ntpd.conf に参照するNTPサーバの設定を追加します。

サービスの自動起動を設定します。また、起動時に時刻同期を行うよう設定します。

サービスを起動します。

SELinuxの設定

PackStack実行時のエラーを回避するため、SELinuxをPermissiveモードに設定します。

カーネルパラメータの設定

OpenStackは、パケット送受信やフィルタリングなどをiptablesで制御します。ネットワークブリッジ上でもiptablesによる制御が有効になるよう、カーネルパラメータの設定を変更します。

パッケージの最新化

インストールされているパッケージを最新版にアップデートしておきます。

RDOのパッケージとPackStackの取得

PackStackの実行

PackStackを実行して、OpenStackの自動構築を行います。今回は、すべてのコンポーネントをひとつのホストにインストールするAll-In-One構成で構築します。

PackStackの実行方法

PackStackには以下の3つの実行方法があります。

  1. pacstack コマンドを実行すると、インストールするサービスやホストのアドレスなどを対話形式で入力することができます。すべての入力が完了すると、設定したパラメータに従ってOpenStackが構築されます。
  2. packstack --gen-answer-file を実行すると、Answer Fileと呼ばれる設定ファイルが作成されます。Answer Fileの内容を適宜変更し、 packstack --answer-file を実行することで、Answer Fileの内容に従ってOpenStackを構築することができます。
  3. packstack --allinone を実行すると、全てのコンポーネントをひとつのホストにインストールするAll-In-One構成でOpenStackが自動構築されます。また、実行時にオプションを指定することで、パラメータを変更することができます。

実際にPackStackを実行する際は、事前にパラメータを確認できる2の方法をオススメします。Answer FileにはAll-In-One構成のパラメータがデフォルトで設定されるため、 packstack --allinone を実行しなくともAll-In-One構成での構築は可能です。

Answer Fileの作成

answer.txtという名前でAnswer Fileを作成します。

Answer Fileの設定

Answer Fileの内容を確認して、適宜変更します。この記事の執筆時点では、Icehouseの新機能であるTroveのパラメータは用意されていなかったため、今回はインストールしません。また、デフォルトではHeatがインストールされない設定になっていたため、インストールするようにパラメータを変更します。

変更しておくべきAnswer Fileのパラメータ

Answer Fileのパラメータについては、 こちらのサイト が参考になります。

  • CONFIG_KEYSTONE_ADMIN_PW, CONFIG_KEYSTONE_DEMO_PW
    PackStackによって作成されるユーザのパスワードです。デフォルトでランダムなパスワードが割り当てられるので、適宜変更しておきます。

  • CONFIG_CINDER_VOLUMES_SIZE
    Cinderに割り当てられるディスクサイズです。デフォルトでは20GBなので、環境に合わせて変更しておきます。

  • CONFIG_KEYSTONE_TOKEN_FORMAT
    Keystoneのトークンフォーマットを設定します。PKIだとトークンが長く、コンソール等に表示した際に見辛くなるため、UUIDに変更しておきます。

PackStackの実行

作成したAnswer Fileを利用してPackStackを実行します。

最初にrootユーザのパスワードを聞かれるので、パスワードを入力します。その後は、puppetが実行され、OpenStackが自動構築されます。今回の環境では、40分程で構築が完了しました。

packstack-installation-completed.jpg

構築後の環境設定

構築結果の確認

構築が完了すると、PackStackの実行ディレクトリにkeystonerc_adminとkeystonerc_demoというファイルが作成されています。これらのファイルには、デフォルトで作成されたadminユーザとdemoユーザの認証情報が記載されています。

環境変数にadminユーザの認証情報を設定し、OpenStackの状態を表示します。インストールされたサービスの状態、インスタンスやネットワーク等の一覧が取得できることを確認します。

openstack-status.jpg

ネットワークブリッジの設定

構築が完了すると、br-ex、br-int、br-tunというブリッジインターフェースが作成されています。
以下のコマンドでブリッジインターフェースが作成されていることを確認します。

ovs-br-list.jpg

これらのインターフェースは、OpenStack上の仮想マシンが外部ネットワークや内部の他の仮想マシンと通信する際に利用されます。ネットワークインターフェースの設定を変更し、仮想マシンが外部ネットワークと通信できるよう設定します。

/etc/sysconfig/network-scripts/ifcfg-br-ex に、eth0に設定していた固定IPアドレスを設定します。

/etc/sysconfig/network-scripts/ifcfg-eth0 を変更し、br-exとのブリッジを設定します。

ネットワークを再起動し、eth0がbr-exに関連づけられていることを確認します。

br-ex-port-list.jpg

管理画面の確認

ここまでの設定が完了すれば、ダッシュボード画面からOpenStackを操作していくことができます。ブラウザから、http://192.168.0.xxx/dashboard/にアクセスすると、OpenStackのログイン画面が表示されます。adminユーザでログインしOpenStackの管理画面が表示できることを確認します。

openstack-login-dashoboard.jpg

openstack-admin-dashboard.jpg

おわりに

今回は、OpenStack構築前の設定から管理画面にアクセスできるようになるまでの手順を紹介しました。実際に仮想マシンを稼動させるためには、仮想ネットワークの作成やマシンイメージの登録等が必要になりますが、オーケストレーションツールを利用することにより一連の操作を自動的に行うことができます。次回は、OpenStackのオーケストレーション機能であるHeatについて紹介したいと思います。

エンジニア採用中!私たちと一緒に働いてみませんか?