RHEL-OSP6でのDVR環境構築手順

2015年5月19日(火)
工藤 雄大

第2回では、Red Hat Enterprise Linux OpenStack Platform 6(RHEL-OSP6)上でDVR(Distributed Virtual Router)環境を構築する手順をご紹介します。今回紹介する手順は、筆者が検証環境を構築した際のものであり、要件や環境、構築時期等により、手順の過不足がありえることをご承知おきください。また手順を単純化するため、一般とは異なる手順を一部用いています。

前提環境及び注意点

それでは実際に構築していきます。環境は表1.1、図1のとおりです。今回の手順は2015/03/17時点のRHEL7(Red Hat Enterprise Linux 7)、RHEL-OSP6パッケージで動作を確認しています。

表1:検証構成

サーバController + Network ServerCompute Server1Compute Server2DNS Server
hostnamectrl.rhelosp.example.comcmpt1.rhelosp.example.comcmpt2.rhelosp.example.com任意
役割・管理機能
・Neutron
・Compute
・Neutron
・Compute
・Neutron
DNS
Operating SystemRHEL7(Red Hat Enterprise Linux 7)任意
OpenStackRHEL-OSP6-
検証構成図

図1:検証構成図

DNS Serverは、Management Network上に構築し、各サーバのManagement Network側のIP Addressを返すように設定します。なお検証にあたっては、Controller+Network Serverも含めて、すべて実機を利用することを強く推奨します(Nested Hypervisor+Promiscuous Modeで検証したところ、うまく動作しませんでした。またCompute Serverに実機を使い、Network ServerだけVMにしても同様でした)。

OSのインストール

まず、OSをインストールします。

(1)Operating Systemインストール、NIC名ルール変更

Controller + Neutron Server、Compute Server1、2をインストールします。RHEL7からNIC(Network Interface Card)の命名ルールが変更となりましたが、後述のPackstack実行時に混乱が生じるので、旧来のethX形式に戻す処理をします。

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

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

RHELインストール時に追加するパラメータ

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

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

Serverのhostnameを設定します。それぞれのNICで「この接続が利用可能になったときは自動的に接続する」のチェックを入れてください。

External Network用のNIC(eth0)には、IP Address、MASK(Subnet Mask)、DFG(Default Gateway)を設定します。Management Network用のNIC(eth1)には、IP AddressとMASK、DNS ServerのIP Addressを、Tunnel Network用のNIC(eth2)にはIP AddressとMASKを設定します。DFGの設定が必要なのは、eth0のみとなります。図1のようなネットワーク構成の場合、表 2のような設定値となります。

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

サーバController
+ Network Server
Compute Server1Compute Server2
hostnamectrl.rhelosp.example.comcmpt1.rhelosp.example.comcmpt2.rhelosp.example.com
eth0IP Address / MASK10.0.0.101/2410.0.0.102/2410.0.0.103/24
DFG10.0.0.110.0.0.110.0.0.1
DNS---
eth1IP Address / MASK192.168.10.101/24192.168.10.102/24192.168.10.103/24
DFG---
DNS192.168.10.10192.168.10.10192.168.10.10
eth2IP Address / MASK192.168.20.101/24192.168.20.102/24192.168.20.103/24
DFG---
DNS---

(c)RHEL7インストール後のNIC名変更

(a)の設定が反映されるのはインストール時のみであり、インストール後、システム上のNIC認識名は元に戻ってしまいます。そこで下記の設定を実行し、NIC名を変更します。

01[grubへnet.ifnames=0を追加]
02# vi /etc/default/grub
03----
04GRUB_TIMEOUT=5
05GRUB_DISTRIBUTOR="$(sed 's, release .*$,,g' /etc/system-release)"
06GRUB_DEFAULT=saved
07GRUB_DISABLE_SUBMENU=true
08GRUB_TERMINAL_OUTPUT="console"
09GRUB_CMDLINE_LINUX="rd.lvm.lv=rhel/root vconsole.keymap=jp106 rd.lvm.lv=rhel/swap vconsole.font=latarcyrheb-sun16 crashkernel=auto net.ifnames=0 rhgb quiet"
10GRUB_DISABLE_RECOVERY="true"
11-----
12 
13[grubへ反映]
14# grub2-mkconfig -o /boot/grub2/grub.cfg
15 
16[再起動]
17# reboot
18 
19[NIC名がethX形式となっていることを確認]
20# ip addr
21(略)
222: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP qlen 1000

(2)Operating Systemインストール後の諸設定

RHEL-OSP6はNetwork Managerに対応していないため、無効化します。すると、インストール時に作られるNetwork Manager用設定ファイルと矛盾するため、修正します。

