みなさん、こんにちは。コンテンツ・メディア第1事業部インフラ担当の藤本佳世です。今回は、OpenStackの続きで、7つのコンポーネントとノードの役割、構築手順についてお話しします。

7つのコンポーネントとノードの役割

前々回の記事でも少し触れましたが、OpenStackは7つの機能から構成されます。
注意:OpenStackのバージョンアップに伴い、コンポーネントの数も更新されます。実際には、16のコンポーネントが存在しますが、今回は、構築で重要となる7つについてお話ししたいと思います。

コンポーネント 役割
Nova 仮想マシンの提供と管理を行う
Keystone ユーザー認証・管理を行う
Horizon Webブラウザ経由で管理・操作できるGUIコンソールを提供する
Glance 仮想イメージの管理を行う
Cinder 仮想マシンが使用するストレージ管理を行う
Neutron 仮想ネットワークの管理を行う
Swift クラウドストレージを提供する

役割ノードの紹介

ノードタイプ 役割
controllernode OpenStack 環境が機能するために必要な管理ソフトウェアサービスを実行
computenode OpenStack 内の仮想マシンインスタンスを実行
storagenode OpenStack環境に必要な全データを保管
networknode Openstack環境に必要なすべての仮想ネットワーキングを実行

各コンポーネントとノードの紐づけ

各コンポーネントごとのノードの役割を下記の図で表しています。

Nova controllernode computenode
Keystone controllernode
Horizon controllernode
Glance controllernode
Cinder controllernode storagenode
Neutron controllernode computenode networknode

構築にあたって

7つのコンポーネントをどのサーバノードで稼働、同居させるかは、負荷分散や冗長化の観点から、とても大切な設計です。みなさんもご自身の環境、サーバスペックにあった構成を組んでいただければと思いますが、フリューでは、サーバ8台構成でOpenStackを構築しました。また、今まではCentOSを使うことが多かったのですが、OpenStackでは、Ubuntu14.04LTSをホストOSとして採用しました。

理由

  1. Ubuntuは標準パッケージでOpenStack環境が用意されている。
  2. Ubuntu/debianの基本方針として、ディストリビューションのバージョンが変更されない限り、パッケージのバージョンは更新しない方針なので、不意にOpenStack環境がバージョンアップされない。 ※Firefoxなど例外あり
  3. LTSを使用すれば、2年または4年毎くらいでディストリビューションのバージョンアップが可能。 ※サポート期間は5年

構築内容

ホストOS: Ubuntu14.04LTS (8台構成), OpenStackバージョン: Liberty ※Swiftは未検証

コンポーネント ノード
サーバ1 Keystone/Horizon/Nova/Cinder/Glance/Neutron
※1 MySQL/Memcached/RabbitMQ
※2 Heartbeat
controllernode
サーバ2 Keystone/Horizon/Nova/Cinder/Glance/Neutron
※1 MySQL/Memcached/RabbitMQ
※2 Heartbeat
controllernode
サーバ3 Nova/Cinder/Neutron computenode/storagenode
サーバ4 Nova/Cinder/Neutron computenode/storagenode
サーバ5 Nova/Cinder/Neutron computenode/storagenode
サーバ6 Nova/Cinder/Neutron computenode/storagenode
サーバ7 Neutron networknode
サーバ8 Neutron networknode

※1 関連サービスのインストールについて
OpenStackの各コンポーネントが必要とするサービスをインストールする必要があります。

MySQL Keystone/Horizon/Nava/Glanceの管理情報を保存するデータベースに使用
Memcached Horizonでのアクセス時にcookieやセッション情報の一時保存に使用
RabbitMQ 各サービス間のメッセージのやり取りに使用

※2 構成上必要という認識から追加

Heartbeat MySQL(HA構成)の死活監視に使用

関連サービスとHeartbeatのインストール

