OpenStack(RHEL-OSP6)で試す分散仮想ルータ 2

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

第2回では、Red Hat Enterprise Linux OpenStack Platform 6(RHEL-OSP6)上でDVR(Distributed Virtual Router)環境を構築する手順をご紹介します。今回紹介する手順は、筆者が検証環境を構築した際のものであり、要件や環境、構築

工藤 雄大

2015年5月19日 16:00

第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 Server Compute Server1 Compute Server2 DNS Server
hostname ctrl.rhelosp.example.com cmpt1.rhelosp.example.com cmpt2.rhelosp.example.com 任意
役割 ・管理機能
・Neutron
・Compute
・Neutron
・Compute
・Neutron
DNS
Operating System RHEL7(Red Hat Enterprise Linux 7) 任意
OpenStack RHEL-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 Server1 Compute Server2
hostname ctrl.rhelosp.example.com cmpt1.rhelosp.example.com cmpt2.rhelosp.example.com
eth0 IP Address / MASK 10.0.0.101/24 10.0.0.102/24 10.0.0.103/24
DFG 10.0.0.1 10.0.0.1 10.0.0.1
DNS - - -
eth1 IP Address / MASK 192.168.10.101/24 192.168.10.102/24 192.168.10.103/24
DFG - - -
DNS 192.168.10.10 192.168.10.10 192.168.10.10
eth2 IP Address / MASK 192.168.20.101/24 192.168.20.102/24 192.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
この記事のキーワード

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

人気記事トップ10

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