OpenStack Kilo(RDO版)でのMidoNet構築手順(1)
今回と次回の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のインストール」部分までご説明します。
サーバ | 役割 | hostname | OS | OpenStack | MidoNet |
---|---|---|---|---|---|
Controller | 管理機能 | ctrl.midonet. example.com | CentOS(7.1) | RDO版(Kilo) | v2015.06 |
Compute 1 | Compute | cmpt1.midonet. example.com | |||
Compute 2 | Compute | cmpt2.midonet. example.com | |||
NSDB 1 | 構成DB | nsdb1.midonet. example.com | - | ||
NSDB 2 | 構成DB | nsdb2.midonet. example.com | - | ||
NSDB 3 | 構成DB | nsdb3.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 | - | - |
DNS | DNS | 任意 | 任意 | - | - |
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形式となります。
(b)CentOSネットワーク設定
サーバのhostnameを設定します。それぞれのNICで「この接続が利用可能になったときは自動的に接続する」のチェックを入れてください。図1のようなネットワーク構成を作るため、表2のとおりに設定します。Target、VyOSを除き、eth0はManagement Network、eth1はGuest(Tunnel)Network、eth2は上流との接続用Networkとして利用します。
サーバ | hostname | eth0 | eth1 | eth2 |
---|---|---|---|---|
Controller | ctrl.midonet. example.com | 192.168.10.101/24 | 192.168.20.101/24 | - |
Compute 1 | cmpt1.midonet. example.com | 192.168.10.102/24 | 192.168.20.102/24 | - |
Compute 2 | cmpt2.midonet. example.com | 192.168.10.103/24 | 192.168.20.103/24 | - |
NSDB 1 | nsdb1.midonet. example.com | 192.168.10.104/24 | - | - |
NSDB 2 | nsdb2.midonet. example.com | 192.168.10.105/24 | - | - |
NSDB 3 | nsdb3.midonet. example.com | 192.168.10.106/24 | - | - |
GW 1 | gw1.midonet. example.com | 192.168.10.107/24 | 192.168.20.107/24 | 172.16.255.1/30 (後で削除) |
GW 2 | gw2.midonet. example.com | 192.168.10.108/24 | 192.168.20.108/24 | 172.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)
(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