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

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

OpenStackのインストール

続いて、Packstackを用いてRDO版OpenStackをインストールします。

(7)Packstackのインストール、answer file生成@Controller

(7)から(9)の手順は、Controllerでのみ実施します。

Packstackをインストールし、Packstackのインストール用設定ファイルであるanswer fileのベースを生成します。

【Packstackインストール】@Controller
# yum install openstack-packstack

【answer file生成】@Controller
# packstack --gen-answer=answer20150819

(8)answer fileの修正@Controller

(7)で生成したanswer fileは、all in one構成用のため、今回の構成に合わせて修正します。基本的にはCONFIG_COMPUTE_HOSTSの変更だけですが、今回は構築を容易にするため、一部も無効化・共通化しました。なお、answer fileのデフォルト値は変更される可能性があるので、以下のサンプルをダウンロードしてください。

answer fileのサンプル

【デフォルトパスワード、~_PW、~_TOKEN、~_KEY、~_SECRET の変更】
# 必要に応じて変更ください。後述のMidoNetインストール時に使います。
CONFIG_DEFAULT_PASSWORD=admina
CONFIG_KEYSTONE_ADMIN_TOKEN=admina

【不必要なサービスの無効化。本検証ではSWIFT、CEILOMETERとデモを無効化】
CONFIG_SWIFT_INSTALL=n
CONFIG_CEILOMETER_INSTALL=n
CONFIG_PROVISION_DEMO=n

【HOSTSの変更】
【Compute 1、2のManagement NetworkのIP Addressへと書き換え】
CONFIG_COMPUTE_HOSTS=192.168.10.102,192.168.10.103

(9)Packstack実行@Controller

(8)で修正したanswer fileを用いて、Packstackを実行します。環境によりますが、数十分~1時間程度かかります。

【Packstack実行】@Controller
# packstack --answer-file= answer20150819

(10)nova.confの修正@Compute 1、2

日本語キーボードを使っている場合、keymap設定を変更します。また、virt_typeがkvmとなっていることを確認し、異なっていた場合はkvmに変更します。

【nova.conf修正】@Compute1、2
# vi /etc/nova/nova.conf
----
vnc_keymap=ja
virt_type=kvm
----

(11)サーバ再起動@Controller、Compute 1、2

Controller、Compute 1、2を再起動します。

【再起動】@Controller、Compute 1、2
# reboot

MidoNetのインストール

MidoNetのコンポーネントをインストールします。

(12)Neutron関連設定の変更@Controller、Compute 1、2

MidoNetでは不要なサービスを削除・停止します。

【Neutron OVSの削除】@Controller、Compute 1、2
# yum remove openstack-neutron-openvswitch

【Neutron l3 agentの無効化】@Controller、Compute 1、2
# systemctl stop neutron-l3-agent
# systemctl disable neutron-l3-agent

【iptables無効化(firewalldは停止しているはずだが念のため)】@Controller、Compute 1、2
# systemctl stop firewalld
# systemctl disable firewalld
# systemctl stop iptables
# systemctl disable iptables

(13)zookeeperインストール@NSDB 1、2、3

NSDBを構築していきます。まずはzookeeperをインストールします。

【zookeeper及び関連パッケージのインストール】@NSDB 1、2、3
# yum install java-1.7.0-openjdk
# yum install zookeeper zkdump nmap-ncat

【javaパスの設定】@NSDB 1、2、3
# mkdir -p /usr/java/default/bin/
# ln -s /usr/lib/jvm/jre-1.7.0-openjdk/bin/java /usr/java/default/bin/java

【zookeeper用ディレクトリの作成】@NSDB 1、2、3
# mkdir /var/lib/zookeeper/data
# chown zookeeper:zookeeper /var/lib/zookeeper/data