フリューでは、管理情報を保存するMySQLを稼働させるサーバを2台のレプリケーション構成にし、Heartbeatで仮想IPを振り、Keystone 等のプロセスからは仮想IPを参照するようにしました。これにより、プロセスが同じデータを参照できるので、単一点障害になりにくくなります。

MySQL/Memcached/RabbitMQ/Heartbeatインストール

MySQL設定ファイル(例)

レプリケーション設定や最適化パラメータが設定などに必要です。

Memcached設定ファイル(例)

RabbitMQの設定

各サービスからMQを使用する為のユーザ/パスワードを登録する

Heartbeat設定ファイル

OpenStackコンポーネントインストール

すべての手順を書くと、とっても長くなってしまうので、ポイントをまとめて説明していきます。

Keystone(ユーザー認証・管理を行う)

インストール

Keystone用のユーザーとデータベースをMySQLに登録

Keystoneの設定(例)

テナント作成

テナントと呼ばれる、OpenStack ユーザーのグループを作成します。※adminとserviceを作成

adminテナント

serviceテナント

Keystoneに各コンポーネント用のユーザを登録

adminとserviceテナントを作成したので、各コンポーネントのユーザを所属を指定して登録します。

adminユーザの作成(adminテナント所属)

Glanceユーザの作成(service テナント所属)

Novaユーザの作成(serviceテナント所属)

Cinderユーザの作成(serviceテナント所属)

Neutronユーザの作成(serviceテナント所属)

サービスエントリの作成

次に、ユーザーを認証するために、各 コンポーネントのサービスユーザーを作成する必要があります。

 Glance(仮想イメージの管理を行う)

インストール

Glance用のユーザとデータベースをMySQLに登録

基本設定ファイル(例)

起動

Nova(仮想マシンの提供と管理を行う)

インストール

controllernodeの場合

computenodeの場合

Nova用のユーザとデータベースをMySQLに登録

基本設定ファイル(例)

起動

controllernodeはこちら

computenodeはこちら

Horizon(Webブラウザ経由で管理・操作できるGUIコンソールを提供する)

インストール

ダッシュボードの設定(例)

起動

ブラウザで以下のurlにアクセスしてみます。 http://(サーバのホスト名)/horizon/

ログイン画面が表示されます。

openstack1

Cinder(仮想マシンが使用するストレージ管理を行う)

インストール

controllernodeの場合

storagenodeの場合

 Cinder用のユーザとデータベースをmysqlに登録

基本設定ファイル(例)

起動

Neutron(仮想ネットワークの管理を行う)

インストール

controllernodeの場合

computenodeの場合

networknodeの場合

Neutron用のユーザとデータベースをMySQLに登録

基本設定ファイル(例)

controllernode:

今までのcinder.confと同じように、各サービスの認証情報を記述してきます。内容はほぼ同じのなので割愛します。

computenode:

networknode:

ファイルが多いので、すべての内容を記述するのはやめておきます。

起動

controllernode:

computenode:

networknode:

構築完了

構築については以上となります。

感想

実際にOpenStackを使いこなすために、構築設計や各コンポーネントの設定などで約1~2か月かかりました。みなさんもご自身の環境にあった構成を組む際に、参考にしていただければと思います。

次回のブログでは、Neutronネットワーク設定についてお話しする予定です。ここが一番苦労しました。単一点障害を回避するために、「Open vSwitchでVRRP(L3HA)を使った高可用性構成」を構築しました。また、OSイメージ登録やインスタンス作成、ボリューム機能、セキュリティグループ設定などなど、これから続けてOpenStack関連のブログを掲載する予定ですので、楽しみにしていて下さい。

最後に

今回のブログはとても長くなってしまい、最後まで読んでくださってありがとうございます。OpenStackとは直接関係しませんが、私が働く職場の雰囲気を少し皆さんにお見せしようと思い、チームリーダが写真を取ってくれました。普段こんな雰囲気の中で、仕事をしています。

Processed with VSCO with a2 preset

参考

Openstack公式ドキュメント