OpenStack構築上の注意

2016年6月29日(水)
古賀 政純

OpenStackの新連載がスタートします。本連載では、2016年4月にリリースされたOpenStack Mitakaの導入手順をご紹介します。OpenStack Mitakaは、Red Hat系のディストリビューションやUbuntu Serverなどで稼働させることが可能ですが、Red Hat系ディストリビューション向けには、構築を自動化するツール「Packstack」が存在します。今回は、Packstackを使ったOpenStack Mitakaの導入手順、GUIを使っての運用管理手順、ソフトウェア定義型ネットワークの作成、そして、実際にユーザーがOpenStack環境で利用するゲストOSの起動方法などを紹介します。

OpenStack構築上の注意

まず、OpenStackを構築する際に注意すべき点は、インストール対象のサーバーの物理メモリの容量があげられます。必要な最低限のメモリ容量については、以下のOpenStackのドキュメントが参考になりますので、必ず参照してください。

http://docs.openstack.org/mitaka/install-guide-rdo/overview.html#figure-hwreqs

上記URLには、最小メモリ要件が記載されていますが、もしこのメモリ容量よりも下回る環境でインストールを行うと、メモリ不足に陥り、PackstackによるOpenStackの構築処理が停止するか、挙動が不安定になる可能性があります。Packstackに限らず、OpenStackではさまざまなサービスが稼働するため、CPUコア数の要件、最小メモリ要件が設けられています。テスト環境では、少ないメモリ容量も想定されるかと思いますが、メモリ容量が少ない場合は、OpenStackの各種コンポーネントの動作に影響を与えますので、最小メモリ要件を超えるハードウェア環境を用意してください。

ネットワークの設定

本番環境では、サービス毎に物理サーバーを複数台に分け、サービスの高可用性を考慮してOpenStackを構築する必要がありますが、今回、RDOで提供されているPackstackを使うため、OpenStackを構築する物理サーバーは1台ですが、NICは2枚搭載しています。簡易的な開発環境であれば、NICは1枚でもかまいませんが、今回は、NICを2枚搭載した場合のPackstackの設定も含めて解説するため、以下の環境を想定しています。

ネットワークの種類

NICネットワークの種類
eth0パブリックネットワーク(ユーザーが利用するネットワーク)
ens9OpenStackの内部通信用ネットワーク

今回は、eth0を経由して、インターネットにアクセスでき、パッケージなどのダウンロードができることを前提とします。また、内部通信用のens9には、IPアドレスを付与する必要があります。インターフェースにIPアドレスが付与されていないと、PackstackによるOpenStackの自動構築が途中で停止する場合があります。

CentOS 7インストール後の設定

まず、物理サーバーにCentOS 7.xをインストールします。パッケージは最小限でかまいません。OSのインストールが完了したら、IPv6を無効にします。

# echo "net.ipv6.conf.all.disable_ipv6 = 1" >> /etc/sysctl.conf
# sysctl -p
# cat /proc/sys/net/ipv6/conf/all/disable_ipv6
1

/etc/hostsにホスト名を登録しておきます。

# vi /etc/hosts
172.16.1.121    n0121   n0121.jpn.linux.hpe.com

OpenStackの内部通信用のNICのens9の設定ファイルを作成するため、MACアドレスを調べます。

# ip a
...
2: ens9: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 52:54:00:da:2b:9a brd ff:ff:ff:ff:ff:ff
...

ens9用の設定ファイルを作成します。調べたMACアドレスを含めて記述します。

# vi /etc/sysconfig/network-scripts/ifcfg-ens9
NAME="ens9"
HWADDR=52:54:00:da:2b:9a
ONBOOT=yes
BOOTPROTO=static
TYPE=Ethernet
IPADDR=192.168.1.121
PREFIX=24

現時点でのネットワークの設定ファイルの状況を確認しておきます。後にブリッジを構成しますので、ここでは、PackstackによるOpenStackの自動構築のための一時的なネットワーク設定です。

# cat /etc/sysconfig/network-scripts/ifcfg-eth0
NAME="eth0"
HWADDR=52:54:00:72:8C:0A
ONBOOT=yes
NETBOOT=yes
UUID="5b4d4e97-71eb-4f46-8e05-3065c92a262d"
BOOTPROTO=none
TYPE=Ethernet
DNS1="172.16.1.1"
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPADDR=172.16.1.121
PREFIX=16
GATEWAY=172.16.1.1
IPV6_PEERDNS=yes
IPV6_PEERROUTES=yes

