OpenStack Kilo(RDO版)でのMidoNet構築手順(2)

2015年10月14日(水)
工藤 雄大

前回は、OS、OpenStack、MidoNetのインストール部分までの手順をご紹介しました。今回は引き続き、「OpenStackとMidoNetの連携」、「Network設定」、「VyOS環境の構築」の手順をご説明します。

OpenStackとMidoNetの連携

OpenStackとMidoNetを連携できるように設定します。

(1)Keystone連携@Controller

MidoNet API Serviceを作成します。

1【MidoNet API Serviceの作成】@Controller
2# source /root/keystonerc_admin
3# openstack service create --name midonet --description "MidoNet API Service" midonet
4# openstack user create --password admina midonet
5# openstack role add --project services --user midonet admin

(2)Neutron連携@Controller

NeutronからMidoNet Pluginを使えるように設定します。

01【Neutron MidoNet Pluginのインストール】@Controller
02# yum install python-neutron-plugin-midonet
03 
04【neutron.confの修正】@Controller
05# vi /etc/neutron/neutron.conf
06【core_pluginの変更、service_pluginsのコメントアウト】
07----
08core_plugin = neutron.plugins.midonet.plugin.MidonetPluginV2
09# service_plugins =~
10----
11 
12【midonet.iniの作成】@Controller
13【下記内容で新規作成する】
14# mkdir /etc/neutron/plugins/midonet
15# vi /etc/neutron/plugins/midonet/midonet.ini
16----
17[DATABASE]
19[MIDONET]
20# MidoNet API URL
22# MidoNet administrative user in Keystone
23username = midonet
24password = admina
25# MidoNet administrative user's tenant
26project_id = services
27----
28 
29【midonet.iniをplugin.iniとする】@Controller
30# rm -f /etc/neutron/plugin.ini
31# ln -s /etc/neutron/plugins/midonet/midonet.ini /etc/neutron/plugin.ini
32【dhcp_agent.iniの変更、追記】@Controller
33# vi /etc/neutron/dhcp_agent.ini
34---
35 
36【リスト内の強調部分を修正。use_namespaces=Trueとなっていることを確認する】
37[DEFAULT]
38interface_driver = neutron.agent.linux.interface.MidonetInterfaceDriver
39dhcp_driver = midonet.neutron.agent.midonet_driver.DhcpNoOpDriver
40use_namespaces = True
41enable_isolated_metadata = True
42 
43【下記を追記する】
44[MIDONET]
45# MidoNet API URL
47# MidoNet administrative user in Keystone
48username = midonet
49password = admina
50# MidoNet administrative user's tenant
51project_id = services
52 
53【Neutron databaseの再構築】@Controller
54# systemctl stop neutron-server
55# mysql -e 'drop database neutron'
56# mysql -e 'create database neutron'
57# su -s /bin/sh -c "neutron-db-manage --config-file /etc/neutron/neutron.conf --config-file /etc/neutron/plugins/midonet/midonet.ini upgrade kilo" neutron
58# systemctl restart openstack-nova-api openstack-nova-scheduler openstack-nova-conductor
59# systemctl start neutron-server
60 
61【Neutron Serviceの再起動】@Controller
62# systemctl restart neutron-dhcp-agent
63# systemctl restart neutron-metadata-agent

(3)Nova連携@Compute 1、2

libvirt設定を変更し、nova-rootwrapをインストールします。

01【qemu.confの編集】@Compute 1、2
02# vi /etc/libvirt/qemu.conf
03------
04【下記のコメントアウトをはずす】
05user = "root"
06group = "root"
07 
08【下記コメントアウトをはずすとともに、強調部分を追記する。1つ上の行("/dev/vfio/vfio")の「,」も忘れずに】
09cgroup_device_acl = [
10   "/dev/null", "/dev/full", "/dev/zero",
11   "/dev/random", "/dev/urandom",
12   "/dev/ptmx", "/dev/kvm", "/dev/kqemu",
13   "/dev/rtc","/dev/hpet", "/dev/vfio/vfio",
14   "/dev/net/tun"
15]
16----
17 
18【libvirtの再起動】@Compute 1、2
19# systemctl restart libvirtd
20 
21【nova-rootwrapのインストール】@Compute 1、2
22# yum install openstack-nova-network
23# systemctl disable openstack-nova-network
24# systemctl restart openstack-nova-compute

