OpenStack Kilo(RDO版)でのMidoNet構築手順(1)

2015年10月7日(水)
工藤 雄大

今回と次回の2回にわたって、OpenStack KiloとMidoNetを用いて、OpenStack&MidoNet環境を構築する手順をご紹介します。今回は、インストール部分までの手順をご説明します。

今回ご紹介する手順は、筆者が検証環境を構築した際のものであり、要件や環境、構築時期等により、手順に差異が生じる可能性があることをご承知おきください。また手順を単純化するため、一部に一般とは異なる手順を用いています。特にFirewall周りは全開放にしているため、環境に応じて適宜設定してください。

前提環境及び注意点

それでは実際に構築していきます。環境は表1、図1のとおりです。今回の手順は2015/08/19時点のCentOS(7.1)、RDO版OpenStack(Kilo)、MidoNet(v2015.06)パッケージで動作を確認しています。また、さまざまなサーバへ入れ替わり設定を変更していくため、設定対象のサーバを「@サーバ名」形式で記述しています。本手順では、「OSのインストール」、「OpenStackのインストール」、「MidoNetのインストール」、「OpenStackとMidoNetの連携」、「Network設定」、「VyOS環境の構築」の順で構築していきます。少しボリュームがあるため、今回は「MidoNetのインストール」部分までご説明します。

表1.1: 表1:検証構成

サーバ役割hostnameOSOpenStackMidoNet
Controller管理機能ctrl.midonet.
example.com
CentOS(7.1)RDO版(Kilo)v2015.06
Compute 1Computecmpt1.midonet.
example.com
Compute 2Computecmpt2.midonet.
example.com
NSDB 1構成DBnsdb1.midonet.
example.com
-
NSDB 2構成DBnsdb2.midonet.
example.com
-
NSDB 3構成DBnsdb3.midonet.
example.com
-
GW 1仮想・外部Networkの接続点gw1.midonet.
example.com
-
GW 2仮想・外部Networkの接続点gw2.midonet.
example.com
-
Target疎通確認用ターゲット任意--
VyOS上流Network接続用BGPルータ任意VyOS 1.1.5--
DNSDNS任意任意--
図1:検証構成図

図1:検証構成図

DNSサーバは、Management Network上に構築し、各サーバのManagement Network側のIP Addressを返すように設定します。検証にあたっては、各サーバに潤沢にメモリを割り当てることを推奨します。今回の検証では、MidoNet関連サーバには4GB、ControllerとComputeには8GBのメモリを割り当てました。特にGWは、少なくとも4GB以上割り当ててください。なお、この値はあくまでも挙動確認用として筆者が検証した際の最低値であり、MidoNetの動作推奨要件とは大きく異なります。

なお、筆者はVMware ESXi5.5上でNested Hypervisorを作り、検証しました。この場合VyOSとBGP経路情報を交換する接続する部分のスイッチ(図1のBGP~部分)では、Promiscuous Mode(無差別モード)を有効にしてください。

OSのインストール

まず、OSをインストールします。VyOSは、以降に記述する全サーバの範囲には含めません。

(1)OSのインストール、NIC名ルール変更@全サーバ

全サーバ(Controller、Compute 1、2、NSDB 1、2、3、GW 1、2、Target)にCentOSをインストールします。各サーバの役割は連載の1回目を参照してください。NIC(Network Interface Card)の結線は、図1を参照してください。

(a)CentOSインストールのNIC名変更

CentOSインストーラ起動時にタブキーを押下し、「net.ifnames=0」を追加します(図2)。これにより、インストール時のNIC名がethX形式となります。

図2:CentOSインストール時に追加するパラメータ

図2:CentOSインストール時に追加するパラメータ

(b)CentOSネットワーク設定

サーバのhostnameを設定します。それぞれのNICで「この接続が利用可能になったときは自動的に接続する」のチェックを入れてください。図1のようなネットワーク構成を作るため、表2のとおりに設定します。Target、VyOSを除き、eth0はManagement Network、eth1はGuest(Tunnel)Network、eth2は上流との接続用Networkとして利用します。

表2:ネットワーク設定値

サーバhostnameeth0eth1eth2
Controllerctrl.midonet.
example.com
192.168.10.101/24192.168.20.101/24-
Compute 1cmpt1.midonet.
example.com
192.168.10.102/24192.168.20.102/24-
Compute 2cmpt2.midonet.
example.com
192.168.10.103/24192.168.20.103/24-
NSDB 1nsdb1.midonet.
example.com
192.168.10.104/24--
NSDB 2nsdb2.midonet.
example.com
192.168.10.105/24--
NSDB 3nsdb3.midonet.
example.com
192.168.10.106/24--
GW 1gw1.midonet.
example.com
192.168.10.107/24192.168.20.107/24172.16.255.1/30
(後で削除)
GW 2gw2.midonet.
example.com
192.168.10.108/24192.168.20.108/24172.16.255.5/30
(後で削除)
Target任意10.0.0.1/24--

Target以外のeth0のDNSは、192.168.10.1に設定
Targetのみeth0のデフォルトゲートウェイを10.0.0.2に設定

(c)CentOSインストール後のNIC名確認

(a)の設定により、NIC名が変更されていることを確認します。

