CentOS 7でのOpenStackの構築手順

2015年2月19日(木)
古賀 政純

連載最終回は、2015年2月時点でのOpenStackの最新版「Juno」のインストール手順を取り上げます。

RDOを使ったOpenStack Junoの構築

オープンソースのクラウド基盤としてOpenStackに注目が集まっています。OpenStackは、当初、NASAや米国の大手ホスティング企業であるRackspace社が取り組み、それにベンダー各社が追随した形で現在も開発が続いています。2015年4月にリリースが予定されている開発コードネーム「Kilo」の開発に貢献している企業の1位はHP、2位がRed Hat社であり、両社だけで36%に上ります。また、HP、Red Hat社だけでなく、SUSE CloudやCanonical社のUbuntu Serverのクラウド基盤もOpenStackがベースであり、主要なベンダーがOpenStackを使ったクラウド基盤を商用製品化しています。

stackalytics.com では、OpenStackの開発に貢献している企業を知ることができる

図1:stackalytics.com では、OpenStackの開発に貢献している企業を知ることができる(クリックで拡大)

OpenStack JunoとHadoop

2015年2月現在、OpenStackの最新版は、コードネーム「Juno」です。このJunoでは、Hadoopの配備が新機能としてあげられます。OpenStackにおけるHadoopの配備は、Saharaプロジェクトと呼ばれています。まだ発展途上ですが、Hadoopクラスタをクラウドサービスとして展開したいというニーズが高まっており、OpenStackに取り込まれることになりました。2014年4月に米国サンフランシスコで開催されたRed Hat Summit 2014において、既にOpenStackによるHadoopの配備がデモンストレーションされています。

Saharaプロジェクトに関する情報

https://wiki.openstack.org/wiki/Sahara

OpenStack JunoをCentOS 7にインストールする

本連載では、2015年2月時点でOpenStackの最新版である「Juno」をCentOS 7にインストールする手順を紹介します。OpenStackは、Red Hat社が主導しているRDOと呼ばれるコミュニティの成果物であるpackstackを使うと、RHEL互換OSであるCentOS上にOpenStackのテスト環境を簡単に構築することができます。CentOS 7がリリースされた当初は、OSの仕組みが大きく変わったことが影響し、packstackでのインストールでいくつかの問題がありましたが、現時点では、致命的な問題が解消されてきており、比較的簡単に構築ができるようになっています。以下では、注意点も交えながら、packstackを使ったインストール手順を紹介します。まず、OpenStackを構築する際に注意すべき点は、物理メモリの容量があげられます。必要な最低限のメモリ容量については、以下のOpenStackのドキュメントが参考になりますので、必ず参照してください。

OpenStack Installation Guide for Red Hat Enterprise Linux 7, CentOS 7, and Fedora 20 - juno

http://docs.openstack.org/juno/install-guide/install/yum/content/ch_overview.html#example-architecture-with-neutron-networking-hw

上記URLには、最小メモリ要件が記載されていますが、もしこのメモリ容量よりも下回る環境でインストールを行うと、メモリ不足に陥り、packstackによるOpenStackの構築処理が停止するか、挙動が不安定になります。とくにCentOS 7の場合は、OSの安定稼働に必要なメモリ容量も従来のCentOSに比べて大きくなっていますので、注意が必要です。本番環境では、サービス毎に物理サーバーを複数台に分け、サービスの高可用性を考慮してOpenStackを構築する必要がありますが、今回、RDOで提供されているpackstackを使うため、OpenStackを構築する物理サーバーは1台です。まず、物理サーバーにCentOS 7をインストールします。構築するサーバーがプロキシ経由でインターネットにアクセスする場合は、yum.confファイルを編集します。

# vi /etc/yum.conf
...
proxy=http://proxy.your.site.com:8080 ←自社のプロキシサーバーのFQDNとポート番号を指定
...

Packstackでのインストールでは、プロキシーサーバーを経由した場合のインストールが完了できない問題に対処する必要がありますので、それも踏まえて以後説明します。packstackをインストールする前に、CentOS 7を最新にアップデートします。

# yum update -y
# reboot