Network設定

External Networkの作成と、MidoNet Provider Routerの設定をします。図1の構成となるよう設定します。

図1:上流Network構成完成図

図1:上流Network構成完成図

(4)External Network作成@Controller

External Networkを作成します。Floating IPは、このExternal Networkから払い出されます。

1【External Network作成】@Controller
2# source keystonerc_admin
3# neutron net-create ext-net --shared --router:external
4# neutron subnet-create ext-net 10.10.0.0/24 --name ext-subnet --allocation-pool start=10.10.0.10,end=10.10.0.100 --disable-dhcp --gateway 10.10.0.1

(5)MidoNet Provider Router設定@Controller

MidoNet Provider Routerの設定をします。ここからは手順が細かいので、注意深く設定してください。まず、下準備をします。

01【Tenant ID確認】@Controller
02# source keystonerc_admin
03# keystone tenant-list
04【admin tenantのID(出力例の強調されている行)を控えます】
05--(出力例)--
06+----------------------------------+----------+---------+
07|                id                |   name   | enabled |
08+----------------------------------+----------+---------+
09| 010b1aeb817949f8bd737cbacea5ecfa |  admin   |   True  |
10| 060d49f1360b4a5b977d5e801cf85c41 | services |   True  |
11+----------------------------------+----------+---------+
12--(ここまで)--
13 
14【MidoNet Provider RouterへのTenant ID割り当て】@ControllerのMidoNet CLI
15# midonet-cli
16 
17【Tenant解除】
18midonet> cleart
19 
20【MidoNet Provider Routerのルータ名(以下の出力例でのrouter0)を控えます】
21midonet> router list
22(出力例)
23router router0 name MidoNet Provider Router state up
24 
25【Tenant割り当て】
26midonet> sett <上記で控えたadmin tenantのID>
27(投入例)
28midonet> sett 010b1aeb817949f8bd737cbacea5ecfa

続いて、MidoNet Provider Routerへポートを追加します。

01【MidoNet Provider Routerへのポート追加】@ControllerのMidoNet CLI
02midonet> router <上記で控えたルータ名> add port address <IP Address> net <Segment>
03--(投入例)--
04midonet> router router0 add port address 172.16.255.1 net 172.16.255.0/30
05midonet> router router0 add port address 172.16.255.5 net 172.16.255.4/30
06--(ここまで)--
07 
08【MidoNet Provider Routerのポート確認】@ControllerのMidoNet CLI
09midonet> router router0 port list
10--(出力例)--
11port port2 device router0 state up plugged(略)address 10.10.0.1 net 10.10.0.0/24 peer bridge0:port0
12port port0 device router0 state up plugged(略)address 172.16.255.1 net 172.16.255.0/30
13port port1 device router0 state up plugged(略)address 172.16.255.5 net 172.16.255.4/30
14--(ここまで)--
15 
16【作成したポートへBGP設定投入・確認】@ControllerのMidoNet CLI
17midonet> router router0 port <port名> add bgp local-AS <local AS> peer-AS <peer AS> peer <対向IP Address>
18--(投入例)--
19router router0 port port0 add bgp local-AS 64512 peer-AS 64513 peer 172.16.255.2
20router router0 port port1 add bgp local-AS 64512 peer-AS 64513 peer 172.16.255.6
21--(ここまで)--
22 
23【BGP名確認】@ControllerのMidoNet CLI
24【出力例の「bgp」の次がbgp0となっていることを確認】
25midonet> router router0 port port0 list bgp
26(出力例)
27bgp bgp0 local-AS 64512 peer-AS 64513 peer 172.16.255.2
28midonet> router router0 port port1 list bgp
29(出力例)
30bgp bgp0 local-AS 64512 peer-AS 64513 peer 172.16.255.6
31 
32【External Network経路情報のBGPピアへの通知設定・確認】@ControllerのMidoNet CLI
33midonet> router router0 port <port名> bgp <bgp名> add route net <External Network Segment>
34midonet> router router0 port <port名> bgp <bgp名> list route
35--(投入例)--
36router router0 port port0 bgp bgp0 add route net 10.10.0.0/24
37router router0 port port1 bgp bgp0 add route net 10.10.0.0/24
38--(ここまで)--
39 
40【設定確認】@ControllerのMidoNet CLI
41router router0 port port0 bgp bgp0 list route
42router router0 port port1 bgp bgp0 list route

