CentOS 7.2で稼働するOpenStack Mitaka 1

OpenStack構築上の注意

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

古賀 政純

2016年6月29日 9:00

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 パブリックネットワーク(ユーザーが利用するネットワーク)
ens9 OpenStackの内部通信用ネットワーク

今回は、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ボリュームグループの作成は完了しました。

この記事をシェアしてください

人気記事トップ10

人気記事ランキングをもっと見る