【NIC名がethX形式となっていることを確認】@全サーバ
# ip addr
(略)
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000

(2)OSインストール後の諸設定@全サーバ

Network Manager、selinux、firewalldを無効化します。

【Network Manager無効化】@全サーバ
# systemctl stop NetworkManager
# systemctl disable NetworkManager
# chkconfig network on
# systemctl start network

【selinux設定変更】@全サーバ
# vi /etc/sysconfig/selinux
----
【SELINUXをenforcingからpermissiveへ変更】
SELINUX=permissive 
----

【firewalld無効化】@全サーバ
# systemctl stop firewalld
# systemctl disable firewalld

無効化したNetwork Managerにあわせて、ifcfgファイルを修正します。また、Compute1、2でVT命令が有効となっていることを確認します。

【eth2のIP Addressを削除し、Linkupだけとする】@GW1、GW2
# vi /etc/sysconfig/network-scripts/ifcfg-eth2
----
【下記4つはそのまま残し、他はコメントアウト】
NAME=eth2
UUID=XXXXX
DEVICE=eth2
ONBOOT=yes
----

【DEFROUTEの削除】@Controller、Compute 1、2、GW 1、2
# vi /etc/sysconfig/network-scripts/ifcfg-eth0
----
【削除 or コメントアウト】
DEFROUTE=yes
----

# vi /etc/sysconfig/network-scripts/ifcfg-eth1
----
【削除 or コメントアウト】
DEFROUTE=yes
----

【DEFROUTEの削除】@NSDB 1、2、3
# vi /etc/sysconfig/network-scripts/ifcfg-eth0
----
【削除 or コメントアウト】
DEFROUTE=yes
----

【再起動】@全サーバ
# reboot

【DFGの確認。default viaの記述が存在していることを確認】@Target
(出力例)
# ip route
default via 10.0.0.2 dev eth0

【DFGの確認。default viaの記述が存在していないことを確認】@Target以外の全サーバ
(出力例)
# ip route
169.254.0.0/16 dev eth0  scope link  metric 1002
:
:

【VT有効化の確認】@Compute 1、2
(出力例)
# lsmod | grep kvm
kvm_intel             148081  0
kvm                   461126  1 kvm_intel

(3)リポジトリ設定@全サーバ

ネット経由またはローカルレポジトリ等を利用し、yumを用いてCentOS、RDO、MidoNetのパッケージを取得できるようにします。RDO、MidoNetのレポジトリについては下記を参照してください。

RDO Quickstart

https://www.rdoproject.org/Quickstart

Repository Configuration(MidoNet)

http://docs.midonet.org/docs/latest/quick-start-guide/rhel-7_kilo-rdo/content/_repository_configuration.html

(4)パッケージの更新@全サーバ

パッケージアップデート及び必要なパッケージをインストールします。後述のNTPの他、tcpdumpも合わせて入れることを推奨します。

【パッケージ更新】@全サーバ
# yum update
# yum install ntp tcpdump
# reboot

(5)NTP設定@全サーバ

OpenStackでは、時刻がずれているとシステムが正常に動きません。NTPによる時刻同期を推奨します。

(6)ネットワーク疎通確認@Target以外の全サーバ

必須項目ではありませんが、この時点で、各サーバのネットワークが正しく設定されていることの確認を強く推奨します。各サーバのNICインタフェースごとにIP Addressベースで相互の疎通確認をするとともに、ホスト名、FQDN名が互いに引けるかも確認します。特に各サーバのホスト名が正常に引けない場合、OpenStackが正常に動作しません。

【疎通確認。NSDB 1、2、3は、192.168.20.0/24へのping確認はしない】@Target以外の全サーバ
# ping -c1 ctrl.midonet.example.com
# ping -c1 cmpt1.midonet.example.com
# ping -c1 cmpt2.midonet.example.com
# ping -c1 nsdb1.midonet.example.com
# ping -c1 nsdb2.midonet.example.com
# ping -c1 nsdb3.midonet.example.com
# ping -c1 gw1.midonet.example.com
# ping -c1 gw2.midonet.example.com
# ping -c1 ctrl
# ping -c1 cmpt1
# ping -c1 cmpt2
# ping -c1 nsdb1
# ping -c1 nsdb2
# ping -c1 nsdb3
# ping -c1 gw1
# ping -c1 gw2
# for i in 1 101 102 103 104 105 106 107 108 ; do ping -c1 192.168.10.${i} ; done
# for i in 101 102 103 107 108; do ping -c1 192.168.20.${i} ; done
株式会社日立ソリューションズ

技術開発本部 研究開発部 オープンソース技術グループ 技師
新技術、新製品の評価及びソリューション開発に従事。ここ7、8年は仮想化関連技術の先行評価に取り組み、近年はオープンソースのクラウド技術の評価及び技術情報展開を実施している。

連載バックナンバー

Think ITメルマガ会員登録受付中

Think ITでは、技術情報が詰まったメールマガジン「Think IT Weekly」の配信サービスを提供しています。メルマガ会員登録を済ませれば、メルマガだけでなく、さまざまな限定特典を入手できるようになります。

Think ITメルマガ会員のサービス内容を見る

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