次にRDOのコミュニティが提供しているリポジトリをインストールします。

# yum install -y https://repos.fedorapeople.org/repos/openstack/openstack-juno/rdo-release-juno-1.noarch.rpm

リポジトリを登録したら、packstackをインストールします。

# yum install -y openstack-packstack

仮想化関連のパッケージをインストールしておきます。

# yum install -y qemu-kvm

SSHの公開鍵を生成します。

# ssh-keygen -t rsa

プロキシーサーバーを経由してpackstackを使ったOpenStack環境を構築する場合、ディスクイメージ等を管理するGlanceと呼ばれるプログラムがデモ用のOSイメージファイルの入手に失敗します。これを回避するため、イメージファイルをダウンロードするためのWebサーバーを別途1台用意します。WebサーバーであればOSのバージョンは問いません。Webサーバー上にデモ用のOSイメージファイル「cirros-0.3.2-x86_64-disk.img」をダウンロードします。今回は、仮に上記のWebサーバーのIPアドレスを172.16.31.8/16とすると、「http://172.16.31.8/cirros-0.3.2-x86_64-disk.img」でアクセスできるようにWebサーバーを構築し、イメージを配置しておきます。以下は、CentOS 7のWebサーバーでの設定例です。

websvr # cd /var/www/html/
websvr # wget http://download.cirros-cloud.net/0.3.2/cirros-0.3.2-x86_64-disk.img
websvr # ls -l
-rw-r--r-- 1 root root 13167616 Mar 18  2014 cirros-0.3.2-x86_64-disk.img
websvr # systemctl start httpd
websvr # systemctl stop firewalld

再度、packstackをインストールしたサーバーに戻って作業を続行します。HTTPのアクセスをプロキシーサーバー経由で行う場合は、$HOME/.bash_profileファイルにプロキシのための環境変数を設定しておきます。ここで、no_proxyを適切に設定します。この設定を誤ると後述のpackstackによるOpenStackの構築が正常に完了できません。

# vi /root/.bash_profile
...
export http_proxy="http://proxy.your.site.com:8080" ←自社のプロキシサーバーのFQDNとポート番号を指定
export https_proxy="http://proxy.your.site.com:8080" ←自社のプロキシサーバーのFQDNとポート番号を指定
export no_proxy="localhost,127.0.0.1,172.16.31.71,172.16.31.8"
...

# source /root/.bash_profile

上記では、no_proxyにローカルホスト(127.0.0.1)とOpenStackを構築するサーバー(172.16.31.71)、別途構築したWebサーバー(172.16.31.8)を登録しています。環境変数が適切に設定されているかを確認します。

# printenv |grep proxy
http_proxy= http://proxy.your.site.com:8080
https_proxy= http://proxy.your.site.com:8080
no_proxy=localhost,127.0.0.1,172.16.31.71,172.16.31.8

OpenStackのパラメータに関する初期設定の雛型ファイル(アンサーファイルと言います)をpackstackコマンドで生成します。今回、初期設定ファイルの名前は、param.txtとしました。

# packstack --gen-answer=param.txt

アンサーファイルをエディタで開いてパラメータを設定します。

# vi param.txt
...
CONFIG_NTP_SERVERS=172.16.31.8 (1)
...
CONFIG_CINDER_VOLUMES_SIZE=20G (2)
...
CONFIG_NEUTRON_ML2_TYPE_DRIVERS=vxlan,flat (3)
...
CONFIG_PROVISION_CIRROS_URL=http://172.16.31.8/cirros-0.3.3-x86_64-disk.img (4)
...
  1. OpenStackが接続するNTPサーバーを指定
  2. ブロックストレージの容量を指定
  3. 仮想ネットワーク用のドライバを指定
  4. Webサーバーを指定

アンサーファイルをpackstackにロードし、OpenStackの構築を開始します。

# packstack --answer-file=param.txt
Welcome to the Packstack setup utility

The installation log file is available at: /var/tmp/packstack/20150101-213846-QQ23jZ/openstack-setup.log