【zookeeper設定ファイルへ、NSDBのアドレスを追加】@NSDB 1、2、3
# vi /etc/zookeeper/zoo.cfg
----
server.1=192.168.10.104:2888:3888
server.2=192.168.10.105:2888:3888
server.3=192.168.10.106:2888:3888
----

【NSDB1へのID設定】@NSDB 1
# echo 1 > /var/lib/zookeeper/data/myid

【NSDB2へのID設定】@NSDB 2
# echo 2 > /var/lib/zookeeper/data/myid

【NSDB3へのID設定】@NSDB 3
# echo 3 > /var/lib/zookeeper/data/myid

(14)zookeeper起動及び確認@NSDB 1、2、3

zookeeperを起動し、正常に動作していることを確認します。

【zookeeperの起動及び確認】@NSDB 1、2、3
# systemctl start zookeeper.service
# chkconfig zookeeper on

【imokの応答があることを確認】
# echo ruok | nc 127.0.0.1 2181

【エラーなく応答があることを確認】
# echo stat | nc 127.0.0.1 2181

(15)Cassandraインストール@NSDB 1、2、3

NSDB構築の続きです。Cassandraをインストールします。

【Cassandraインストール】@NSDB 1、2、3
# yum install dsc20

【NSDB1での設定パラメータ変更】@NSDB1
# vi /etc/cassandra/conf/cassandra.yaml
----
cluster_name: 'midonet'
listen_address: 192.168.10.104
- seeds: "192.168.10.104,192.168.10.105,192.168.10.106"
rpc_address: 192.168.10.104
----

【NSDB2での設定パラメータ変更】@NSDB 2
# vi /etc/cassandra/conf/cassandra.yaml
----
cluster_name: 'midonet'
listen_address: 192.168.10.105
- seeds: "192.168.10.104,192.168.10.105,192.168.10.106"
rpc_address: 192.168.10.105
----

【NSDB3での設定パラメータ変更】@NSDB 3
# vi /etc/cassandra/conf/cassandra.yaml
----
cluster_name: 'midonet'
listen_address: 192.168.10.106
- seeds: "192.168.10.104,192.168.10.105,192.168.10.106"
rpc_address: 192.168.10.106
----

【既存設定の削除】@NSDB 1、2、3
# rm -rf /var/lib/cassandra/data/system/

(16)Cassandra起動及び確認@NSDB 1、2、3

Cassandraを起動し、正常に動作していることを確認します。

【Cassandraサービスの起動】@NSDB 1、2、3
# systemctl restart cassandra.service
# chkconfig cassandra on

【NSDB1でのCassandraサービス起動確認】@NSDB 1
【Cassandra CLIで接続できることを確認。exit、ctrl+zで抜ける】
# cassandra-cli -h 192.168.10.104 -p 9160

【NSDB2でのCassandraサービス起動確認】@NSDB 2
# cassandra-cli -h 192.168.10.105 -p 9160

【NSDB3でのCassandraサービス起動確認】@NSDB 3
# cassandra-cli -h 192.168.10.106 -p 9160

【Cassandraサービスの全体の動作確認】@NSDB 1、2、3
#nodetool ring

【Addressが3つ表示されることを確認】
# nodetool status

(17)midolmanインストール@Controller、Compute 1、2、GW 1、2

MidoNetのAgentであるmidolmanをインストールし、NSDBとの接続設定を入れます。

【Midolmanインストール】@Controller、Compute 1、2、GW 1、2
# yum install midolman

【NSDBのIP Addressと設定パラメータの変更】@Controller、Compute 1、2、GW 1、2
# vi /etc/midolman/midolman.conf
----
[zookeeper]
zookeeper_hosts =192.168.10.104:2181,192.168.10.105:2181,192.168.10.106:2181
----

【mn-confから設定投入その1】@Controller
--(ここから)--
# cat << EOF | mn-conf set -t default
zookeeper {
zookeeper_hosts = "192.168.10.104:2181,192.168.10.105:2181,192.168.10.106:2181"
}
cassandra {
servers = "192.168.10.104,192.168.10.105,192.168.10.106"
}
EOF
--(ここまで)--