# cat /etc/sysconfig/network-scripts/ifcfg-ens9
NAME="ens9"
HWADDR=52:54:00:da:2b:9a
ONBOOT=yes
BOOTPROTO=static
TYPE=Ethernet
IPADDR=192.168.1.121
PREFIX=24

CentOS 7.xの場合は、NetworkManagerを停止し、OS起動時のサービスの自動起動を無効に設定しておきます。

# systemctl status NetworkManager
# systemctl stop NetworkManager
# systemctl disable NetworkManager

テスト環境向けのセキュリティー設定

今回は、SELinuxとファイアウォールをオフに設定します。

# vi /etc/sysconfig/selinux
...
SELINUX=disabled
...

# systemctl stop firewalld
# systemctl disable firewalld

ネットワークとSELinuxの設定をシステムに反映するため、OSを再起動します。

# reboot

OS再起動後の設定確認

OS再起動後、NetworkManager、SELinux、ファイアウォールが無効になっており、OpenStackの内部通信用のNICにIPアドレスが正しく設定されていることを確認しておきます。

# systemctl status NetworkManager
●NetworkManager.service - Network Manager
   Loaded: loaded (/usr/lib/systemd/system/NetworkManager.service; disabled; vendor preset: enabled)
   Active: inactive (dead)

# getenforce
Disabled

# systemctl status firewalld
●firewalld.service - firewalld - dynamic firewall daemon
   Loaded: loaded (/usr/lib/systemd/system/firewalld.service; disabled; vendor preset: enabled)
   Active: inactive (dead)

Apr 29 03:00:36 n0121 systemd[1]: Stopped firewalld - dynamic firewall daemon.

# ip a |grep inet
    inet 127.0.0.1/8 scope host lo
    inet 192.168.1.121/24 brd 192.168.1.255 scope global ens9
    inet 172.16.1.121/16 brd 172.16.255.255 scope global eth0

cinder用のLVMボリュームの作成

PackstackによるOpenStackの自動構築では、cinderによる外部ストレージ用のサービスを設定することができます。しかし、外部ストレージが接続されていないサーバー単体の環境でcinderのテストを行う場合は、サーバーのローカルディスク内に作成したイメージファイルを使って、cinder用のLVMボリュームを作成する必要があります。Packstackの設定ファイルでcinderを有効にしたにもかかわらず、cinder用のLVMボリュームが存在しない場合、Packstackによる自動構築が失敗しますので、この時点でcinder用のLVMボリュームを作成しておくことをお勧めします。今回は、サーバーのローカルディスク内に作成したイメージファイルを使って、cinder用のLVMボリュームを作成します。まず、cinder用のLVMボリュームとなるイメージファイルcinder.imgをddコマンドで作成します。今回は、テスト用として、32Gバイトのイメージファイルを/rootディレクトリに作成することにします。

# dd if=/dev/zero of=/root/cinder.img bs=1024M count=32

CentOS 7.2では、ループバックデバイスを使ってイメージをマウントしますので、現在のループバックデイバスの状況を確認します。

# losetup -a

何も表示されない場合は、/dev/loop0を利用することが可能ですので、cinder.imgファイルをループバックデバイス/dev/loop0に割り当てます。

# losetup /dev/loop0 /root/cinder.img

ループバックデバイスにLVMパーティションを作成します。今回、パーティションは、GPTで割り当てます。

# parted -s /dev/loop0 'mklabel gpt'
# parted -s /dev/loop0 'mkpart primary 0 -1'
Warning: The resulting partition is not properly aligned for best performance.
# parted -s /dev/loop0 'set 1 lvm on'
# parted -s /dev/loop0 'print'
Model: Loopback device (loopback)
Disk /dev/loop0: 34.4GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags:

Number  Start   End     Size    File system  Name     Flags
 1      17.4kB  34.4GB  34.4GB               primary  lvm

ループバックデバイス/dev/loop0にLVMボリュームグループを作成します。vgcreateコマンドによりボリュームグループを作成する際に、ボリュームグループ名に「cinder-volumes」を指定します。

# partprobe /dev/loop0
# cat /proc/partitions
major minor  #blocks  name

  11        0    1048575 sr0
   8        0  134217728 sda
   8        1     512000 sda1
   8        2  132656128 sda2
   8        3    1048576 sda3
   7        0   33554432 loop0
 259        0   33553439 loop0p1

# pvcreate -y -ff /dev/loop0p1
  Physical volume "/dev/loop0p1" successfully created
# vgcreate -y -f cinder-volumes /dev/loop0p1
  Volume group "cinder-volumes" successfully created

以上で、cinder用のLVMボリュームグループの作成は完了しました。

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

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