Installing:
Clean Up                                             [ DONE ]
Setting up ssh keys                                  [ DONE ]
Discovering hosts' details                           [ DONE ]
Adding pre install manifest entries                  [ DONE ]
Installing time synchronization via NTP              [ DONE ]
Preparing servers                                    [ DONE ]
Adding AMQP manifest entries                         [ DONE ]
Adding MariaDB manifest entries                      [ DONE ]
Adding Keystone manifest entries                     [ DONE ]
...
...
172.16.31.73_nagios_nrpe.pp:                         [ DONE ]
Applying 172.16.31.73_postscript.pp
172.16.31.73_postscript.pp:                          [ DONE ]
Applying Puppet manifests                            [ DONE ]
Finalizing                                           [ DONE ]

 **** Installation completed successfully ****** (1)


Additional information:
 * Warning: NetworkManager is active on 172.16.31.73. OpenStack networking currently does not work on systems that have the Network Manager service enabled.
 * File /root/keystonerc_admin has been created on OpenStack client host 172.16.31.73. To use the command line tools you need to source the file.
 * To access the OpenStack Dashboard browse to http://172.16.31.73/dashboard .
Please, find your login credentials stored in the keystonerc_admin in your home directory.
 * To use Nagios, browse to http://172.16.31.73/nagios username: nagiosadmin, password: f1af230ed8d34b76
 * The installation log file is available at: /var/tmp/packstack/20150108-093956-ElAfcp/openstack-setup.log
 * The generated manifests are available at: /var/tmp/packstack/20150108-093956-ElAfcp/manifests
  1. 正常終了した場合に表示される

構築が正常に完了すると、上記のように「 **** Installation completed successfully ******」と表示されます。

【注意】NTPサーバーにおけるエラーメッセージ

packstackは、アンサーファイル内の「CONFIG_NTP_SERVERS=」で指定したNTPサーバーへの接続に失敗するとインストールが中断されます。また、「CONFIG_NTP_SERVERS=」で指定したNTPサーバーが、インターネット上にある上位のNTPサーバーに適切に接続できないと、NTPによる時刻同期が適切に行われません。代表的なエラーメッセージとしては、「no server suitable for synchronization found」と表示され、NTPサーバー自体の設定が正しくても、上位にあるインターネット上のNTPサーバーと時刻同期ができない場合が相当します。OpenStack側で指定したNTPサーバーが、上位にあるインターネット上のNTPサーバーと時刻同期ができる必要がありますが、企業内におけるプロキシーサーバーやデータセンターにおける構築スケジュールの関係上、NTPサーバーが上位のインターネット上のNTPサーバーと接続できない場合も少なくありません。そこで、OpenStackの接続先となるNTPサーバーが、上位にあるインターネット上のNTPサーバーと同期できない場合、OpenStackの接続先のNTPサーバーのリアルタイムクロック(RTC)を使用することで代用が可能です。この設定は、OpenStackの接続先となるNTPサーバーのntp.confファイルに設定を施します。以下は、NTPサーバー上での設定例です。

ntpsvr01 # vi /etc/ntp.conf
...
restrict 172.16.0.0 mask 255.255.0.0 notrap (1)
...
server 127.127.1.0
...
  1. NTPの接続元のネットワークを設定

NTPサーバー上でntp.confファイルの設定を変更したら、NTPサービスを再起動します。NTPの設定において、通常は、「server」行で接続先のNTPサーバーを指定しますが、「server 127.127.1.0」を指定すると、上位にあるインターネット上のNTPサーバーに接続できない場合、自身のRTCを使用します。インターネット上のNTPサーバーを利用できない場合に有用ですが、RTCが提供する時刻は精度が低いため、あくまでテスト環境などでの一時的な利用に留めておいて下さい。HAクラスタ、マスタースレーブ方式のデータベースサーバー、Hadoopや分散ストレージ基盤などの複数のサーバー間で同期を取るようなシステムにおいては、時刻同期が適切に行われていないと動作が不安定になりますので、本番環境においては、RTCではなく必ずNTPサーバーによる時刻同期を行って下さい。

日本ヒューレット・パッカード株式会社 プリセールス統括本部 ソリューションセンター 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メルマガ会員のサービス内容を見る

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