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を作成します。
【MidoNet API Serviceの作成】@Controller # source /root/keystonerc_admin # openstack service create --name midonet --description "MidoNet API Service" midonet # openstack user create --password admina midonet # openstack role add --project services --user midonet admin
(2)Neutron連携@Controller
NeutronからMidoNet Pluginを使えるように設定します。
【Neutron MidoNet Pluginのインストール】@Controller # yum install python-neutron-plugin-midonet 【neutron.confの修正】@Controller # vi /etc/neutron/neutron.conf 【core_pluginの変更、service_pluginsのコメントアウト】 ---- core_plugin = neutron.plugins.midonet.plugin.MidonetPluginV2 # service_plugins =~ ---- 【midonet.iniの作成】@Controller 【下記内容で新規作成する】 # mkdir /etc/neutron/plugins/midonet # vi /etc/neutron/plugins/midonet/midonet.ini ---- [DATABASE] sql_connection = mysql://neutron:admina@192.168.10.101/neutron [MIDONET] # MidoNet API URL midonet_uri = http://192.168.10.101:8081/midonet-api # MidoNet administrative user in Keystone username = midonet password = admina # MidoNet administrative user's tenant project_id = services ---- 【midonet.iniをplugin.iniとする】@Controller # rm -f /etc/neutron/plugin.ini # ln -s /etc/neutron/plugins/midonet/midonet.ini /etc/neutron/plugin.ini 【dhcp_agent.iniの変更、追記】@Controller # vi /etc/neutron/dhcp_agent.ini --- 【リスト内の強調部分を修正。use_namespaces=Trueとなっていることを確認する】 [DEFAULT] interface_driver = neutron.agent.linux.interface.MidonetInterfaceDriver dhcp_driver = midonet.neutron.agent.midonet_driver.DhcpNoOpDriver use_namespaces = True enable_isolated_metadata = True 【下記を追記する】 [MIDONET] # MidoNet API URL midonet_uri = http://192.168.10.101:8081/midonet-api # MidoNet administrative user in Keystone username = midonet password = admina # MidoNet administrative user's tenant project_id = services 【Neutron databaseの再構築】@Controller # systemctl stop neutron-server # mysql -e 'drop database neutron' # mysql -e 'create database neutron' # 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 # systemctl restart openstack-nova-api openstack-nova-scheduler openstack-nova-conductor # systemctl start neutron-server 【Neutron Serviceの再起動】@Controller # systemctl restart neutron-dhcp-agent # systemctl restart neutron-metadata-agent
(3)Nova連携@Compute 1、2
libvirt設定を変更し、nova-rootwrapをインストールします。
【qemu.confの編集】@Compute 1、2 # vi /etc/libvirt/qemu.conf ------ 【下記のコメントアウトをはずす】 user = "root" group = "root" 【下記コメントアウトをはずすとともに、強調部分を追記する。1つ上の行("/dev/vfio/vfio")の「,」も忘れずに】 cgroup_device_acl = [ "/dev/null", "/dev/full", "/dev/zero", "/dev/random", "/dev/urandom", "/dev/ptmx", "/dev/kvm", "/dev/kqemu", "/dev/rtc","/dev/hpet", "/dev/vfio/vfio", "/dev/net/tun" ] ---- 【libvirtの再起動】@Compute 1、2 # systemctl restart libvirtd 【nova-rootwrapのインストール】@Compute 1、2 # yum install openstack-nova-network # systemctl disable openstack-nova-network # systemctl restart openstack-nova-compute
Network設定
External Networkの作成と、MidoNet Provider Routerの設定をします。図1の構成となるよう設定します。
(4)External Network作成@Controller
External Networkを作成します。Floating IPは、このExternal Networkから払い出されます。
【External Network作成】@Controller # source keystonerc_admin # neutron net-create ext-net --shared --router:external # 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の設定をします。ここからは手順が細かいので、注意深く設定してください。まず、下準備をします。
【Tenant ID確認】@Controller # source keystonerc_admin # keystone tenant-list 【admin tenantのID(出力例の強調されている行)を控えます】 --(出力例)-- +----------------------------------+----------+---------+ | id | name | enabled | +----------------------------------+----------+---------+ | 010b1aeb817949f8bd737cbacea5ecfa | admin | True | | 060d49f1360b4a5b977d5e801cf85c41 | services | True | +----------------------------------+----------+---------+ --(ここまで)-- 【MidoNet Provider RouterへのTenant ID割り当て】@ControllerのMidoNet CLI # midonet-cli 【Tenant解除】 midonet> cleart 【MidoNet Provider Routerのルータ名(以下の出力例でのrouter0)を控えます】 midonet> router list (出力例) router router0 name MidoNet Provider Router state up 【Tenant割り当て】 midonet> sett <上記で控えたadmin tenantのID> (投入例) midonet> sett 010b1aeb817949f8bd737cbacea5ecfa
続いて、MidoNet Provider Routerへポートを追加します。
【MidoNet Provider Routerへのポート追加】@ControllerのMidoNet CLI midonet> router <上記で控えたルータ名> add port address <IP Address> net <Segment> --(投入例)-- midonet> router router0 add port address 172.16.255.1 net 172.16.255.0/30 midonet> router router0 add port address 172.16.255.5 net 172.16.255.4/30 --(ここまで)-- 【MidoNet Provider Routerのポート確認】@ControllerのMidoNet CLI midonet> router router0 port list --(出力例)-- port port2 device router0 state up plugged(略)address 10.10.0.1 net 10.10.0.0/24 peer bridge0:port0 port port0 device router0 state up plugged(略)address 172.16.255.1 net 172.16.255.0/30 port port1 device router0 state up plugged(略)address 172.16.255.5 net 172.16.255.4/30 --(ここまで)-- 【作成したポートへBGP設定投入・確認】@ControllerのMidoNet CLI midonet> router router0 port <port名> add bgp local-AS <local AS> peer-AS <peer AS> peer <対向IP Address> --(投入例)-- router router0 port port0 add bgp local-AS 64512 peer-AS 64513 peer 172.16.255.2 router router0 port port1 add bgp local-AS 64512 peer-AS 64513 peer 172.16.255.6 --(ここまで)-- 【BGP名確認】@ControllerのMidoNet CLI 【出力例の「bgp」の次がbgp0となっていることを確認】 midonet> router router0 port port0 list bgp (出力例) bgp bgp0 local-AS 64512 peer-AS 64513 peer 172.16.255.2 midonet> router router0 port port1 list bgp (出力例) bgp bgp0 local-AS 64512 peer-AS 64513 peer 172.16.255.6 【External Network経路情報のBGPピアへの通知設定・確認】@ControllerのMidoNet CLI midonet> router router0 port <port名> bgp <bgp名> add route net <External Network Segment> midonet> router router0 port <port名> bgp <bgp名> list route --(投入例)-- router router0 port port0 bgp bgp0 add route net 10.10.0.0/24 router router0 port port1 bgp bgp0 add route net 10.10.0.0/24 --(ここまで)-- 【設定確認】@ControllerのMidoNet CLI router router0 port port0 bgp bgp0 list route router router0 port port1 bgp bgp0 list route
この時点のNetwork構成は、図2のようなイメージになります。MidoNet Provider Routerに、インタフェースとBGP設定は入っていますが、GWにはひもづいていません。
作成したMidoNet Provider Router上のポートを、GWへひもづけます。
【GW 1、2のホスト名確認】@ControllerのMidoNet CLI midonet> host list --(出力例)-- host host3 name gw2.midonet.example.com alive true addresses(略) host host4 name gw1.midonet.example.com alive true addresses(略) ---(ここまで)--- 【GW 1、2のインタフェース確認】@ControllerのMidoNet CLI midonet> host <host名> list interface --(GW 1用の投入・出力例。GW 2用も確認ください)-- 【上流接続用インタフェース(eth2)にIP Addressが割り当たっていないことを確認 midonet> host host4 list interface iface midonet host_id host4 status 2 addresses [] mac ee:49:c9:db:6c:bd mtu 1500 type Virtual endpoint UNKNOWN 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 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 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 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 --(ここまで)-- 【MidoNet Provider Router PortをGW 1へひもづけ】@ControllerのMidoNet CLI 【構成図及びここまでの出力結果を確認しながら、注意深く設定を投入してください。特に以下の強調部分のホスト名、ポート名に注意してください】 midonet> host <GW 1のhost名> add binfing port router0:<GW 1にひもづけるMidoNet Provider Routerのport名> interface <interface名> (投入例) midonet> host host4 add binding port router0:port0 interface eth2 【MidoNet Provider Router PortをGW 2へひもづけ】@ControllerのMidoNet CLI midonet> host <GW 2のhost名> add binfing port router0:<GW 2にひもづけるMidoNet Provider Routerのport名> interface <interface名> (投入例) midonet> host host3 add binding port router0:port1 interface eth2
Port Groupを作成します。
【Port Groupの作成、ポート追加、確認】@ControllerのMidoNet CLI midonet> port-group create name uplink-spg stateful true midonet> port-group pgroup0 add member port router0:port0 midonet> port-group pgroup0 add member port router0:port1 midonet> port-group pgroup0 list member
(6)サーバシャットダウン・起動@全ノード
設定後、全ノードをシャットダウンし、その後起動します。起動後、Midolmanのステータスを確認してください。
【サーバシャットダウン・起動】@全ノード 【全サーバを落としてから、全サーバを起動してください】 # shutdown -h now 【Midolmanサービスの確認】@Controller、Compute 1、2、GW 1、2 # service midolman status
ここまでで、MidoNet環境の構築が完了しました。この時点でのNetwork構成は図 3のようなイメージです。
連載バックナンバー
Think ITメルマガ会員登録受付中
Think ITでは、技術情報が詰まったメールマガジン「Think IT Weekly」の配信サービスを提供しています。メルマガ会員登録を済ませれば、メルマガだけでなく、さまざまな限定特典を入手できるようになります。