この時点のNetwork構成は、図2のようなイメージになります。MidoNet Provider Routerに、インタフェースとBGP設定は入っていますが、GWにはひもづいていません。

図2:上流Network構成の途中経過1

図2:上流Network構成の途中経過1

作成したMidoNet Provider Router上のポートを、GWへひもづけます。

01【GW 1、2のホスト名確認】@ControllerのMidoNet CLI
02midonet> host list
03--(出力例)--
04host host3 name gw2.midonet.example.com alive true addresses(略)
05host host4 name gw1.midonet.example.com alive true addresses(略)
06---(ここまで)---
07 
08【GW 1、2のインタフェース確認】@ControllerのMidoNet CLI
09midonet> host <host名> list interface
10--(GW 1用の投入・出力例。GW 2用も確認ください)--
11【上流接続用インタフェース(eth2)にIP Addressが割り当たっていないことを確認
12midonet> host host4 list interface
13iface midonet host_id host4 status 2 addresses [] mac ee:49:c9:db:6c:bd mtu 1500 type Virtual endpoint UNKNOWN
14iface lo host_id host4 status 3 addresses [u'127.0.0.1', u'0:0:0:0:0:0:0:1'] mac 00:00:00:00:00:00 mtu 65536 type Virtual endpoint LOCALHOST
15iface eth1 host_id host4 status 3 addresses [u'192.168.20.107', u'ffff:ffff:fe80:0:ffff:ffff:fe3e:39ff'] mac 00:0c:29:32:11:3b mtu 1500 type Virtual endpoint DATAPATH
16iface eth2 host_id host4 status 3 addresses [u'ffff:ffff:fe80:0:ffff:ffff:fe3e:39ff'] mac 00:0c:29:32:11:45 mtu 1500 type Virtual endpoint DATAPATH
17iface eth0 host_id host4 status 3 addresses [u'192.168.10.107', u'ffff:ffff:fe80:0:ffff:ffff:fe3e:39ff'] mac 00:0c:29:32:11:31 mtu 1500 type Virtual endpoint DATAPATH
18--(ここまで)--
19 
20【MidoNet Provider Router PortをGW 1へひもづけ】@ControllerのMidoNet CLI
21【構成図及びここまでの出力結果を確認しながら、注意深く設定を投入してください。特に以下の強調部分のホスト名、ポート名に注意してください】
22midonet> host <GW 1のhost名> add binfing port router0:<GW 1にひもづけるMidoNet Provider Routerのport名> interface <interface名>
23(投入例)
24midonet> host host4 add binding port router0:port0 interface eth2
25 
26【MidoNet Provider Router PortをGW 2へひもづけ】@ControllerのMidoNet CLI
27midonet> host <GW 2のhost名> add binfing port router0:<GW 2にひもづけるMidoNet Provider Routerのport名> interface <interface名>
28(投入例)
29midonet> host host3 add binding port router0:port1 interface eth2

Port Groupを作成します。

1【Port Groupの作成、ポート追加、確認】@ControllerのMidoNet CLI
2midonet> port-group create name uplink-spg stateful true
3midonet> port-group pgroup0 add member port router0:port0
4midonet> port-group pgroup0 add member port router0:port1
5midonet> port-group pgroup0 list member

(6)サーバシャットダウン・起動@全ノード

設定後、全ノードをシャットダウンし、その後起動します。起動後、Midolmanのステータスを確認してください。

1【サーバシャットダウン・起動】@全ノード
2【全サーバを落としてから、全サーバを起動してください】
3# shutdown -h now
4 
5【Midolmanサービスの確認】@Controller、Compute 1、2、GW 1、2
6# service midolman status

ここまでで、MidoNet環境の構築が完了しました。この時点でのNetwork構成は図 3のようなイメージです。

図 3:上流Network構成の途中経過2

図 3:上流Network構成の途中経過2

株式会社日立ソリューションズ

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

連載バックナンバー

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

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

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

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