【mn-confから設定投入その2】@Controller
# echo "cassandra.replication_factor : 3" | mn-conf set -t default

【投入された設定の確認】@Controller及びCompute1、2、GW1、2のいずれか
【設定投入その1、2のパラメータが存在することを確認】
# mn-conf dump

【Midolmanの起動及び確認】@Controller、Compute 1、2、GW 1、2
# systemctl restart midolman.service
# ps -ef | grep mido
# service midolman status

(18)MidoNet APIのインストール@Controller

MidoNet APIをインストールします。

【MidoNet APIインストール】@Controller
# yum install midonet-api

【web.xml修正】@Controller
【リスト内の強調部分を修正】
# vi /usr/share/midonet-api/WEB-INF/web.xml
----
【ControllerのIP Address、ポートを8081へ】
<param-name>rest_api-base_uri</param-name>
<param-value>http://192.168.10.101:8081/midonet-api</param-value>

【ControllerのIP Addressへ】
<param-name>keystone-service_host</param-name>
<param-value>192.168.10.101</param-value>

【answer fileのCONFIG_KEYSTONE_ADMIN_TOKENのパラメータにあわせる】
<param-name>keystone-admin_token</param-name>
<param-value>admina</param-value>

【上記に合わせる】
<param-name>mock_auth-admin_token</param-name>
<param-value>admina</param-value>

【上記に合わせる】
<param-name>mock_auth-tenant_admin_token</param-name>
<param-value>admina</param-value>

【上記に合わせる】
<param-name>mock_auth-tenant_user_token</param-name>
<param-value>admina</param-value>

【NSDB1、2、3のIP Address:2181へ】
<param-name>zookeeper-zookeeper_hosts</param-name>
<param-value>192.168.10.104:2181,192.168.10.105:2181,192.168.10.106:2181</paramvalue>
</context-param>

(19)Tomcatのインストール@Controller

MidoNet APIを動作させるため、Tomcatをインストール・設定します。

【Tomcatのインストール】@Controller
# yum install tomcat

【midonet-api.xmlの作成】@Controller
【下記内容で新規作成】
# vi /etc/tomcat/Catalina/localhost/midonet-api.xml
----
<Context
    path="/midonet-api"
    docBase="/usr/share/midonet-api"
    antiResourceLocking="false"
    privileged="true"
/>
----

【tomcat.confへの追記】@Controller
【下記内容を追記】
vi /etc/tomcat/tomcat.conf
----
CONNECTOR_PORT="8081"
----

【server.xmlへの修正・追記】@Controller
【下記の強調部分を修正(ポートを8080から8081へ)・追記】
# vi /etc/tomcat/server.xml
----
   <Connector port="8081" protocol="HTTP/1.1"
              connectionTimeout="20000"
              URIEncoding="UTF-8"
              redirectPort="8443"
              maxHttpHeaderSize="65536"/>
----

【tomcatの起動、有効化】@Controller
# systemctl restart tomcat.service
# systemctl enable tomcat.service

(20)MidoNet CLI@Controller

MidoNet CLIをインストールします。

【MidoNet CLIのインストール】@Controller
# yum install python-midonetclient

【midonetrcの作成】@Controller
【下記内容で新規作成】
# vi ~/.midonetrc
----
[cli]
api_url = http://192.168.10.101:8081/midonet-api
username = admin
password = admina
project_id = admin
----

(21)Tunnel Zone作成、登録@Controller

連載の1回目で述べたように、MidoNetの仮想ネットワークは、Tunnel Zoneと呼ばれる各ノードをフルメッシュでつないだトンネル上で構成されます。そのTunnel Zoneの作成と、Tunnel Zoneへの各ノードの登録をします。ランダム要素があるため、注意して実施してください。

【MidoNet CLIの実行】@Controller
# midonet-cli

