前回は、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 |
04 | 【neutron.confの修正】@Controller |
05 | # vi /etc/neutron/neutron.conf |
06 | 【core_pluginの変更、service_pluginsのコメントアウト】 |
08 | core_plugin = neutron.plugins.midonet.plugin.MidonetPluginV2 |
12 | 【midonet.iniの作成】@Controller |
14 | # mkdir /etc/neutron/plugins/midonet |
15 | # vi /etc/neutron/plugins/midonet/midonet.ini |
22 | # MidoNet administrative user in Keystone |
25 | # MidoNet administrative user's tenant |
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 |
36 | 【リスト内の強調部分を修正。use_namespaces=Trueとなっていることを確認する】 |
38 | interface_driver = neutron.agent.linux.interface.MidonetInterfaceDriver |
39 | dhcp_driver = midonet.neutron.agent.midonet_driver.DhcpNoOpDriver |
41 | enable_isolated_metadata = True |
47 | # MidoNet administrative user in Keystone |
50 | # MidoNet administrative user's tenant |
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 |
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 |
08 | 【下記コメントアウトをはずすとともに、強調部分を追記する。1つ上の行("/dev/vfio/vfio")の「,」も忘れずに】 |
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", |
18 | 【libvirtの再起動】@Compute 1、2 |
19 | # systemctl restart libvirtd |
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構成完成図
(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 |
04 | 【admin tenantのID(出力例の強調されている行)を控えます】 |
06 | +----------------------------------+----------+---------+ |
07 | | id | name | enabled | |
08 | +----------------------------------+----------+---------+ |
09 | | 010b1aeb817949f8bd737cbacea5ecfa | admin | True | |
10 | | 060d49f1360b4a5b977d5e801cf85c41 | services | True | |
11 | +----------------------------------+----------+---------+ |
14 | 【MidoNet Provider RouterへのTenant ID割り当て】@ControllerのMidoNet CLI |
20 | 【MidoNet Provider Routerのルータ名(以下の出力例でのrouter0)を控えます】 |
23 | router router0 name MidoNet Provider Router state up |
26 | midonet> sett <上記で控えたadmin tenantのID> |
28 | midonet> sett 010b1aeb817949f8bd737cbacea5ecfa |
続いて、MidoNet Provider Routerへポートを追加します。
01 | 【MidoNet Provider Routerへのポート追加】@ControllerのMidoNet CLI |
02 | midonet> router <上記で控えたルータ名> add port address <IP Address> net <Segment> |
04 | midonet> router router0 add port address 172.16.255.1 net 172.16.255.0/30 |
05 | midonet> router router0 add port address 172.16.255.5 net 172.16.255.4/30 |
08 | 【MidoNet Provider Routerのポート確認】@ControllerのMidoNet CLI |
09 | midonet> router router0 port list |
11 | port port2 device router0 state up plugged(略)address 10.10.0.1 net 10.10.0.0/24 peer bridge0:port0 |
12 | port port0 device router0 state up plugged(略)address 172.16.255.1 net 172.16.255.0/30 |
13 | port port1 device router0 state up plugged(略)address 172.16.255.5 net 172.16.255.4/30 |
16 | 【作成したポートへBGP設定投入・確認】@ControllerのMidoNet CLI |
17 | midonet> router router0 port <port名> add bgp local-AS <local AS> peer-AS <peer AS> peer <対向IP Address> |
19 | router router0 port port0 add bgp local-AS 64512 peer-AS 64513 peer 172.16.255.2 |
20 | router router0 port port1 add bgp local-AS 64512 peer-AS 64513 peer 172.16.255.6 |
23 | 【BGP名確認】@ControllerのMidoNet CLI |
24 | 【出力例の「bgp」の次がbgp0となっていることを確認】 |
25 | midonet> router router0 port port0 list bgp |
27 | bgp bgp0 local-AS 64512 peer-AS 64513 peer 172.16.255.2 |
28 | midonet> router router0 port port1 list bgp |
30 | bgp bgp0 local-AS 64512 peer-AS 64513 peer 172.16.255.6 |
32 | 【External Network経路情報のBGPピアへの通知設定・確認】@ControllerのMidoNet CLI |
33 | midonet> router router0 port <port名> bgp <bgp名> add route net <External Network Segment> |
34 | midonet> router router0 port <port名> bgp <bgp名> list route |
36 | router router0 port port0 bgp bgp0 add route net 10.10.0.0/24 |
37 | router router0 port port1 bgp bgp0 add route net 10.10.0.0/24 |
40 | 【設定確認】@ControllerのMidoNet CLI |
41 | router router0 port port0 bgp bgp0 list route |
42 | router router0 port port1 bgp bgp0 list route |
この時点のNetwork構成は、図2のようなイメージになります。MidoNet Provider Routerに、インタフェースとBGP設定は入っていますが、GWにはひもづいていません。
図2:上流Network構成の途中経過1
作成したMidoNet Provider Router上のポートを、GWへひもづけます。
01 | 【GW 1、2のホスト名確認】@ControllerのMidoNet CLI |
04 | host host3 name gw2.midonet.example.com alive true addresses(略) |
05 | host host4 name gw1.midonet.example.com alive true addresses(略) |
08 | 【GW 1、2のインタフェース確認】@ControllerのMidoNet CLI |
09 | midonet> host <host名> list interface |
10 | --(GW 1用の投入・出力例。GW 2用も確認ください)-- |
11 | 【上流接続用インタフェース(eth2)にIP Addressが割り当たっていないことを確認 |
12 | midonet> host host4 list interface |
13 | iface midonet host_id host4 status 2 addresses [] mac ee:49:c9:db:6c:bd mtu 1500 type Virtual endpoint UNKNOWN |
14 | iface 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 |
15 | iface 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 |
16 | iface 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 |
17 | iface 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 |
20 | 【MidoNet Provider Router PortをGW 1へひもづけ】@ControllerのMidoNet CLI |
21 | 【構成図及びここまでの出力結果を確認しながら、注意深く設定を投入してください。特に以下の強調部分のホスト名、ポート名に注意してください】 |
22 | midonet> host <GW 1のhost名> add binfing port router0:<GW 1にひもづけるMidoNet Provider Routerのport名> interface <interface名> |
24 | midonet> host host4 add binding port router0:port0 interface eth2 |
26 | 【MidoNet Provider Router PortをGW 2へひもづけ】@ControllerのMidoNet CLI |
27 | midonet> host <GW 2のhost名> add binfing port router0:<GW 2にひもづけるMidoNet Provider Routerのport名> interface <interface名> |
29 | midonet> host host3 add binding port router0:port1 interface eth2 |
Port Groupを作成します。
1 | 【Port Groupの作成、ポート追加、確認】@ControllerのMidoNet CLI |
2 | midonet> port-group create name uplink-spg stateful true |
3 | midonet> port-group pgroup0 add member port router0:port0 |
4 | midonet> port-group pgroup0 add member port router0:port1 |
5 | midonet> port-group pgroup0 list member |
(6)サーバシャットダウン・起動@全ノード
設定後、全ノードをシャットダウンし、その後起動します。起動後、Midolmanのステータスを確認してください。
2 | 【全サーバを落としてから、全サーバを起動してください】 |
5 | 【Midolmanサービスの確認】@Controller、Compute 1、2、GW 1、2 |
6 | # service midolman status |
ここまでで、MidoNet環境の構築が完了しました。この時点でのNetwork構成は図 3のようなイメージです。
図 3:上流Network構成の途中経過2