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名を変更します。

[grubへnet.ifnames=0を追加]
# vi /etc/default/grub
----
GRUB_TIMEOUT=5
GRUB_DISTRIBUTOR="$(sed 's, release .*$,,g' /etc/system-release)"
GRUB_DEFAULT=saved
GRUB_DISABLE_SUBMENU=true
GRUB_TERMINAL_OUTPUT="console"
GRUB_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"
GRUB_DISABLE_RECOVERY="true"
-----

[grubへ反映]
# grub2-mkconfig -o /boot/grub2/grub.cfg

[再起動]
# reboot

[NIC名がethX形式となっていることを確認]
# ip addr
(略)
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP qlen 1000

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

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

[Network Manager無効化]
# systemctl disable NetworkManager

[eth0のGATEWAYの書式変更]
# vi /etc/sysconfig/network-scripts/ifcfg-eth0
GATEWAY0=10.0.0.1 ←削除
GATEWAY=10.0.0.1 ←追記(GATEWAY0 をGATEWAY にする)

[eth1、eth2のDEFROUTE削除]
# vi /etc/sysconfig/network-scripts/ifcfg-eth1
DEFROUTE=yes ←削除
# vi /etc/sysconfig/network-scripts/ifcfg-eth2
DEFROUTE=yes ←削除

[再起動]
# reboot

[DFGの確認。defaultの記述が存在していることを確認]
# ip route
default via 10.0.0.1 dev eth0
10.0.0.0/24 dev eth0  proto kernel  scope link  src 10.0.0.101
169.254.0.0/16 dev eth0  scope link  metric 1002
169.254.0.0/16 dev eth1  scope link  metric 1003
169.254.0.0/16 dev eth2  scope link  metric 1004
192.168.10.0/24 dev eth1  proto kernel  scope link  src 192.168.10.101
192.168.20.0/24 dev eth2  proto kernel  scope link  src 192.168.20.101

[VT有効化の確認]
# lsmod | grep kvm
kvm_intel             148081  0
kvm                   461126  1 kvm_intel

(3)リポジトリ設定

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

(4)パッケージの更新

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

# yum update
# yum install ntp openssh-clients tcpdump
# reboot

(5)NTP設定

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

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

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

# ping -c1 ctrl.rhelosp.example.com
# ping -c1 cmpt1.rhelosp.example.com
# ping -c1 cmpt2.rhelosp.example.com
# ping -c1 ctrl
# ping -c1 cmpt1
# ping -c1 cmpt2
# for i in 1 101 102 103 ; do ping -c1 10.0.0.${i} ; done
# for i in 10 101 102 103; do ping -c1 192.168.10.${i} ; done
# 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のベースを生成します。

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

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

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