【Tunnel Zoneの作成(midonet-cli内で実行)】@Controller
(出力例)
midonet> tunnel-zone create name vxlan type vxlan
tzone0

【Tunnel Zoneの確認(midonet-cli内で実行)】@Controller
(出力例)
midonet> list tunnel-zone
tzone tzone0 name vxlan type vxlan

【host情報の確認(midonet-cli内で実行)】@Controller
【(17)でMidolmanをインストールしたサーバが表示されていることを確認。hostXとサーバのひもづけは、毎回異なるので要注意】
(出力例。IPv6の記述は省略)
midonet> list host
----
host host0 name cmpt2.midonet.example.com alive true addresses /192.168.10.103,(略),(略),/192.168.20.103,/127.0.0.1,(略)
host host1 name ctrl.midonet.example.com alive true addresses /127.0.0.1,(略),/192.168.20.101,(略),/192.168.10.101,(略)
host host2 name cmpt1.midonet.example.com alive true addresses(略),/192.168.10.102,(略),/192.168.20.102,/127.0.0.1,(略)
host host3 name gw2.midonet.example.com alive true addresses /192.168.20.108,(略),/127.0.0.1,(略),(略),/192.168.10.108,(略)
host host4 name gw1.midonet.example.com alive true addresses(略),/127.0.0.1,(略),/192.168.20.107,(略),/192.168.10.107,(略)
----

【Tunnel Zoneへのhostの登録(midonet-cli内で実行)】@Controller
【サーバにひもづいたhostX及びそのhostXでTunnel Zoneに追加するインタフェースを登録する。今回はGuest(Tunnel)Network上でTunnel Zoneを構成するため、サーバの192.168.20.0/24セグメントのIP Addressを追加する。全host分繰り返し実施】

midonet> tunnel-zone tzone0 add member host <hostX>  address < ip_address_hostX>

(投入例1:上記でControllerを登録する場合)
midonet> tunnel-zone tzone0 add member host host1 address 192.168.20.101
(投入例2:上記でCompute1を登録する場合)
midonet> tunnel-zone tzone0 add member host host2 address 192.168.20.102
(投入例3:上記でGW1を登録する場合)
midonet> tunnel-zone tzone0 add member host host4 address 192.168.20.107

【Tunnel Zoneへのhost登録確認(midonet-cli内で実行)】@Controller
【list hostで表示されたサーバが、正しいIP Addressで登録されていることを確認】
midonet> list tunnel-zone tzone0 member

【問題がないことを確認したら、midonet-cliを抜ける】
midonet> exit

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

  • Linuxは、Linus Torvalds氏の日本およびその他の国における登録商標または商標です。
  • MidoNetは、Midokura SARLの登録商標です。
  • OpenStack®の文字表記とOpenStackのロゴは、米国とその他の国におけるOpenStack Foundationの登録商標/サービスマークまたは商標/サービスマークのいずれかであり,OpenStack Foundationの許諾を得て使用しています。日立製作所は,OpenStack FoundationやOpenStackコミュニティの関連企業ではなく、また支援や出資を受けていません。
  • OSCA™(Open Standard Cloud Association)は、デル株式会社の登録商標です。
  • Red Hat、Red Hat Enterprise Linuxは、米国およびその他の国におけるRed Hat, Inc. の登録商標です。
  • VMware,VMware vSphere ESXiは,米国およびその他の地域における VMware, Inc. の登録商標または商標です。
  • その他、記載の商標やロゴは、各社の商標または登録商標です。

【参考文献】

MidoNet Documentation(アクセス:2015/08)

http://docs.midonet.org/

MidoNet integration - RDO(アクセス:2015/08)

https://www.rdoproject.org/MidoNet_integration

OpenStackNetworking Plug-in 比較 -OVS と MidoNet-(アクセス:2015/08)

http://www.osca-jp.com/solution.html

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

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

連載バックナンバー

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

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

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

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