第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形式となります。
図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名を変更します。
01 | [grubへnet.ifnames=0を追加] |
05 | GRUB_DISTRIBUTOR="$(sed 's, release .*$,,g' /etc/system-release)" |
07 | GRUB_DISABLE_SUBMENU=true |
08 | GRUB_TERMINAL_OUTPUT="console" |
09 | 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" |
10 | GRUB_DISABLE_RECOVERY="true" |
14 | # grub2-mkconfig -o /boot/grub2/grub.cfg |
19 | [NIC名がethX形式となっていることを確認] |
22 | 2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP qlen 1000 |
(2)Operating Systemインストール後の諸設定
RHEL-OSP6はNetwork Managerに対応していないため、無効化します。すると、インストール時に作られるNetwork Manager用設定ファイルと矛盾するため、修正します。
02 | # systemctl disable NetworkManager |
05 | # vi /etc/sysconfig/network-scripts/ifcfg-eth0 |
07 | GATEWAY=10.0.0.1 ←追記(GATEWAY0 をGATEWAY にする) |
10 | # vi /etc/sysconfig/network-scripts/ifcfg-eth1 |
12 | # vi /etc/sysconfig/network-scripts/ifcfg-eth2 |
18 | [DFGの確認。defaultの記述が存在していることを確認] |
20 | default via 10.0.0.1 dev eth0 |
21 | 10.0.0.0/24 dev eth0 proto kernel scope link src 10.0.0.101 |
22 | 169.254.0.0/16 dev eth0 scope link metric 1002 |
23 | 169.254.0.0/16 dev eth1 scope link metric 1003 |
24 | 169.254.0.0/16 dev eth2 scope link metric 1004 |
25 | 192.168.10.0/24 dev eth1 proto kernel scope link src 192.168.10.101 |
26 | 192.168.20.0/24 dev eth2 proto kernel scope link src 192.168.20.101 |
(3)リポジトリ設定
Red Hat Networkの登録やローカルレポジトリ等の設定を実施し、yumを用いてRHEL、RHEL-OSPのパッケージを取得できるようにします。
(4)パッケージの更新
パッケージアップデート及び必要なパッケージをインストールします。後述のNTPの他、openssh-clients、tcpdumpも合わせて入れることをお勧めします。
2 | # yum install ntp openssh-clients tcpdump |
(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 |
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のベースを生成します。
2 | # yum install openstack-packstack |
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]を書き換え |
02 | CONFIG_COMPUTE_HOSTS=192.168.10.102,192.168.10.103 |
03 | # Controller + Network Server、Compute Server1、2のManagement Networkの[IP Address]を書き換え |
04 | CONFIG_NETWORK_HOSTS=192.168.10.101,192.168.10.102,192.168.10.103 |
05 | #[Tunnel Network用のNIC名]を書き換え |
06 | CONFIG_NOVA_COMPUTE_PRIVIF=eth2 |
08 | CONFIG_NEUTRON_ML2_TYPE_DRIVERS=gre |
10 | CONFIG_NEUTRON_ML2_TENANT_NETWORK_TYPES=gre |
12 | CONFIG_NEUTRON_ML2_MECHANISM_DRIVERS=openvswitch,l2population |
14 | CONFIG_NEUTRON_ML2_TUNNEL_ID_RANGES=10:1000 |
16 | CONFIG_NEUTRON_OVS_BRIDGE_MAPPINGS=physnet1:br-ex |
17 | #[<上記のphysnet1>:< External Network用のNIC名>]となるよう記述 |
18 | CONFIG_NEUTRON_OVS_BRIDGE_IFACES=br-ex:eth0 |
19 | #[Tunnel Network用のNIC名]を記述 |
20 | CONFIG_NEUTRON_OVS_TUNNEL_IF=eth2 |
002 | CONFIG_SSH_KEY=/root/.ssh/id_rsa.pub |
003 | CONFIG_DEFAULT_PASSWORD=admina |
004 | CONFIG_MARIADB_INSTALL=y |
005 | CONFIG_GLANCE_INSTALL=y |
006 | CONFIG_CINDER_INSTALL=y |
008 | CONFIG_NEUTRON_INSTALL=y |
009 | CONFIG_HORIZON_INSTALL=y |
010 | CONFIG_SWIFT_INSTALL=n |
011 | CONFIG_CEILOMETER_INSTALL=y |
013 | CONFIG_SAHARA_INSTALL=n |
014 | CONFIG_TROVE_INSTALL=n |
015 | CONFIG_IRONIC_INSTALL=n |
016 | CONFIG_CLIENT_INSTALL=y |
018 | CONFIG_NAGIOS_INSTALL=n |
021 | CONFIG_CONTROLLER_HOST=192.168.10.101 |
022 | CONFIG_COMPUTE_HOSTS=192.168.10.102,192.168.10.103 |
023 | CONFIG_NETWORK_HOSTS=192.168.10.101,192.168.10.102,192.168.10.103 |
024 | CONFIG_VMWARE_BACKEND=n |
028 | CONFIG_VCENTER_PASSWORD= |
029 | CONFIG_VCENTER_CLUSTER_NAME= |
030 | CONFIG_STORAGE_HOST=192.168.10.101 |
042 | CONFIG_SATELLITE_USER= |
044 | CONFIG_SATELLITE_AKEY= |
045 | CONFIG_SATELLITE_CACERT= |
046 | CONFIG_SATELLITE_PROFILE= |
047 | CONFIG_SATELLITE_FLAGS= |
048 | CONFIG_SATELLITE_PROXY= |
049 | CONFIG_SATELLITE_PROXY_USER= |
050 | CONFIG_SATELLITE_PROXY_PW= |
051 | CONFIG_AMQP_BACKEND=rabbitmq |
052 | CONFIG_AMQP_HOST=192.168.10.101 |
053 | CONFIG_AMQP_ENABLE_SSL=n |
054 | CONFIG_AMQP_ENABLE_AUTH=n |
055 | CONFIG_AMQP_NSS_CERTDB_PW=admina |
056 | CONFIG_AMQP_SSL_PORT=5671 |
057 | CONFIG_AMQP_SSL_CERT_FILE=/etc/pki/tls/certs/amqp_selfcert.pem |
058 | CONFIG_AMQP_SSL_KEY_FILE=/etc/pki/tls/private/amqp_selfkey.pem |
059 | CONFIG_AMQP_SSL_SELF_SIGNED=y |
060 | CONFIG_AMQP_AUTH_USER=amqp_user |
061 | CONFIG_AMQP_AUTH_PASSWORD=admina |
062 | CONFIG_MARIADB_HOST=192.168.10.101 |
063 | CONFIG_MARIADB_USER=root |
064 | CONFIG_MARIADB_PW=admina |
065 | CONFIG_KEYSTONE_DB_PW=admina |
066 | CONFIG_KEYSTONE_REGION=RegionOne |
067 | CONFIG_KEYSTONE_ADMIN_TOKEN=admina |
068 | CONFIG_KEYSTONE_ADMIN_PW=admina |
069 | CONFIG_KEYSTONE_DEMO_PW=admina |
070 | CONFIG_KEYSTONE_TOKEN_FORMAT=UUID |
071 | CONFIG_KEYSTONE_SERVICE_NAME=keystone |
072 | CONFIG_GLANCE_DB_PW=admina |
073 | CONFIG_GLANCE_KS_PW=admina |
074 | CONFIG_GLANCE_BACKEND=file |
075 | CONFIG_CINDER_DB_PW=admina |
076 | CONFIG_CINDER_KS_PW=admina |
077 | CONFIG_CINDER_BACKEND=lvm |
078 | CONFIG_CINDER_VOLUMES_CREATE=y |
079 | CONFIG_CINDER_VOLUMES_SIZE=20G |
080 | CONFIG_CINDER_GLUSTER_MOUNTS= |
081 | CONFIG_CINDER_NFS_MOUNTS= |
082 | CONFIG_CINDER_NETAPP_LOGIN= |
083 | CONFIG_CINDER_NETAPP_PASSWORD= |
084 | CONFIG_CINDER_NETAPP_HOSTNAME= |
085 | CONFIG_CINDER_NETAPP_SERVER_PORT=80 |
086 | CONFIG_CINDER_NETAPP_STORAGE_FAMILY=ontap_cluster |
087 | CONFIG_CINDER_NETAPP_TRANSPORT_TYPE=http |
088 | CONFIG_CINDER_NETAPP_STORAGE_PROTOCOL=nfs |
089 | CONFIG_CINDER_NETAPP_SIZE_MULTIPLIER=1.0 |
090 | CONFIG_CINDER_NETAPP_EXPIRY_THRES_MINUTES=720 |
091 | CONFIG_CINDER_NETAPP_THRES_AVL_SIZE_PERC_START=20 |
092 | CONFIG_CINDER_NETAPP_THRES_AVL_SIZE_PERC_STOP=60 |
093 | CONFIG_CINDER_NETAPP_NFS_SHARES_CONFIG= |
094 | CONFIG_CINDER_NETAPP_VOLUME_LIST= |
095 | CONFIG_CINDER_NETAPP_VFILER= |
096 | CONFIG_CINDER_NETAPP_VSERVER= |
097 | CONFIG_CINDER_NETAPP_CONTROLLER_IPS= |
098 | CONFIG_CINDER_NETAPP_SA_PASSWORD= |
099 | CONFIG_CINDER_NETAPP_WEBSERVICE_PATH=/devmgr/v2 |
100 | CONFIG_CINDER_NETAPP_STORAGE_POOLS= |
101 | CONFIG_IRONIC_DB_PW=admina |
102 | CONFIG_IRONIC_KS_PW=admina |
103 | CONFIG_NOVA_DB_PW=admina |
104 | CONFIG_NOVA_KS_PW=admina |
105 | CONFIG_NOVA_SCHED_CPU_ALLOC_RATIO=16.0 |
106 | CONFIG_NOVA_SCHED_RAM_ALLOC_RATIO=1.5 |
107 | CONFIG_NOVA_COMPUTE_MIGRATE_PROTOCOL=tcp |
108 | CONFIG_NOVA_COMPUTE_MANAGER=nova.compute.manager.ComputeManager |
109 | CONFIG_NOVA_COMPUTE_PRIVIF=eth2 |
110 | CONFIG_NOVA_NETWORK_MANAGER= |
111 | CONFIG_NOVA_NETWORK_PUBIF= |
112 | CONFIG_NOVA_NETWORK_PRIVIF= |
113 | CONFIG_NOVA_NETWORK_FIXEDRANGE= |
114 | CONFIG_NOVA_NETWORK_FLOATRANGE= |
115 | CONFIG_NOVA_NETWORK_AUTOASSIGNFLOATINGIP= |
116 | CONFIG_NOVA_NETWORK_VLAN_START= |
117 | CONFIG_NOVA_NETWORK_NUMBER= |
118 | CONFIG_NOVA_NETWORK_SIZE= |
119 | CONFIG_NEUTRON_KS_PW=admina |
120 | CONFIG_NEUTRON_DB_PW=admina |
121 | CONFIG_NEUTRON_L3_EXT_BRIDGE=br-ex |
122 | CONFIG_NEUTRON_METADATA_PW=admina |
123 | CONFIG_LBAAS_INSTALL=n |
124 | CONFIG_NEUTRON_METERING_AGENT_INSTALL=n |
125 | CONFIG_NEUTRON_FWAAS=n |
126 | CONFIG_NEUTRON_ML2_TYPE_DRIVERS=gre |
127 | CONFIG_NEUTRON_ML2_TENANT_NETWORK_TYPES=gre |
128 | CONFIG_NEUTRON_ML2_MECHANISM_DRIVERS=openvswitch,l2population |
129 | CONFIG_NEUTRON_ML2_FLAT_NETWORKS=* |
130 | CONFIG_NEUTRON_ML2_VLAN_RANGES= |
131 | CONFIG_NEUTRON_ML2_TUNNEL_ID_RANGES=10:1000 |
132 | CONFIG_NEUTRON_ML2_VXLAN_GROUP= |
133 | CONFIG_NEUTRON_ML2_VNI_RANGES= |
134 | CONFIG_NEUTRON_L2_AGENT=openvswitch |
135 | CONFIG_NEUTRON_LB_INTERFACE_MAPPINGS= |
136 | CONFIG_NEUTRON_OVS_BRIDGE_MAPPINGS=physnet1:br-ex |
137 | CONFIG_NEUTRON_OVS_BRIDGE_IFACES=br-ex:eth0 |
138 | CONFIG_NEUTRON_OVS_TUNNEL_IF=eth2 |
139 | CONFIG_NEUTRON_OVS_VXLAN_UDP_PORT=4789 |
145 | CONFIG_SWIFT_STORAGES= |
146 | CONFIG_SWIFT_STORAGE_ZONES= |
147 | CONFIG_SWIFT_STORAGE_REPLICAS= |
148 | CONFIG_SWIFT_STORAGE_FSTYPE= |
150 | CONFIG_SWIFT_STORAGE_SIZE= |
152 | CONFIG_HEAT_AUTH_ENC_KEY= |
154 | CONFIG_HEAT_CLOUDWATCH_INSTALL=n |
155 | CONFIG_HEAT_CFN_INSTALL=n |
157 | CONFIG_HEAT_DOMAIN_ADMIN= |
158 | CONFIG_HEAT_DOMAIN_PASSWORD= |
159 | CONFIG_PROVISION_DEMO=n |
160 | CONFIG_PROVISION_TEMPEST=n |
161 | CONFIG_PROVISION_TEMPEST_USER= |
162 | CONFIG_PROVISION_TEMPEST_USER_PW=admina |
163 | CONFIG_PROVISION_DEMO_FLOATRANGE= |
165 | CONFIG_PROVISION_TEMPEST_REPO_URI= |
166 | CONFIG_PROVISION_TEMPEST_REPO_REVISION= |
167 | CONFIG_PROVISION_ALL_IN_ONE_OVS_BRIDGE=n |
168 | CONFIG_CEILOMETER_SECRET=admina |
169 | CONFIG_CEILOMETER_KS_PW=admina |
170 | CONFIG_CEILOMETER_COORDINATION_BACKEND=redis |
171 | CONFIG_MONGODB_HOST=192.168.10.101 |
172 | CONFIG_REDIS_HOST=192.168.10.101 |
173 | CONFIG_REDIS_PORT=6379 |
178 | CONFIG_TROVE_NOVA_USER= |
179 | CONFIG_TROVE_NOVA_TENANT= |
181 | CONFIG_NAGIOS_PW=admina |