RHEL-OSP6でのDVR環境構築手順
第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パッケージで動作を確認しています。
サーバ | 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 | - |
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形式となります。
(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のような設定値となります。
サーバ | 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
連載バックナンバー
Think ITメルマガ会員登録受付中
全文検索エンジンによるおすすめ記事
- OpenStackの自動構築ツール、Packstackのインストール
- OpenStack Kilo(RDO版)でのMidoNet構築手順(1)
- OpenStack Kilo(RDO版)でのMidoNet構築手順(2)
- Neutron DVR環境でのパケット処理を探る
- MidoNetのパケット処理をDVRと比較してみる
- OpenStack Junoのネットワークコンポーネントの課題と分散仮想ルータ
- CentOS 7でのOpenStackの構築手順
- OpenStack Juno on SoftLayer by RDO
- OpenStack構築上の注意
- OpenDaylightでクラスタを組んでみよう