# Compute Server1、2のManagement Networkの[IP Address]を書き換え
CONFIG_COMPUTE_HOSTS=192.168.10.102,192.168.10.103
# Controller + Network Server、Compute Server1、2のManagement Networkの[IP Address]を書き換え
CONFIG_NETWORK_HOSTS=192.168.10.101,192.168.10.102,192.168.10.103 
#[Tunnel Network用のNIC名]を書き換え
CONFIG_NOVA_COMPUTE_PRIVIF=eth2
#[gre]へ書き換え
CONFIG_NEUTRON_ML2_TYPE_DRIVERS=gre
#[gre]へ書き換え
CONFIG_NEUTRON_ML2_TENANT_NETWORK_TYPES=gre
#[,l2population]を追記
CONFIG_NEUTRON_ML2_MECHANISM_DRIVERS=openvswitch,l2population
#レンジ[10:1000]を記述
CONFIG_NEUTRON_ML2_TUNNEL_ID_RANGES=10:1000
#[physnet1:br-ex]を記述
CONFIG_NEUTRON_OVS_BRIDGE_MAPPINGS=physnet1:br-ex 
#[<上記のphysnet1>:< External Network用のNIC名>]となるよう記述
CONFIG_NEUTRON_OVS_BRIDGE_IFACES=br-ex:eth0
#[Tunnel Network用のNIC名]を記述
CONFIG_NEUTRON_OVS_TUNNEL_IF=eth2
[general]
CONFIG_SSH_KEY=/root/.ssh/id_rsa.pub
CONFIG_DEFAULT_PASSWORD=admina
CONFIG_MARIADB_INSTALL=y
CONFIG_GLANCE_INSTALL=y
CONFIG_CINDER_INSTALL=y
CONFIG_NOVA_INSTALL=y
CONFIG_NEUTRON_INSTALL=y
CONFIG_HORIZON_INSTALL=y
CONFIG_SWIFT_INSTALL=n
CONFIG_CEILOMETER_INSTALL=y
CONFIG_HEAT_INSTALL=n
CONFIG_SAHARA_INSTALL=n
CONFIG_TROVE_INSTALL=n
CONFIG_IRONIC_INSTALL=n
CONFIG_CLIENT_INSTALL=y
CONFIG_NTP_SERVERS=
CONFIG_NAGIOS_INSTALL=n
EXCLUDE_SERVERS=
CONFIG_DEBUG_MODE=n
CONFIG_CONTROLLER_HOST=192.168.10.101
CONFIG_COMPUTE_HOSTS=192.168.10.102,192.168.10.103
CONFIG_NETWORK_HOSTS=192.168.10.101,192.168.10.102,192.168.10.103
CONFIG_VMWARE_BACKEND=n
CONFIG_UNSUPPORTED=n
CONFIG_VCENTER_HOST=
CONFIG_VCENTER_USER=
CONFIG_VCENTER_PASSWORD=
CONFIG_VCENTER_CLUSTER_NAME=
CONFIG_STORAGE_HOST=192.168.10.101
CONFIG_SAHARA_HOST=
CONFIG_USE_EPEL=n
CONFIG_REPO=
CONFIG_RH_USER=
CONFIG_SATELLITE_URL=
CONFIG_RH_PW=
CONFIG_RH_OPTIONAL=n
CONFIG_RH_PROXY=
CONFIG_RH_PROXY_PORT=
CONFIG_RH_PROXY_USER=
CONFIG_RH_PROXY_PW=
CONFIG_SATELLITE_USER=
CONFIG_SATELLITE_PW=
CONFIG_SATELLITE_AKEY=
CONFIG_SATELLITE_CACERT=
CONFIG_SATELLITE_PROFILE=
CONFIG_SATELLITE_FLAGS=
CONFIG_SATELLITE_PROXY=
CONFIG_SATELLITE_PROXY_USER=
CONFIG_SATELLITE_PROXY_PW=
CONFIG_AMQP_BACKEND=rabbitmq
CONFIG_AMQP_HOST=192.168.10.101
CONFIG_AMQP_ENABLE_SSL=n
CONFIG_AMQP_ENABLE_AUTH=n
CONFIG_AMQP_NSS_CERTDB_PW=admina
CONFIG_AMQP_SSL_PORT=5671
CONFIG_AMQP_SSL_CERT_FILE=/etc/pki/tls/certs/amqp_selfcert.pem
CONFIG_AMQP_SSL_KEY_FILE=/etc/pki/tls/private/amqp_selfkey.pem
CONFIG_AMQP_SSL_SELF_SIGNED=y
CONFIG_AMQP_AUTH_USER=amqp_user
CONFIG_AMQP_AUTH_PASSWORD=admina
CONFIG_MARIADB_HOST=192.168.10.101
CONFIG_MARIADB_USER=root
CONFIG_MARIADB_PW=admina
CONFIG_KEYSTONE_DB_PW=admina
CONFIG_KEYSTONE_REGION=RegionOne
CONFIG_KEYSTONE_ADMIN_TOKEN=admina
CONFIG_KEYSTONE_ADMIN_PW=admina
CONFIG_KEYSTONE_DEMO_PW=admina
CONFIG_KEYSTONE_TOKEN_FORMAT=UUID
CONFIG_KEYSTONE_SERVICE_NAME=keystone
CONFIG_GLANCE_DB_PW=admina
CONFIG_GLANCE_KS_PW=admina
CONFIG_GLANCE_BACKEND=file
CONFIG_CINDER_DB_PW=admina
CONFIG_CINDER_KS_PW=admina
CONFIG_CINDER_BACKEND=lvm
CONFIG_CINDER_VOLUMES_CREATE=y
CONFIG_CINDER_VOLUMES_SIZE=20G
CONFIG_CINDER_GLUSTER_MOUNTS=
CONFIG_CINDER_NFS_MOUNTS=
CONFIG_CINDER_NETAPP_LOGIN=
CONFIG_CINDER_NETAPP_PASSWORD=
CONFIG_CINDER_NETAPP_HOSTNAME=
CONFIG_CINDER_NETAPP_SERVER_PORT=80
CONFIG_CINDER_NETAPP_STORAGE_FAMILY=ontap_cluster
CONFIG_CINDER_NETAPP_TRANSPORT_TYPE=http
CONFIG_CINDER_NETAPP_STORAGE_PROTOCOL=nfs
CONFIG_CINDER_NETAPP_SIZE_MULTIPLIER=1.0
CONFIG_CINDER_NETAPP_EXPIRY_THRES_MINUTES=720
CONFIG_CINDER_NETAPP_THRES_AVL_SIZE_PERC_START=20
CONFIG_CINDER_NETAPP_THRES_AVL_SIZE_PERC_STOP=60
CONFIG_CINDER_NETAPP_NFS_SHARES_CONFIG=
CONFIG_CINDER_NETAPP_VOLUME_LIST=
CONFIG_CINDER_NETAPP_VFILER=
CONFIG_CINDER_NETAPP_VSERVER=
CONFIG_CINDER_NETAPP_CONTROLLER_IPS=
CONFIG_CINDER_NETAPP_SA_PASSWORD=
CONFIG_CINDER_NETAPP_WEBSERVICE_PATH=/devmgr/v2
CONFIG_CINDER_NETAPP_STORAGE_POOLS=
CONFIG_IRONIC_DB_PW=admina
CONFIG_IRONIC_KS_PW=admina
CONFIG_NOVA_DB_PW=admina
CONFIG_NOVA_KS_PW=admina
CONFIG_NOVA_SCHED_CPU_ALLOC_RATIO=16.0
CONFIG_NOVA_SCHED_RAM_ALLOC_RATIO=1.5
CONFIG_NOVA_COMPUTE_MIGRATE_PROTOCOL=tcp
CONFIG_NOVA_COMPUTE_MANAGER=nova.compute.manager.ComputeManager
CONFIG_NOVA_COMPUTE_PRIVIF=eth2
CONFIG_NOVA_NETWORK_MANAGER=
CONFIG_NOVA_NETWORK_PUBIF=
CONFIG_NOVA_NETWORK_PRIVIF=
CONFIG_NOVA_NETWORK_FIXEDRANGE=
CONFIG_NOVA_NETWORK_FLOATRANGE=
CONFIG_NOVA_NETWORK_AUTOASSIGNFLOATINGIP=
CONFIG_NOVA_NETWORK_VLAN_START=
CONFIG_NOVA_NETWORK_NUMBER=
CONFIG_NOVA_NETWORK_SIZE=
CONFIG_NEUTRON_KS_PW=admina
CONFIG_NEUTRON_DB_PW=admina
CONFIG_NEUTRON_L3_EXT_BRIDGE=br-ex
CONFIG_NEUTRON_METADATA_PW=admina
CONFIG_LBAAS_INSTALL=n
CONFIG_NEUTRON_METERING_AGENT_INSTALL=n
CONFIG_NEUTRON_FWAAS=n
CONFIG_NEUTRON_ML2_TYPE_DRIVERS=gre
CONFIG_NEUTRON_ML2_TENANT_NETWORK_TYPES=gre
CONFIG_NEUTRON_ML2_MECHANISM_DRIVERS=openvswitch,l2population
CONFIG_NEUTRON_ML2_FLAT_NETWORKS=*
CONFIG_NEUTRON_ML2_VLAN_RANGES=
CONFIG_NEUTRON_ML2_TUNNEL_ID_RANGES=10:1000
CONFIG_NEUTRON_ML2_VXLAN_GROUP=
CONFIG_NEUTRON_ML2_VNI_RANGES=
CONFIG_NEUTRON_L2_AGENT=openvswitch
CONFIG_NEUTRON_LB_INTERFACE_MAPPINGS=
CONFIG_NEUTRON_OVS_BRIDGE_MAPPINGS=physnet1:br-ex
CONFIG_NEUTRON_OVS_BRIDGE_IFACES=br-ex:eth0
CONFIG_NEUTRON_OVS_TUNNEL_IF=eth2
CONFIG_NEUTRON_OVS_VXLAN_UDP_PORT=4789
CONFIG_HORIZON_SSL=n
CONFIG_SSL_CERT=
CONFIG_SSL_KEY=
CONFIG_SSL_CACHAIN=
CONFIG_SWIFT_KS_PW=
CONFIG_SWIFT_STORAGES=
CONFIG_SWIFT_STORAGE_ZONES=
CONFIG_SWIFT_STORAGE_REPLICAS=
CONFIG_SWIFT_STORAGE_FSTYPE=
CONFIG_SWIFT_HASH=
CONFIG_SWIFT_STORAGE_SIZE=
CONFIG_HEAT_DB_PW=
CONFIG_HEAT_AUTH_ENC_KEY=
CONFIG_HEAT_KS_PW=
CONFIG_HEAT_CLOUDWATCH_INSTALL=n
CONFIG_HEAT_CFN_INSTALL=n
CONFIG_HEAT_DOMAIN=
CONFIG_HEAT_DOMAIN_ADMIN=
CONFIG_HEAT_DOMAIN_PASSWORD=
CONFIG_PROVISION_DEMO=n
CONFIG_PROVISION_TEMPEST=n
CONFIG_PROVISION_TEMPEST_USER=
CONFIG_PROVISION_TEMPEST_USER_PW=admina
CONFIG_PROVISION_DEMO_FLOATRANGE=
CONFIG_PROVISION_CIRROS_URL=http://download.cirros-cloud.net/0.3.3/cirros-0.3.3-x86_64-disk.img
CONFIG_PROVISION_TEMPEST_REPO_URI=
CONFIG_PROVISION_TEMPEST_REPO_REVISION=
CONFIG_PROVISION_ALL_IN_ONE_OVS_BRIDGE=n
CONFIG_CEILOMETER_SECRET=admina
CONFIG_CEILOMETER_KS_PW=admina
CONFIG_CEILOMETER_COORDINATION_BACKEND=redis
CONFIG_MONGODB_HOST=192.168.10.101
CONFIG_REDIS_HOST=192.168.10.101
CONFIG_REDIS_PORT=6379
CONFIG_SAHARA_DB_PW=
CONFIG_SAHARA_KS_PW=
CONFIG_TROVE_DB_PW=
CONFIG_TROVE_KS_PW=
CONFIG_TROVE_NOVA_USER=
CONFIG_TROVE_NOVA_TENANT=
CONFIG_TROVE_NOVA_PW=
CONFIG_NAGIOS_PW=admina
株式会社日立ソリューションズ

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

連載バックナンバー

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

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

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

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