01[Network Manager無効化]
02# systemctl disable NetworkManager
03 
04[eth0のGATEWAYの書式変更]
05# vi /etc/sysconfig/network-scripts/ifcfg-eth0
06GATEWAY0=10.0.0.1 ←削除
07GATEWAY=10.0.0.1 ←追記(GATEWAY0 をGATEWAY にする)
08 
09[eth1、eth2のDEFROUTE削除]
10# vi /etc/sysconfig/network-scripts/ifcfg-eth1
11DEFROUTE=yes ←削除
12# vi /etc/sysconfig/network-scripts/ifcfg-eth2
13DEFROUTE=yes ←削除
14 
15[再起動]
16# reboot
17 
18[DFGの確認。defaultの記述が存在していることを確認]
19# ip route
20default via 10.0.0.1 dev eth0
2110.0.0.0/24 dev eth0  proto kernel  scope link  src 10.0.0.101
22169.254.0.0/16 dev eth0  scope link  metric 1002
23169.254.0.0/16 dev eth1  scope link  metric 1003
24169.254.0.0/16 dev eth2  scope link  metric 1004
25192.168.10.0/24 dev eth1  proto kernel  scope link  src 192.168.10.101
26192.168.20.0/24 dev eth2  proto kernel  scope link  src 192.168.20.101
27 
28[VT有効化の確認]
29# lsmod | grep kvm
30kvm_intel             148081  0
31kvm                   461126  1 kvm_intel

(3)リポジトリ設定

Red Hat Networkの登録やローカルレポジトリ等の設定を実施し、yumを用いてRHEL、RHEL-OSPのパッケージを取得できるようにします。

(4)パッケージの更新

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

1# yum update
2# yum install ntp openssh-clients tcpdump
3# reboot

(5)NTP設定

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

(6)ネットワーク疎通確認

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

1# ping -c1 ctrl.rhelosp.example.com
2# ping -c1 cmpt1.rhelosp.example.com
3# ping -c1 cmpt2.rhelosp.example.com
4# ping -c1 ctrl
5# ping -c1 cmpt1
6# ping -c1 cmpt2
7# for i in 1 101 102 103 ; do ping -c1 10.0.0.${i} ; done
8# for i in 10 101 102 103; do ping -c1 192.168.10.${i} ; done
9# for i in 101 102 103; do ping -c1 192.168.20.${i} ; done

RHEL-OSPのインストール

続いて、Packstackを用いてRHEL-OSPをインストールします。DVRを有効にするためには、インストール後に設定ファイルを変更する必要があります。

(7)Packstackのインストール、answer file生成(Controller Serverのみ)

(7)から(9)の手順は、Controller + Network Serverでのみ実施します。
Packstackをインストールし、Packstackのインストール用設定ファイルであるanswer fileのベースを生成します。

1[Packstackインストール]
2# yum install openstack-packstack
3[answer file生成]
4# packstack --gen-answer=answer20150302

(8)answer fileの修正(Controller Serverのみ)

(7)で生成したanswer fileは、all in one構成用のため、今回の構成に合わせて修正します。主な修正ポイントは以下のとおりです。今回はカプセル化方式としてGREを選択しています。なお、answer fileのデフォルト値は変更される可能性があるので、サンプルを以下に記載しています。

01# Compute Server1、2のManagement Networkの[IP Address]を書き換え
02CONFIG_COMPUTE_HOSTS=192.168.10.102,192.168.10.103
03# Controller + Network Server、Compute Server1、2のManagement Networkの[IP Address]を書き換え
04CONFIG_NETWORK_HOSTS=192.168.10.101,192.168.10.102,192.168.10.103
05#[Tunnel Network用のNIC名]を書き換え
06CONFIG_NOVA_COMPUTE_PRIVIF=eth2
07#[gre]へ書き換え
08CONFIG_NEUTRON_ML2_TYPE_DRIVERS=gre
09#[gre]へ書き換え
10CONFIG_NEUTRON_ML2_TENANT_NETWORK_TYPES=gre
11#[,l2population]を追記
12CONFIG_NEUTRON_ML2_MECHANISM_DRIVERS=openvswitch,l2population
13#レンジ[10:1000]を記述
14CONFIG_NEUTRON_ML2_TUNNEL_ID_RANGES=10:1000
15#[physnet1:br-ex]を記述
16CONFIG_NEUTRON_OVS_BRIDGE_MAPPINGS=physnet1:br-ex
17#[<上記のphysnet1>:< External Network用のNIC名>]となるよう記述
18CONFIG_NEUTRON_OVS_BRIDGE_IFACES=br-ex:eth0
19#[Tunnel Network用のNIC名]を記述
20CONFIG_NEUTRON_OVS_TUNNEL_IF=eth2
株式会社日立ソリューションズ

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

連載バックナンバー

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

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

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

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